diff options
Diffstat (limited to 'drivers/scsi/fnic/fnic.h')
-rw-r--r-- | drivers/scsi/fnic/fnic.h | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/scsi/fnic/fnic.h b/drivers/scsi/fnic/fnic.h index 1bc267e892d2..bb208a6091e7 100644 --- a/drivers/scsi/fnic/fnic.h +++ b/drivers/scsi/fnic/fnic.h | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/netdevice.h> | 22 | #include <linux/netdevice.h> |
23 | #include <linux/workqueue.h> | 23 | #include <linux/workqueue.h> |
24 | #include <scsi/libfc.h> | 24 | #include <scsi/libfc.h> |
25 | #include <scsi/libfcoe.h> | ||
25 | #include "fnic_io.h" | 26 | #include "fnic_io.h" |
26 | #include "fnic_res.h" | 27 | #include "fnic_res.h" |
27 | #include "vnic_dev.h" | 28 | #include "vnic_dev.h" |
@@ -145,6 +146,7 @@ struct mempool; | |||
145 | /* Per-instance private data structure */ | 146 | /* Per-instance private data structure */ |
146 | struct fnic { | 147 | struct fnic { |
147 | struct fc_lport *lport; | 148 | struct fc_lport *lport; |
149 | struct fcoe_ctlr ctlr; /* FIP FCoE controller structure */ | ||
148 | struct vnic_dev_bar bar0; | 150 | struct vnic_dev_bar bar0; |
149 | 151 | ||
150 | struct msix_entry msix_entry[FNIC_MSIX_INTR_MAX]; | 152 | struct msix_entry msix_entry[FNIC_MSIX_INTR_MAX]; |
@@ -162,23 +164,16 @@ struct fnic { | |||
162 | unsigned int wq_count; | 164 | unsigned int wq_count; |
163 | unsigned int cq_count; | 165 | unsigned int cq_count; |
164 | 166 | ||
165 | u32 fcoui_mode:1; /* use fcoui address*/ | ||
166 | u32 vlan_hw_insert:1; /* let hw insert the tag */ | 167 | u32 vlan_hw_insert:1; /* let hw insert the tag */ |
167 | u32 in_remove:1; /* fnic device in removal */ | 168 | u32 in_remove:1; /* fnic device in removal */ |
168 | u32 stop_rx_link_events:1; /* stop proc. rx frames, link events */ | 169 | u32 stop_rx_link_events:1; /* stop proc. rx frames, link events */ |
169 | 170 | ||
170 | struct completion *remove_wait; /* device remove thread blocks */ | 171 | struct completion *remove_wait; /* device remove thread blocks */ |
171 | 172 | ||
172 | struct fc_frame *flogi; | ||
173 | struct fc_frame *flogi_resp; | ||
174 | u16 flogi_oxid; | ||
175 | unsigned long s_id; | ||
176 | enum fnic_state state; | 173 | enum fnic_state state; |
177 | spinlock_t fnic_lock; | 174 | spinlock_t fnic_lock; |
178 | 175 | ||
179 | u16 vlan_id; /* VLAN tag including priority */ | 176 | u16 vlan_id; /* VLAN tag including priority */ |
180 | u8 mac_addr[ETH_ALEN]; | ||
181 | u8 dest_addr[ETH_ALEN]; | ||
182 | u8 data_src_addr[ETH_ALEN]; | 177 | u8 data_src_addr[ETH_ALEN]; |
183 | u64 fcp_input_bytes; /* internal statistic */ | 178 | u64 fcp_input_bytes; /* internal statistic */ |
184 | u64 fcp_output_bytes; /* internal statistic */ | 179 | u64 fcp_output_bytes; /* internal statistic */ |
@@ -205,6 +200,7 @@ struct fnic { | |||
205 | struct work_struct link_work; | 200 | struct work_struct link_work; |
206 | struct work_struct frame_work; | 201 | struct work_struct frame_work; |
207 | struct sk_buff_head frame_queue; | 202 | struct sk_buff_head frame_queue; |
203 | struct sk_buff_head tx_queue; | ||
208 | 204 | ||
209 | /* copy work queue cache line section */ | 205 | /* copy work queue cache line section */ |
210 | ____cacheline_aligned struct vnic_wq_copy wq_copy[FNIC_WQ_COPY_MAX]; | 206 | ____cacheline_aligned struct vnic_wq_copy wq_copy[FNIC_WQ_COPY_MAX]; |
@@ -224,6 +220,11 @@ struct fnic { | |||
224 | ____cacheline_aligned struct vnic_intr intr[FNIC_MSIX_INTR_MAX]; | 220 | ____cacheline_aligned struct vnic_intr intr[FNIC_MSIX_INTR_MAX]; |
225 | }; | 221 | }; |
226 | 222 | ||
223 | static inline struct fnic *fnic_from_ctlr(struct fcoe_ctlr *fip) | ||
224 | { | ||
225 | return container_of(fip, struct fnic, ctlr); | ||
226 | } | ||
227 | |||
227 | extern struct workqueue_struct *fnic_event_queue; | 228 | extern struct workqueue_struct *fnic_event_queue; |
228 | extern struct device_attribute *fnic_attrs[]; | 229 | extern struct device_attribute *fnic_attrs[]; |
229 | 230 | ||
@@ -239,7 +240,11 @@ void fnic_handle_link(struct work_struct *work); | |||
239 | int fnic_rq_cmpl_handler(struct fnic *fnic, int); | 240 | int fnic_rq_cmpl_handler(struct fnic *fnic, int); |
240 | int fnic_alloc_rq_frame(struct vnic_rq *rq); | 241 | int fnic_alloc_rq_frame(struct vnic_rq *rq); |
241 | void fnic_free_rq_buf(struct vnic_rq *rq, struct vnic_rq_buf *buf); | 242 | void fnic_free_rq_buf(struct vnic_rq *rq, struct vnic_rq_buf *buf); |
242 | int fnic_send_frame(struct fnic *fnic, struct fc_frame *fp); | 243 | void fnic_flush_tx(struct fnic *); |
244 | void fnic_eth_send(struct fcoe_ctlr *, struct sk_buff *skb); | ||
245 | void fnic_set_port_id(struct fc_lport *, u32, struct fc_frame *); | ||
246 | void fnic_update_mac(struct fc_lport *, u8 *new); | ||
247 | void fnic_update_mac_locked(struct fnic *, u8 *new); | ||
243 | 248 | ||
244 | int fnic_queuecommand(struct scsi_cmnd *, void (*done)(struct scsi_cmnd *)); | 249 | int fnic_queuecommand(struct scsi_cmnd *, void (*done)(struct scsi_cmnd *)); |
245 | int fnic_abort_cmd(struct scsi_cmnd *); | 250 | int fnic_abort_cmd(struct scsi_cmnd *); |
@@ -252,7 +257,7 @@ void fnic_empty_scsi_cleanup(struct fc_lport *); | |||
252 | void fnic_exch_mgr_reset(struct fc_lport *, u32, u32); | 257 | void fnic_exch_mgr_reset(struct fc_lport *, u32, u32); |
253 | int fnic_wq_copy_cmpl_handler(struct fnic *fnic, int); | 258 | int fnic_wq_copy_cmpl_handler(struct fnic *fnic, int); |
254 | int fnic_wq_cmpl_handler(struct fnic *fnic, int); | 259 | int fnic_wq_cmpl_handler(struct fnic *fnic, int); |
255 | int fnic_flogi_reg_handler(struct fnic *fnic); | 260 | int fnic_flogi_reg_handler(struct fnic *fnic, u32); |
256 | void fnic_wq_copy_cleanup_handler(struct vnic_wq_copy *wq, | 261 | void fnic_wq_copy_cleanup_handler(struct vnic_wq_copy *wq, |
257 | struct fcpio_host_req *desc); | 262 | struct fcpio_host_req *desc); |
258 | int fnic_fw_reset_handler(struct fnic *fnic); | 263 | int fnic_fw_reset_handler(struct fnic *fnic); |