fcoe.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. #ifndef _FCOE_H_
  20. #define _FCOE_H_
  21. #include <linux/skbuff.h>
  22. #include <linux/kthread.h>
  23. #define FCOE_MAX_QUEUE_DEPTH 256
  24. #define FCOE_MIN_QUEUE_DEPTH 32
  25. #define FCOE_WORD_TO_BYTE 4
  26. #define FCOE_VERSION "0.1"
  27. #define FCOE_NAME "fcoe"
  28. #define FCOE_VENDOR "Open-FCoE.org"
  29. #define FCOE_MAX_LUN 0xFFFF
  30. #define FCOE_MAX_FCP_TARGET 256
  31. #define FCOE_MAX_OUTSTANDING_COMMANDS 1024
  32. #define FCOE_MIN_XID 0x0000 /* the min xid supported by fcoe_sw */
  33. #define FCOE_MAX_XID 0x0FFF /* the max xid supported by fcoe_sw */
  34. extern unsigned int fcoe_debug_logging;
  35. #define FCOE_LOGGING 0x01 /* General logging, not categorized */
  36. #define FCOE_NETDEV_LOGGING 0x02 /* Netdevice logging */
  37. #define FCOE_CHECK_LOGGING(LEVEL, CMD) \
  38. do { \
  39. if (unlikely(fcoe_debug_logging & LEVEL)) \
  40. do { \
  41. CMD; \
  42. } while (0); \
  43. } while (0)
  44. #define FCOE_DBG(fmt, args...) \
  45. FCOE_CHECK_LOGGING(FCOE_LOGGING, \
  46. pr_info("fcoe: " fmt, ##args);)
  47. #define FCOE_NETDEV_DBG(netdev, fmt, args...) \
  48. FCOE_CHECK_LOGGING(FCOE_NETDEV_LOGGING, \
  49. pr_info("fcoe: %s: " fmt, \
  50. netdev->name, ##args);)
  51. /**
  52. * struct fcoe_interface - A FCoE interface
  53. * @list: Handle for a list of FCoE interfaces
  54. * @netdev: The associated net device
  55. * @fcoe_packet_type: FCoE packet type
  56. * @fip_packet_type: FIP packet type
  57. * @oem: The offload exchange manager for all local port
  58. * instances associated with this port
  59. * @removed: Indicates fcoe interface removed from net device
  60. * @priority: Priority for the FCoE packet (DCB)
  61. * This structure is 1:1 with a net device.
  62. */
  63. struct fcoe_interface {
  64. struct list_head list;
  65. struct net_device *netdev;
  66. struct net_device *realdev;
  67. struct packet_type fcoe_packet_type;
  68. struct packet_type fip_packet_type;
  69. struct packet_type fip_vlan_packet_type;
  70. struct fc_exch_mgr *oem;
  71. u8 removed;
  72. u8 priority;
  73. };
  74. #define fcoe_to_ctlr(x) \
  75. (struct fcoe_ctlr *)(((struct fcoe_ctlr *)(x)) - 1)
  76. #define fcoe_from_ctlr(x) \
  77. ((struct fcoe_interface *)((x) + 1))
  78. /**
  79. * fcoe_netdev() - Return the net device associated with a local port
  80. * @lport: The local port to get the net device from
  81. */
  82. static inline struct net_device *fcoe_netdev(const struct fc_lport *lport)
  83. {
  84. return ((struct fcoe_interface *)
  85. ((struct fcoe_port *)lport_priv(lport))->priv)->netdev;
  86. }
  87. #endif /* _FCOE_H_ */