aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/fcoe/fcoe.h
diff options
context:
space:
mode:
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>2011-01-28 19:05:37 -0500
committerJames Bottomley <James.Bottomley@suse.de>2011-02-12 12:18:18 -0500
commit8597ae8bfe35f5e438b00ba5df852e97ebe1ac23 (patch)
tree64020cecc7ef1bb2923109ed5afea58f59d9bcbe /drivers/scsi/fcoe/fcoe.h
parent2ca32b4848a865fb088e8c00af0dc194701c373a (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.h44
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 */
81struct 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 */
125struct 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 */
141static inline struct net_device *fcoe_netdev(const struct fc_lport *lport) 102static 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_ */