1 /* 2 * Copyright(c) 2009 Intel Corporation. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify it 5 * under the terms and conditions of the GNU General Public License, 6 * version 2, as published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope it will be useful, but WITHOUT 9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 11 * more details. 12 * 13 * You should have received a copy of the GNU General Public License along with 14 * this program; if not, write to the Free Software Foundation, Inc., 15 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 16 * 17 * Maintained at www.Open-FCoE.org 18 */ 19 20 #ifndef _FCOE_H_ 21 #define _FCOE_H_ 22 23 #include <linux/skbuff.h> 24 #include <linux/kthread.h> 25 26 #define FCOE_MAX_QUEUE_DEPTH 256 27 #define FCOE_LOW_QUEUE_DEPTH 32 28 29 #define FCOE_WORD_TO_BYTE 4 30 31 #define FCOE_VERSION "0.1" 32 #define FCOE_NAME "fcoe" 33 #define FCOE_VENDOR "Open-FCoE.org" 34 35 #define FCOE_MAX_LUN 255 36 #define FCOE_MAX_FCP_TARGET 256 37 38 #define FCOE_MAX_OUTSTANDING_COMMANDS 1024 39 40 #define FCOE_MIN_XID 0x0001 /* the min xid supported by fcoe_sw */ 41 #define FCOE_MAX_XID 0x07ef /* the max xid supported by fcoe_sw */ 42 43 /* 44 * this percpu struct for fcoe 45 */ 46 struct fcoe_percpu_s { 47 struct task_struct *thread; 48 struct sk_buff_head fcoe_rx_list; 49 struct page *crc_eof_page; 50 int crc_eof_offset; 51 }; 52 53 /* 54 * the fcoe sw transport private data 55 */ 56 struct fcoe_softc { 57 struct list_head list; 58 struct net_device *real_dev; 59 struct net_device *phys_dev; /* device with ethtool_ops */ 60 struct packet_type fcoe_packet_type; 61 struct packet_type fip_packet_type; 62 struct sk_buff_head fcoe_pending_queue; 63 u8 fcoe_pending_queue_active; 64 struct fcoe_ctlr ctlr; 65 }; 66 67 #define fcoe_from_ctlr(fc) container_of(fc, struct fcoe_softc, ctlr) 68 69 static inline struct net_device *fcoe_netdev( 70 const struct fc_lport *lp) 71 { 72 return ((struct fcoe_softc *)lport_priv(lp))->real_dev; 73 } 74 75 #endif /* _FCOE_H_ */ 76