]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
qlcnic: Allow a predefined set of capture masks for FW dump
[karo-tx-linux.git] / drivers / net / ethernet / qlogic / qlcnic / qlcnic.h
index 385a4d5c7c25f1ff2a38e324d7b4b30d034770b1..8680a5dae4a2e175e18dc91cbe4f204f135915a6 100644 (file)
@@ -36,8 +36,8 @@
 
 #define _QLCNIC_LINUX_MAJOR 5
 #define _QLCNIC_LINUX_MINOR 0
-#define _QLCNIC_LINUX_SUBVERSION 27
-#define QLCNIC_LINUX_VERSIONID  "5.0.27"
+#define _QLCNIC_LINUX_SUBVERSION 28
+#define QLCNIC_LINUX_VERSIONID  "5.0.28"
 #define QLCNIC_DRV_IDC_VER  0x01
 #define QLCNIC_DRIVER_VERSION  ((_QLCNIC_LINUX_MAJOR << 16) |\
                 (_QLCNIC_LINUX_MINOR << 8) | (_QLCNIC_LINUX_SUBVERSION))
@@ -607,6 +607,7 @@ struct qlcnic_recv_context {
 #define QLCNIC_CDRP_CMD_CONFIG_PORT            0x0000002E
 #define QLCNIC_CDRP_CMD_TEMP_SIZE              0x0000002f
 #define QLCNIC_CDRP_CMD_GET_TEMP_HDR           0x00000030
+#define QLCNIC_CDRP_CMD_GET_MAC_STATS          0x00000037
 
 #define QLCNIC_RCODE_SUCCESS           0
 #define QLCNIC_RCODE_NOT_SUPPORTED     9
@@ -1180,18 +1181,62 @@ struct qlcnic_esw_func_cfg {
 #define QLCNIC_STATS_ESWITCH           2
 #define QLCNIC_QUERY_RX_COUNTER                0
 #define QLCNIC_QUERY_TX_COUNTER                1
-#define QLCNIC_ESW_STATS_NOT_AVAIL     0xffffffffffffffffULL
+#define QLCNIC_STATS_NOT_AVAIL 0xffffffffffffffffULL
+#define QLCNIC_FILL_STATS(VAL1) \
+       (((VAL1) == QLCNIC_STATS_NOT_AVAIL) ? 0 : VAL1)
+#define QLCNIC_MAC_STATS 1
+#define QLCNIC_ESW_STATS 2
 
 #define QLCNIC_ADD_ESW_STATS(VAL1, VAL2)\
 do {   \
-       if (((VAL1) == QLCNIC_ESW_STATS_NOT_AVAIL) && \
-           ((VAL2) != QLCNIC_ESW_STATS_NOT_AVAIL)) \
+       if (((VAL1) == QLCNIC_STATS_NOT_AVAIL) && \
+           ((VAL2) != QLCNIC_STATS_NOT_AVAIL)) \
                (VAL1) = (VAL2); \
-       else if (((VAL1) != QLCNIC_ESW_STATS_NOT_AVAIL) && \
-                ((VAL2) != QLCNIC_ESW_STATS_NOT_AVAIL)) \
+       else if (((VAL1) != QLCNIC_STATS_NOT_AVAIL) && \
+                ((VAL2) != QLCNIC_STATS_NOT_AVAIL)) \
                        (VAL1) += (VAL2); \
 } while (0)
 
+struct qlcnic_mac_statistics{
+       __le64  mac_tx_frames;
+       __le64  mac_tx_bytes;
+       __le64  mac_tx_mcast_pkts;
+       __le64  mac_tx_bcast_pkts;
+       __le64  mac_tx_pause_cnt;
+       __le64  mac_tx_ctrl_pkt;
+       __le64  mac_tx_lt_64b_pkts;
+       __le64  mac_tx_lt_127b_pkts;
+       __le64  mac_tx_lt_255b_pkts;
+       __le64  mac_tx_lt_511b_pkts;
+       __le64  mac_tx_lt_1023b_pkts;
+       __le64  mac_tx_lt_1518b_pkts;
+       __le64  mac_tx_gt_1518b_pkts;
+       __le64  rsvd1[3];
+
+       __le64  mac_rx_frames;
+       __le64  mac_rx_bytes;
+       __le64  mac_rx_mcast_pkts;
+       __le64  mac_rx_bcast_pkts;
+       __le64  mac_rx_pause_cnt;
+       __le64  mac_rx_ctrl_pkt;
+       __le64  mac_rx_lt_64b_pkts;
+       __le64  mac_rx_lt_127b_pkts;
+       __le64  mac_rx_lt_255b_pkts;
+       __le64  mac_rx_lt_511b_pkts;
+       __le64  mac_rx_lt_1023b_pkts;
+       __le64  mac_rx_lt_1518b_pkts;
+       __le64  mac_rx_gt_1518b_pkts;
+       __le64  rsvd2[3];
+
+       __le64  mac_rx_length_error;
+       __le64  mac_rx_length_small;
+       __le64  mac_rx_length_large;
+       __le64  mac_rx_jabber;
+       __le64  mac_rx_dropped;
+       __le64  mac_rx_crc_error;
+       __le64  mac_align_error;
+} __packed;
+
 struct __qlcnic_esw_statistics {
        __le16 context_id;
        __le16 version;
@@ -1352,6 +1397,8 @@ enum op_codes {
 #define QLCNIC_ENABLE_FW_DUMP          0xaddfeed
 #define QLCNIC_DISABLE_FW_DUMP         0xbadfeed
 #define QLCNIC_FORCE_FW_RESET          0xdeaddead
+#define QLCNIC_SET_QUIESCENT           0xadd00010
+#define QLCNIC_RESET_QUIESCENT         0xadd00020
 
 struct qlcnic_dump_operations {
        enum op_codes opcode;
@@ -1510,6 +1557,7 @@ int qlcnic_get_port_stats(struct qlcnic_adapter *, const u8, const u8,
 int qlcnic_get_eswitch_stats(struct qlcnic_adapter *, const u8, u8,
                                        struct __qlcnic_esw_statistics *);
 int qlcnic_clear_esw_stats(struct qlcnic_adapter *adapter, u8, u8, u8);
+int qlcnic_get_mac_stats(struct qlcnic_adapter *, struct qlcnic_mac_statistics *);
 extern int qlcnic_config_tso;
 
 /*
@@ -1559,6 +1607,7 @@ static inline u32 qlcnic_tx_avail(struct qlcnic_host_tx_ring *tx_ring)
 }
 
 extern const struct ethtool_ops qlcnic_ethtool_ops;
+extern const struct ethtool_ops qlcnic_ethtool_failed_ops;
 
 struct qlcnic_nic_template {
        int (*config_bridged_mode) (struct qlcnic_adapter *, u32);