diff options
author | Bhanu Prakash Gollapudi <bprakash@broadcom.com> | 2011-01-28 19:05:37 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2011-02-12 12:18:18 -0500 |
commit | 8597ae8bfe35f5e438b00ba5df852e97ebe1ac23 (patch) | |
tree | 64020cecc7ef1bb2923109ed5afea58f59d9bcbe /drivers/scsi/fcoe/fcoe.h | |
parent | 2ca32b4848a865fb088e8c00af0dc194701c373a (diff) |
[SCSI] libfcoe: Move common code from fcoe to libfcoe module
To facilitate LLDDs to reuse the code, skb queue related functions are moved to
libfcoe, so that both fcoe and bnx2fc drivers can use them. The common structures
fcoe_port, fcoe_percpu_s are moved to libfcoe. fcoe_port will now have an
opaque pointer that points to corresponding driver's interface structure.
Also, fcoe_start_io and fcoe_fc_crc are moved to libfcoe.
As part of this change, fixed fcoe_start_io to return ENOMEM if
skb_clone fails.
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/fcoe/fcoe.h')
-rw-r--r-- | drivers/scsi/fcoe/fcoe.h | 44 |
1 files changed, 3 insertions, 41 deletions
diff --git a/drivers/scsi/fcoe/fcoe.h b/drivers/scsi/fcoe/fcoe.h index c69b2c56c2d1..d775128398e9 100644 --- a/drivers/scsi/fcoe/fcoe.h +++ b/drivers/scsi/fcoe/fcoe.h | |||
@@ -24,7 +24,7 @@ | |||
24 | #include <linux/kthread.h> | 24 | #include <linux/kthread.h> |
25 | 25 | ||
26 | #define FCOE_MAX_QUEUE_DEPTH 256 | 26 | #define FCOE_MAX_QUEUE_DEPTH 256 |
27 | #define FCOE_LOW_QUEUE_DEPTH 32 | 27 | #define FCOE_MIN_QUEUE_DEPTH 32 |
28 | 28 | ||
29 | #define FCOE_WORD_TO_BYTE 4 | 29 | #define FCOE_WORD_TO_BYTE 4 |
30 | 30 | ||
@@ -71,21 +71,6 @@ do { \ | |||
71 | netdev->name, ##args);) | 71 | netdev->name, ##args);) |
72 | 72 | ||
73 | /** | 73 | /** |
74 | * struct fcoe_percpu_s - The per-CPU context for FCoE receive threads | ||
75 | * @thread: The thread context | ||
76 | * @fcoe_rx_list: The queue of pending packets to process | ||
77 | * @page: The memory page for calculating frame trailer CRCs | ||
78 | * @crc_eof_offset: The offset into the CRC page pointing to available | ||
79 | * memory for a new trailer | ||
80 | */ | ||
81 | struct fcoe_percpu_s { | ||
82 | struct task_struct *thread; | ||
83 | struct sk_buff_head fcoe_rx_list; | ||
84 | struct page *crc_eof_page; | ||
85 | int crc_eof_offset; | ||
86 | }; | ||
87 | |||
88 | /** | ||
89 | * struct fcoe_interface - A FCoE interface | 74 | * struct fcoe_interface - A FCoE interface |
90 | * @list: Handle for a list of FCoE interfaces | 75 | * @list: Handle for a list of FCoE interfaces |
91 | * @netdev: The associated net device | 76 | * @netdev: The associated net device |
@@ -108,30 +93,6 @@ struct fcoe_interface { | |||
108 | struct kref kref; | 93 | struct kref kref; |
109 | }; | 94 | }; |
110 | 95 | ||
111 | /** | ||
112 | * struct fcoe_port - The FCoE private structure | ||
113 | * @fcoe: The associated fcoe interface | ||
114 | * @lport: The associated local port | ||
115 | * @fcoe_pending_queue: The pending Rx queue of skbs | ||
116 | * @fcoe_pending_queue_active: Indicates if the pending queue is active | ||
117 | * @timer: The queue timer | ||
118 | * @destroy_work: Handle for work context | ||
119 | * (to prevent RTNL deadlocks) | ||
120 | * @data_srt_addr: Source address for data | ||
121 | * | ||
122 | * An instance of this structure is to be allocated along with the | ||
123 | * Scsi_Host and libfc fc_lport structures. | ||
124 | */ | ||
125 | struct fcoe_port { | ||
126 | struct fcoe_interface *fcoe; | ||
127 | struct fc_lport *lport; | ||
128 | struct sk_buff_head fcoe_pending_queue; | ||
129 | u8 fcoe_pending_queue_active; | ||
130 | struct timer_list timer; | ||
131 | struct work_struct destroy_work; | ||
132 | u8 data_src_addr[ETH_ALEN]; | ||
133 | }; | ||
134 | |||
135 | #define fcoe_from_ctlr(fip) container_of(fip, struct fcoe_interface, ctlr) | 96 | #define fcoe_from_ctlr(fip) container_of(fip, struct fcoe_interface, ctlr) |
136 | 97 | ||
137 | /** | 98 | /** |
@@ -140,7 +101,8 @@ struct fcoe_port { | |||
140 | */ | 101 | */ |
141 | static inline struct net_device *fcoe_netdev(const struct fc_lport *lport) | 102 | static inline struct net_device *fcoe_netdev(const struct fc_lport *lport) |
142 | { | 103 | { |
143 | return ((struct fcoe_port *)lport_priv(lport))->fcoe->netdev; | 104 | return ((struct fcoe_interface *) |
105 | ((struct fcoe_port *)lport_priv(lport))->priv)->netdev; | ||
144 | } | 106 | } |
145 | 107 | ||
146 | #endif /* _FCOE_H_ */ | 108 | #endif /* _FCOE_H_ */ |