bfa_defs_cna.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. /*
  2. * Linux network driver for Brocade Converged Network Adapter.
  3. *
  4. * This program is free software; you can redistribute it and/or modify it
  5. * under the terms of the GNU General Public License (GPL) Version 2 as
  6. * published by the Free Software Foundation
  7. *
  8. * This program is distributed in the hope that it will be useful, but
  9. * WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. * General Public License for more details.
  12. */
  13. /*
  14. * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
  15. * All rights reserved
  16. * www.brocade.com
  17. */
  18. #ifndef __BFA_DEFS_CNA_H__
  19. #define __BFA_DEFS_CNA_H__
  20. #include "bfa_defs.h"
  21. /**
  22. * @brief
  23. * FC physical port statistics.
  24. */
  25. struct bfa_port_fc_stats {
  26. u64 secs_reset; /*!< Seconds since stats is reset */
  27. u64 tx_frames; /*!< Tx frames */
  28. u64 tx_words; /*!< Tx words */
  29. u64 tx_lip; /*!< Tx LIP */
  30. u64 tx_nos; /*!< Tx NOS */
  31. u64 tx_ols; /*!< Tx OLS */
  32. u64 tx_lr; /*!< Tx LR */
  33. u64 tx_lrr; /*!< Tx LRR */
  34. u64 rx_frames; /*!< Rx frames */
  35. u64 rx_words; /*!< Rx words */
  36. u64 lip_count; /*!< Rx LIP */
  37. u64 nos_count; /*!< Rx NOS */
  38. u64 ols_count; /*!< Rx OLS */
  39. u64 lr_count; /*!< Rx LR */
  40. u64 lrr_count; /*!< Rx LRR */
  41. u64 invalid_crcs; /*!< Rx CRC err frames */
  42. u64 invalid_crc_gd_eof; /*!< Rx CRC err good EOF frames */
  43. u64 undersized_frm; /*!< Rx undersized frames */
  44. u64 oversized_frm; /*!< Rx oversized frames */
  45. u64 bad_eof_frm; /*!< Rx frames with bad EOF */
  46. u64 error_frames; /*!< Errored frames */
  47. u64 dropped_frames; /*!< Dropped frames */
  48. u64 link_failures; /*!< Link Failure (LF) count */
  49. u64 loss_of_syncs; /*!< Loss of sync count */
  50. u64 loss_of_signals; /*!< Loss of signal count */
  51. u64 primseq_errs; /*!< Primitive sequence protocol err. */
  52. u64 bad_os_count; /*!< Invalid ordered sets */
  53. u64 err_enc_out; /*!< Encoding err nonframe_8b10b */
  54. u64 err_enc; /*!< Encoding err frame_8b10b */
  55. };
  56. /**
  57. * @brief
  58. * Eth Physical Port statistics.
  59. */
  60. struct bfa_port_eth_stats {
  61. u64 secs_reset; /*!< Seconds since stats is reset */
  62. u64 frame_64; /*!< Frames 64 bytes */
  63. u64 frame_65_127; /*!< Frames 65-127 bytes */
  64. u64 frame_128_255; /*!< Frames 128-255 bytes */
  65. u64 frame_256_511; /*!< Frames 256-511 bytes */
  66. u64 frame_512_1023; /*!< Frames 512-1023 bytes */
  67. u64 frame_1024_1518; /*!< Frames 1024-1518 bytes */
  68. u64 frame_1519_1522; /*!< Frames 1519-1522 bytes */
  69. u64 tx_bytes; /*!< Tx bytes */
  70. u64 tx_packets; /*!< Tx packets */
  71. u64 tx_mcast_packets; /*!< Tx multicast packets */
  72. u64 tx_bcast_packets; /*!< Tx broadcast packets */
  73. u64 tx_control_frame; /*!< Tx control frame */
  74. u64 tx_drop; /*!< Tx drops */
  75. u64 tx_jabber; /*!< Tx jabber */
  76. u64 tx_fcs_error; /*!< Tx FCS errors */
  77. u64 tx_fragments; /*!< Tx fragments */
  78. u64 rx_bytes; /*!< Rx bytes */
  79. u64 rx_packets; /*!< Rx packets */
  80. u64 rx_mcast_packets; /*!< Rx multicast packets */
  81. u64 rx_bcast_packets; /*!< Rx broadcast packets */
  82. u64 rx_control_frames; /*!< Rx control frames */
  83. u64 rx_unknown_opcode; /*!< Rx unknown opcode */
  84. u64 rx_drop; /*!< Rx drops */
  85. u64 rx_jabber; /*!< Rx jabber */
  86. u64 rx_fcs_error; /*!< Rx FCS errors */
  87. u64 rx_alignment_error; /*!< Rx alignment errors */
  88. u64 rx_frame_length_error; /*!< Rx frame len errors */
  89. u64 rx_code_error; /*!< Rx code errors */
  90. u64 rx_fragments; /*!< Rx fragments */
  91. u64 rx_pause; /*!< Rx pause */
  92. u64 rx_zero_pause; /*!< Rx zero pause */
  93. u64 tx_pause; /*!< Tx pause */
  94. u64 tx_zero_pause; /*!< Tx zero pause */
  95. u64 rx_fcoe_pause; /*!< Rx FCoE pause */
  96. u64 rx_fcoe_zero_pause; /*!< Rx FCoE zero pause */
  97. u64 tx_fcoe_pause; /*!< Tx FCoE pause */
  98. u64 tx_fcoe_zero_pause; /*!< Tx FCoE zero pause */
  99. };
  100. /**
  101. * @brief
  102. * Port statistics.
  103. */
  104. union bfa_port_stats_u {
  105. struct bfa_port_fc_stats fc;
  106. struct bfa_port_eth_stats eth;
  107. };
  108. #pragma pack(1)
  109. #define BFA_CEE_LLDP_MAX_STRING_LEN (128)
  110. #define BFA_CEE_DCBX_MAX_PRIORITY (8)
  111. #define BFA_CEE_DCBX_MAX_PGID (8)
  112. #define BFA_CEE_LLDP_SYS_CAP_OTHER 0x0001
  113. #define BFA_CEE_LLDP_SYS_CAP_REPEATER 0x0002
  114. #define BFA_CEE_LLDP_SYS_CAP_MAC_BRIDGE 0x0004
  115. #define BFA_CEE_LLDP_SYS_CAP_WLAN_AP 0x0008
  116. #define BFA_CEE_LLDP_SYS_CAP_ROUTER 0x0010
  117. #define BFA_CEE_LLDP_SYS_CAP_TELEPHONE 0x0020
  118. #define BFA_CEE_LLDP_SYS_CAP_DOCSIS_CD 0x0040
  119. #define BFA_CEE_LLDP_SYS_CAP_STATION 0x0080
  120. #define BFA_CEE_LLDP_SYS_CAP_CVLAN 0x0100
  121. #define BFA_CEE_LLDP_SYS_CAP_SVLAN 0x0200
  122. #define BFA_CEE_LLDP_SYS_CAP_TPMR 0x0400
  123. /* LLDP string type */
  124. struct bfa_cee_lldp_str {
  125. u8 sub_type;
  126. u8 len;
  127. u8 rsvd[2];
  128. u8 value[BFA_CEE_LLDP_MAX_STRING_LEN];
  129. };
  130. /* LLDP paramters */
  131. struct bfa_cee_lldp_cfg {
  132. struct bfa_cee_lldp_str chassis_id;
  133. struct bfa_cee_lldp_str port_id;
  134. struct bfa_cee_lldp_str port_desc;
  135. struct bfa_cee_lldp_str sys_name;
  136. struct bfa_cee_lldp_str sys_desc;
  137. struct bfa_cee_lldp_str mgmt_addr;
  138. u16 time_to_live;
  139. u16 enabled_system_cap;
  140. };
  141. enum bfa_cee_dcbx_version {
  142. DCBX_PROTOCOL_PRECEE = 1,
  143. DCBX_PROTOCOL_CEE = 2,
  144. };
  145. enum bfa_cee_lls {
  146. /* LLS is down because the TLV not sent by the peer */
  147. CEE_LLS_DOWN_NO_TLV = 0,
  148. /* LLS is down as advertised by the peer */
  149. CEE_LLS_DOWN = 1,
  150. CEE_LLS_UP = 2,
  151. };
  152. /* CEE/DCBX parameters */
  153. struct bfa_cee_dcbx_cfg {
  154. u8 pgid[BFA_CEE_DCBX_MAX_PRIORITY];
  155. u8 pg_percentage[BFA_CEE_DCBX_MAX_PGID];
  156. u8 pfc_primap; /* bitmap of priorties with PFC enabled */
  157. u8 fcoe_primap; /* bitmap of priorities used for FcoE traffic */
  158. u8 iscsi_primap; /* bitmap of priorities used for iSCSI traffic */
  159. u8 dcbx_version; /* operating version:CEE or preCEE */
  160. u8 lls_fcoe; /* FCoE Logical Link Status */
  161. u8 lls_lan; /* LAN Logical Link Status */
  162. u8 rsvd[2];
  163. };
  164. /* CEE status */
  165. /* Making this to tri-state for the benefit of port list command */
  166. enum bfa_cee_status {
  167. CEE_UP = 0,
  168. CEE_PHY_UP = 1,
  169. CEE_LOOPBACK = 2,
  170. CEE_PHY_DOWN = 3,
  171. };
  172. /* CEE Query */
  173. struct bfa_cee_attr {
  174. u8 cee_status;
  175. u8 error_reason;
  176. struct bfa_cee_lldp_cfg lldp_remote;
  177. struct bfa_cee_dcbx_cfg dcbx_remote;
  178. mac_t src_mac;
  179. u8 link_speed;
  180. u8 nw_priority;
  181. u8 filler[2];
  182. };
  183. /* LLDP/DCBX/CEE Statistics */
  184. struct bfa_cee_stats {
  185. u32 lldp_tx_frames; /*!< LLDP Tx Frames */
  186. u32 lldp_rx_frames; /*!< LLDP Rx Frames */
  187. u32 lldp_rx_frames_invalid; /*!< LLDP Rx Frames invalid */
  188. u32 lldp_rx_frames_new; /*!< LLDP Rx Frames new */
  189. u32 lldp_tlvs_unrecognized; /*!< LLDP Rx unrecognized TLVs */
  190. u32 lldp_rx_shutdown_tlvs; /*!< LLDP Rx shutdown TLVs */
  191. u32 lldp_info_aged_out; /*!< LLDP remote info aged out */
  192. u32 dcbx_phylink_ups; /*!< DCBX phy link ups */
  193. u32 dcbx_phylink_downs; /*!< DCBX phy link downs */
  194. u32 dcbx_rx_tlvs; /*!< DCBX Rx TLVs */
  195. u32 dcbx_rx_tlvs_invalid; /*!< DCBX Rx TLVs invalid */
  196. u32 dcbx_control_tlv_error; /*!< DCBX control TLV errors */
  197. u32 dcbx_feature_tlv_error; /*!< DCBX feature TLV errors */
  198. u32 dcbx_cee_cfg_new; /*!< DCBX new CEE cfg rcvd */
  199. u32 cee_status_down; /*!< CEE status down */
  200. u32 cee_status_up; /*!< CEE status up */
  201. u32 cee_hw_cfg_changed; /*!< CEE hw cfg changed */
  202. u32 cee_rx_invalid_cfg; /*!< CEE invalid cfg */
  203. };
  204. #pragma pack()
  205. #endif /* __BFA_DEFS_CNA_H__ */