bfa_defs_cna.h 7.4 KB

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