bfa_defs_cna.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  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. u64 bbsc_frames_lost; /*!< Credit Recovery-Frames Lost */
  56. u64 bbsc_credits_lost; /*!< Credit Recovery-Credits Lost */
  57. u64 bbsc_link_resets; /*!< Credit Recovery-Link Resets */
  58. };
  59. /**
  60. * @brief
  61. * Eth Physical Port statistics.
  62. */
  63. struct bfa_port_eth_stats {
  64. u64 secs_reset; /*!< Seconds since stats is reset */
  65. u64 frame_64; /*!< Frames 64 bytes */
  66. u64 frame_65_127; /*!< Frames 65-127 bytes */
  67. u64 frame_128_255; /*!< Frames 128-255 bytes */
  68. u64 frame_256_511; /*!< Frames 256-511 bytes */
  69. u64 frame_512_1023; /*!< Frames 512-1023 bytes */
  70. u64 frame_1024_1518; /*!< Frames 1024-1518 bytes */
  71. u64 frame_1519_1522; /*!< Frames 1519-1522 bytes */
  72. u64 tx_bytes; /*!< Tx bytes */
  73. u64 tx_packets; /*!< Tx packets */
  74. u64 tx_mcast_packets; /*!< Tx multicast packets */
  75. u64 tx_bcast_packets; /*!< Tx broadcast packets */
  76. u64 tx_control_frame; /*!< Tx control frame */
  77. u64 tx_drop; /*!< Tx drops */
  78. u64 tx_jabber; /*!< Tx jabber */
  79. u64 tx_fcs_error; /*!< Tx FCS errors */
  80. u64 tx_fragments; /*!< Tx fragments */
  81. u64 rx_bytes; /*!< Rx bytes */
  82. u64 rx_packets; /*!< Rx packets */
  83. u64 rx_mcast_packets; /*!< Rx multicast packets */
  84. u64 rx_bcast_packets; /*!< Rx broadcast packets */
  85. u64 rx_control_frames; /*!< Rx control frames */
  86. u64 rx_unknown_opcode; /*!< Rx unknown opcode */
  87. u64 rx_drop; /*!< Rx drops */
  88. u64 rx_jabber; /*!< Rx jabber */
  89. u64 rx_fcs_error; /*!< Rx FCS errors */
  90. u64 rx_alignment_error; /*!< Rx alignment errors */
  91. u64 rx_frame_length_error; /*!< Rx frame len errors */
  92. u64 rx_code_error; /*!< Rx code errors */
  93. u64 rx_fragments; /*!< Rx fragments */
  94. u64 rx_pause; /*!< Rx pause */
  95. u64 rx_zero_pause; /*!< Rx zero pause */
  96. u64 tx_pause; /*!< Tx pause */
  97. u64 tx_zero_pause; /*!< Tx zero pause */
  98. u64 rx_fcoe_pause; /*!< Rx FCoE pause */
  99. u64 rx_fcoe_zero_pause; /*!< Rx FCoE zero pause */
  100. u64 tx_fcoe_pause; /*!< Tx FCoE pause */
  101. u64 tx_fcoe_zero_pause; /*!< Tx FCoE zero pause */
  102. u64 rx_iscsi_pause; /*!< Rx iSCSI pause */
  103. u64 rx_iscsi_zero_pause; /*!< Rx iSCSI zero pause */
  104. u64 tx_iscsi_pause; /*!< Tx iSCSI pause */
  105. u64 tx_iscsi_zero_pause; /*!< Tx iSCSI zero pause */
  106. };
  107. /**
  108. * @brief
  109. * Port statistics.
  110. */
  111. union bfa_port_stats_u {
  112. struct bfa_port_fc_stats fc;
  113. struct bfa_port_eth_stats eth;
  114. };
  115. #pragma pack(1)
  116. #define BFA_CEE_LLDP_MAX_STRING_LEN (128)
  117. #define BFA_CEE_DCBX_MAX_PRIORITY (8)
  118. #define BFA_CEE_DCBX_MAX_PGID (8)
  119. #define BFA_CEE_LLDP_SYS_CAP_OTHER 0x0001
  120. #define BFA_CEE_LLDP_SYS_CAP_REPEATER 0x0002
  121. #define BFA_CEE_LLDP_SYS_CAP_MAC_BRIDGE 0x0004
  122. #define BFA_CEE_LLDP_SYS_CAP_WLAN_AP 0x0008
  123. #define BFA_CEE_LLDP_SYS_CAP_ROUTER 0x0010
  124. #define BFA_CEE_LLDP_SYS_CAP_TELEPHONE 0x0020
  125. #define BFA_CEE_LLDP_SYS_CAP_DOCSIS_CD 0x0040
  126. #define BFA_CEE_LLDP_SYS_CAP_STATION 0x0080
  127. #define BFA_CEE_LLDP_SYS_CAP_CVLAN 0x0100
  128. #define BFA_CEE_LLDP_SYS_CAP_SVLAN 0x0200
  129. #define BFA_CEE_LLDP_SYS_CAP_TPMR 0x0400
  130. /* LLDP string type */
  131. struct bfa_cee_lldp_str {
  132. u8 sub_type;
  133. u8 len;
  134. u8 rsvd[2];
  135. u8 value[BFA_CEE_LLDP_MAX_STRING_LEN];
  136. };
  137. /* LLDP paramters */
  138. struct bfa_cee_lldp_cfg {
  139. struct bfa_cee_lldp_str chassis_id;
  140. struct bfa_cee_lldp_str port_id;
  141. struct bfa_cee_lldp_str port_desc;
  142. struct bfa_cee_lldp_str sys_name;
  143. struct bfa_cee_lldp_str sys_desc;
  144. struct bfa_cee_lldp_str mgmt_addr;
  145. u16 time_to_live;
  146. u16 enabled_system_cap;
  147. };
  148. enum bfa_cee_dcbx_version {
  149. DCBX_PROTOCOL_PRECEE = 1,
  150. DCBX_PROTOCOL_CEE = 2,
  151. };
  152. enum bfa_cee_lls {
  153. /* LLS is down because the TLV not sent by the peer */
  154. CEE_LLS_DOWN_NO_TLV = 0,
  155. /* LLS is down as advertised by the peer */
  156. CEE_LLS_DOWN = 1,
  157. CEE_LLS_UP = 2,
  158. };
  159. /* CEE/DCBX parameters */
  160. struct bfa_cee_dcbx_cfg {
  161. u8 pgid[BFA_CEE_DCBX_MAX_PRIORITY];
  162. u8 pg_percentage[BFA_CEE_DCBX_MAX_PGID];
  163. u8 pfc_primap; /* bitmap of priorties with PFC enabled */
  164. u8 fcoe_primap; /* bitmap of priorities used for FcoE traffic */
  165. u8 iscsi_primap; /* bitmap of priorities used for iSCSI traffic */
  166. u8 dcbx_version; /* operating version:CEE or preCEE */
  167. u8 lls_fcoe; /* FCoE Logical Link Status */
  168. u8 lls_lan; /* LAN Logical Link Status */
  169. u8 rsvd[2];
  170. };
  171. /* CEE status */
  172. /* Making this to tri-state for the benefit of port list command */
  173. enum bfa_cee_status {
  174. CEE_UP = 0,
  175. CEE_PHY_UP = 1,
  176. CEE_LOOPBACK = 2,
  177. CEE_PHY_DOWN = 3,
  178. };
  179. /* CEE Query */
  180. struct bfa_cee_attr {
  181. u8 cee_status;
  182. u8 error_reason;
  183. struct bfa_cee_lldp_cfg lldp_remote;
  184. struct bfa_cee_dcbx_cfg dcbx_remote;
  185. mac_t src_mac;
  186. u8 link_speed;
  187. u8 nw_priority;
  188. u8 filler[2];
  189. };
  190. /* LLDP/DCBX/CEE Statistics */
  191. struct bfa_cee_stats {
  192. u32 lldp_tx_frames; /*!< LLDP Tx Frames */
  193. u32 lldp_rx_frames; /*!< LLDP Rx Frames */
  194. u32 lldp_rx_frames_invalid; /*!< LLDP Rx Frames invalid */
  195. u32 lldp_rx_frames_new; /*!< LLDP Rx Frames new */
  196. u32 lldp_tlvs_unrecognized; /*!< LLDP Rx unrecognized TLVs */
  197. u32 lldp_rx_shutdown_tlvs; /*!< LLDP Rx shutdown TLVs */
  198. u32 lldp_info_aged_out; /*!< LLDP remote info aged out */
  199. u32 dcbx_phylink_ups; /*!< DCBX phy link ups */
  200. u32 dcbx_phylink_downs; /*!< DCBX phy link downs */
  201. u32 dcbx_rx_tlvs; /*!< DCBX Rx TLVs */
  202. u32 dcbx_rx_tlvs_invalid; /*!< DCBX Rx TLVs invalid */
  203. u32 dcbx_control_tlv_error; /*!< DCBX control TLV errors */
  204. u32 dcbx_feature_tlv_error; /*!< DCBX feature TLV errors */
  205. u32 dcbx_cee_cfg_new; /*!< DCBX new CEE cfg rcvd */
  206. u32 cee_status_down; /*!< CEE status down */
  207. u32 cee_status_up; /*!< CEE status up */
  208. u32 cee_hw_cfg_changed; /*!< CEE hw cfg changed */
  209. u32 cee_rx_invalid_cfg; /*!< CEE invalid cfg */
  210. };
  211. #pragma pack()
  212. #endif /* __BFA_DEFS_CNA_H__ */