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