aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/libfcoe.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h
index efb6ae5b94a..e5024634bfa 100644
--- a/include/scsi/libfcoe.h
+++ b/include/scsi/libfcoe.h
@@ -221,6 +221,8 @@ int fcoe_ctlr_recv_flogi(struct fcoe_ctlr *, struct fc_lport *,
221u64 fcoe_wwn_from_mac(unsigned char mac[], unsigned int, unsigned int); 221u64 fcoe_wwn_from_mac(unsigned char mac[], unsigned int, unsigned int);
222int fcoe_libfc_config(struct fc_lport *, struct fcoe_ctlr *, 222int fcoe_libfc_config(struct fc_lport *, struct fcoe_ctlr *,
223 const struct libfc_function_template *, int init_fcp); 223 const struct libfc_function_template *, int init_fcp);
224u32 fcoe_fc_crc(struct fc_frame *fp);
225int fcoe_start_io(struct sk_buff *skb);
224 226
225/** 227/**
226 * is_fip_mode() - returns true if FIP mode selected. 228 * is_fip_mode() - returns true if FIP mode selected.
@@ -267,6 +269,55 @@ struct fcoe_transport {
267}; 269};
268 270
269/** 271/**
272 * struct fcoe_percpu_s - The context for FCoE receive thread(s)
273 * @thread: The thread context
274 * @fcoe_rx_list: The queue of pending packets to process
275 * @page: The memory page for calculating frame trailer CRCs
276 * @crc_eof_offset: The offset into the CRC page pointing to available
277 * memory for a new trailer
278 */
279struct fcoe_percpu_s {
280 struct task_struct *thread;
281 struct sk_buff_head fcoe_rx_list;
282 struct page *crc_eof_page;
283 int crc_eof_offset;
284};
285
286/**
287 * struct fcoe_port - The FCoE private structure
288 * @priv: The associated fcoe interface. The structure is
289 * defined by the low level driver
290 * @lport: The associated local port
291 * @fcoe_pending_queue: The pending Rx queue of skbs
292 * @fcoe_pending_queue_active: Indicates if the pending queue is active
293 * @max_queue_depth: Max queue depth of pending queue
294 * @min_queue_depth: Min queue depth of pending queue
295 * @timer: The queue timer
296 * @destroy_work: Handle for work context
297 * (to prevent RTNL deadlocks)
298 * @data_srt_addr: Source address for data
299 *
300 * An instance of this structure is to be allocated along with the
301 * Scsi_Host and libfc fc_lport structures.
302 */
303struct fcoe_port {
304 void *priv;
305 struct fc_lport *lport;
306 struct sk_buff_head fcoe_pending_queue;
307 u8 fcoe_pending_queue_active;
308 u32 max_queue_depth;
309 u32 min_queue_depth;
310 struct timer_list timer;
311 struct work_struct destroy_work;
312 u8 data_src_addr[ETH_ALEN];
313};
314void fcoe_clean_pending_queue(struct fc_lport *);
315void fcoe_check_wait_queue(struct fc_lport *lport, struct sk_buff *skb);
316void fcoe_queue_timer(ulong lport);
317int fcoe_get_paged_crc_eof(struct sk_buff *skb, int tlen,
318 struct fcoe_percpu_s *fps);
319
320/**
270 * struct netdev_list 321 * struct netdev_list
271 * A mapping from netdevice to fcoe_transport 322 * A mapping from netdevice to fcoe_transport
272 */ 323 */