]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/net/ethernet/qlogic/qed/qed.h
qed: Add Light L2 support
[linux-beck.git] / drivers / net / ethernet / qlogic / qed / qed.h
index 45ab746765737ae2d9af3d5cb77c5343b9aa0c04..91b571a3670b4673dfe08b968e3e2607866f743e 100644 (file)
 #include <linux/zlib.h>
 #include <linux/hashtable.h>
 #include <linux/qed/qed_if.h>
+#include "qed_debug.h"
 #include "qed_hsi.h"
 
 extern const struct qed_common_ops qed_common_ops_pass;
-#define DRV_MODULE_VERSION "8.7.1.20"
+#define DRV_MODULE_VERSION "8.10.9.20"
 
 #define MAX_HWFNS_PER_DEVICE    (4)
 #define NAME_SIZE 16
@@ -42,6 +43,8 @@ enum qed_coalescing_mode {
 
 struct qed_eth_cb_ops;
 struct qed_dev_info;
+union qed_mcp_protocol_stats;
+enum qed_mcp_protocol_type;
 
 /* helpers */
 static inline u32 qed_db_addr(u32 cid, u32 DEMS)
@@ -69,6 +72,7 @@ struct qed_sb_info;
 struct qed_sb_attn_info;
 struct qed_cxt_mngr;
 struct qed_sb_sp_info;
+struct qed_ll2_info;
 struct qed_mcp_info;
 
 struct qed_rt_data {
@@ -149,6 +153,7 @@ enum QED_RESOURCES {
        QED_MAC,
        QED_VLAN,
        QED_ILT,
+       QED_LL2_QUEUE,
        QED_MAX_RESC,
 };
 
@@ -357,6 +362,8 @@ struct qed_hwfn {
        struct qed_sb_attn_info         *p_sb_attn;
 
        /* Protocol related */
+       bool                            using_ll2;
+       struct qed_ll2_info             *p_ll2_info;
        struct qed_pf_params            pf_params;
 
        bool b_rdma_enabled_in_prs;
@@ -393,6 +400,8 @@ struct qed_hwfn {
        /* Buffer for unzipping firmware data */
        void                            *unzip_buf;
 
+       struct dbg_tools_data           dbg_info;
+
        struct qed_simd_fp_handler      simd_proto_handler[64];
 
 #ifdef CONFIG_QED_SRIOV
@@ -428,6 +437,19 @@ struct qed_int_params {
        u8                      fp_msix_cnt;
 };
 
+struct qed_dbg_feature {
+       struct dentry *dentry;
+       u8 *dump_buf;
+       u32 buf_size;
+       u32 dumped_dwords;
+};
+
+struct qed_dbg_params {
+       struct qed_dbg_feature features[DBG_FEATURE_NUM];
+       u8 engine_for_debug;
+       bool print_data;
+};
+
 struct qed_dev {
        u32     dp_module;
        u8      dp_level;
@@ -442,6 +464,8 @@ struct qed_dev {
                                 CHIP_REV_IS_A0(dev))
 #define QED_IS_BB_B0(dev)       (QED_IS_BB(dev) && \
                                 CHIP_REV_IS_B0(dev))
+#define QED_IS_AH(dev)  ((dev)->type == QED_DEV_TYPE_AH)
+#define QED_IS_K2(dev)  QED_IS_AH(dev)
 
 #define QED_GET_TYPE(dev)       (QED_IS_BB_A0(dev) ? CHIP_BB_A0 : \
                                 QED_IS_BB_B0(dev) ? CHIP_BB_B0 : CHIP_K2)
@@ -542,6 +566,13 @@ struct qed_dev {
        } protocol_ops;
        void                            *ops_cookie;
 
+       struct qed_dbg_params           dbg_params;
+
+#ifdef CONFIG_QED_LL2
+       struct qed_cb_ll2_info          *ll2;
+       u8                              ll2_mac_address[ETH_ALEN];
+#endif
+
        const struct firmware           *firmware;
 };
 
@@ -606,7 +637,9 @@ void qed_link_update(struct qed_hwfn *hwfn);
 u32 qed_unzip_data(struct qed_hwfn *p_hwfn,
                   u32 input_len, u8 *input_buf,
                   u32 max_size, u8 *unzip_buf);
-
+void qed_get_protocol_stats(struct qed_dev *cdev,
+                           enum qed_mcp_protocol_type type,
+                           union qed_mcp_protocol_stats *stats);
 int qed_slowpath_irq_req(struct qed_hwfn *hwfn);
 
 #endif /* _QED_H */