ieee1394: eth1394: hard_start_xmit is called in atomic context
[linux-2.6.git] / drivers / ieee1394 / raw1394-private.h
1 #ifndef IEEE1394_RAW1394_PRIVATE_H
2 #define IEEE1394_RAW1394_PRIVATE_H
3
4 /* header for definitions that are private to the raw1394 driver
5    and not visible to user-space */
6
7 #define RAW1394_DEVICE_MAJOR      171
8 #define RAW1394_DEVICE_NAME       "raw1394"
9
10 #define RAW1394_MAX_USER_CSR_DIRS       16
11
12 struct iso_block_store {
13         atomic_t refcount;
14         size_t data_size;
15         quadlet_t data[0];
16 };
17
18 enum raw1394_iso_state { RAW1394_ISO_INACTIVE = 0,
19                          RAW1394_ISO_RECV = 1,
20                          RAW1394_ISO_XMIT = 2 };
21
22 struct file_info {
23         struct list_head list;
24
25         enum { opened, initialized, connected } state;
26         unsigned int protocol_version;
27
28         struct hpsb_host *host;
29
30         struct list_head req_pending;   /* protected by reqlists_lock */
31         struct list_head req_complete;  /* protected by reqlists_lock */
32         spinlock_t reqlists_lock;
33         wait_queue_head_t wait_complete;
34
35         struct list_head addr_list;     /* protected by host_info_lock */
36
37         u8 __user *fcp_buffer;
38
39         /* old ISO API */
40         u64 listen_channels;
41         quadlet_t __user *iso_buffer;
42         size_t iso_buffer_length;
43
44         u8 notification; /* (busreset-notification) RAW1394_NOTIFY_OFF/ON */
45
46         /* new rawiso API */
47         enum raw1394_iso_state iso_state;
48         struct hpsb_iso *iso_handle;
49
50         /* User space's CSR1212 dynamic ConfigROM directories */
51         struct csr1212_keyval *csr1212_dirs[RAW1394_MAX_USER_CSR_DIRS];
52
53         /* Legacy ConfigROM update flag */
54         u8 cfgrom_upd;
55 };
56
57 struct arm_addr {
58         struct list_head addr_list; /* file_info list */
59         u64    start, end;
60         u64    arm_tag;
61         u8     access_rights;
62         u8     notification_options;
63         u8     client_transactions;
64         u64    recvb;
65         u16    rec_length;
66         u8     *addr_space_buffer; /* accessed by read/write/lock requests */
67 };
68
69 struct pending_request {
70         struct list_head list;
71         struct file_info *file_info;
72         struct hpsb_packet *packet;
73         struct iso_block_store *ibs;
74         quadlet_t *data;
75         int free_data;
76         struct raw1394_request req;
77 };
78
79 struct host_info {
80         struct list_head list;
81         struct hpsb_host *host;
82         struct list_head file_info_list;  /* protected by host_info_lock */
83 };
84
85 #endif  /* IEEE1394_RAW1394_PRIVATE_H */