Commit | Line | Data |
---|---|---|
fdd78027 VD |
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 | |
8597ae8b | 27 | #define FCOE_MIN_QUEUE_DEPTH 32 |
fdd78027 | 28 | |
fdd78027 VD |
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 | ||
2171c225 | 35 | #define FCOE_MAX_LUN 0xFFFF |
fdd78027 VD |
36 | #define FCOE_MAX_FCP_TARGET 256 |
37 | ||
38 | #define FCOE_MAX_OUTSTANDING_COMMANDS 1024 | |
39 | ||
d7179680 | 40 | #define FCOE_MIN_XID 0x0000 /* the min xid supported by fcoe_sw */ |
e4bc50be | 41 | #define FCOE_MAX_XID 0x0FFF /* the max xid supported by fcoe_sw */ |
fdd78027 | 42 | |
7c9c6841 | 43 | extern unsigned int fcoe_debug_logging; |
d5488eb9 | 44 | |
1875f27e | 45 | #define FCOE_LOGGING 0x01 /* General logging, not categorized */ |
d5488eb9 RL |
46 | #define FCOE_NETDEV_LOGGING 0x02 /* Netdevice logging */ |
47 | ||
48 | #define FCOE_CHECK_LOGGING(LEVEL, CMD) \ | |
49 | do { \ | |
50 | if (unlikely(fcoe_debug_logging & LEVEL)) \ | |
51 | do { \ | |
52 | CMD; \ | |
53 | } while (0); \ | |
a69b06bc | 54 | } while (0) |
d5488eb9 RL |
55 | |
56 | #define FCOE_DBG(fmt, args...) \ | |
57 | FCOE_CHECK_LOGGING(FCOE_LOGGING, \ | |
8e6c5363 | 58 | pr_info("fcoe: " fmt, ##args);) |
d5488eb9 RL |
59 | |
60 | #define FCOE_NETDEV_DBG(netdev, fmt, args...) \ | |
61 | FCOE_CHECK_LOGGING(FCOE_NETDEV_LOGGING, \ | |
8e6c5363 RL |
62 | pr_info("fcoe: %s: " fmt, \ |
63 | netdev->name, ##args);) | |
d5488eb9 | 64 | |
1875f27e RL |
65 | /** |
66 | * struct fcoe_interface - A FCoE interface | |
67 | * @list: Handle for a list of FCoE interfaces | |
68 | * @netdev: The associated net device | |
69 | * @fcoe_packet_type: FCoE packet type | |
70 | * @fip_packet_type: FIP packet type | |
1875f27e RL |
71 | * @oem: The offload exchange manager for all local port |
72 | * instances associated with this port | |
433eba04 | 73 | * @removed: Indicates fcoe interface removed from net device |
31c37a6f | 74 | * @priority: Priority for the FCoE packet (DCB) |
433eba04 | 75 | * This structure is 1:1 with a net device. |
fdd78027 | 76 | */ |
014f5c3f | 77 | struct fcoe_interface { |
1875f27e RL |
78 | struct list_head list; |
79 | struct net_device *netdev; | |
d1483bb9 | 80 | struct net_device *realdev; |
1875f27e RL |
81 | struct packet_type fcoe_packet_type; |
82 | struct packet_type fip_packet_type; | |
1875f27e | 83 | struct fc_exch_mgr *oem; |
433eba04 | 84 | u8 removed; |
31c37a6f | 85 | u8 priority; |
014f5c3f CL |
86 | }; |
87 | ||
619fe4be RL |
88 | #define fcoe_to_ctlr(x) \ |
89 | (struct fcoe_ctlr *)(((struct fcoe_ctlr *)(x)) - 1) | |
90 | ||
91 | #define fcoe_from_ctlr(x) \ | |
92 | ((struct fcoe_interface *)((x) + 1)) | |
97c8389d | 93 | |
1875f27e RL |
94 | /** |
95 | * fcoe_netdev() - Return the net device associated with a local port | |
96 | * @lport: The local port to get the net device from | |
97 | */ | |
98 | static inline struct net_device *fcoe_netdev(const struct fc_lport *lport) | |
fdd78027 | 99 | { |
8597ae8b BPG |
100 | return ((struct fcoe_interface *) |
101 | ((struct fcoe_port *)lport_priv(lport))->priv)->netdev; | |
fdd78027 VD |
102 | } |
103 | ||
104 | #endif /* _FCOE_H_ */ |