Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetoot...
[cascardo/linux.git] / include / linux / qed / eth_common.h
index b5ebc69..1aa0727 100644 (file)
 /* ETH FW CONSTANTS */
 /********************/
 #define ETH_HSI_VER_MAJOR                   3
-#define ETH_HSI_VER_MINOR                   0
-#define ETH_CACHE_LINE_SIZE                 64
+#define ETH_HSI_VER_MINOR      10
+
+#define ETH_HSI_VER_NO_PKT_LEN_TUNN    5
 
+#define ETH_CACHE_LINE_SIZE                 64
+#define ETH_RX_CQE_GAP 32
 #define ETH_MAX_RAMROD_PER_CON                          8
 #define ETH_TX_BD_PAGE_SIZE_BYTES                       4096
 #define ETH_RX_BD_PAGE_SIZE_BYTES                       4096
 
 #define ETH_TX_MIN_BDS_PER_NON_LSO_PKT                          1
 #define ETH_TX_MAX_BDS_PER_NON_LSO_PACKET                       18
+#define ETH_TX_MAX_BDS_PER_LSO_PACKET  255
 #define ETH_TX_MAX_LSO_HDR_NBD                                          4
 #define ETH_TX_MIN_BDS_PER_LSO_PKT                                      3
 #define ETH_TX_MIN_BDS_PER_TUNN_IPV6_WITH_EXT_PKT       3
 #define ETH_TX_MIN_BDS_PER_IPV6_WITH_EXT_PKT            2
 #define ETH_TX_MIN_BDS_PER_PKT_W_LOOPBACK_MODE          2
-#define ETH_TX_MAX_NON_LSO_PKT_LEN                  (9700 - (4 + 12 + 8))
+#define ETH_TX_MAX_NON_LSO_PKT_LEN     (9700 - (4 + 4 + 12 + 8))
 #define ETH_TX_MAX_LSO_HDR_BYTES                    510
+#define ETH_TX_LSO_WINDOW_BDS_NUM      (18 - 1)
+#define ETH_TX_LSO_WINDOW_MIN_LEN      9700
+#define ETH_TX_MAX_LSO_PAYLOAD_LEN     0xFE000
+#define ETH_TX_NUM_SAME_AS_LAST_ENTRIES        320
+#define ETH_TX_INACTIVE_SAME_AS_LAST   0xFFFF
 
 #define ETH_NUM_STATISTIC_COUNTERS                      MAX_NUM_VPORTS
+#define ETH_NUM_STATISTIC_COUNTERS_DOUBLE_VF_ZONE \
+       (ETH_NUM_STATISTIC_COUNTERS - MAX_NUM_VFS / 2)
+#define ETH_NUM_STATISTIC_COUNTERS_QUAD_VF_ZONE \
+       (ETH_NUM_STATISTIC_COUNTERS - 3 * MAX_NUM_VFS / 4)
 
 /* Maximum number of buffers, used for RX packet placement */
 #define ETH_RX_MAX_BUFF_PER_PKT             5
@@ -59,6 +72,8 @@
 #define ETH_TPA_CQE_CONT_LEN_LIST_SIZE    6
 #define ETH_TPA_CQE_END_LEN_LIST_SIZE     4
 
+/* Control frame check constants */
+#define ETH_CTL_FRAME_ETH_TYPE_NUM     4
 
 struct eth_tx_1st_bd_flags {
        u8 bitfields;
@@ -82,10 +97,10 @@ struct eth_tx_1st_bd_flags {
 
 /* The parsing information data fo rthe first tx bd of a given packet. */
 struct eth_tx_data_1st_bd {
-       __le16                          vlan;
-       u8                              nbds;
-       struct eth_tx_1st_bd_flags      bd_flags;
-       __le16                          bitfields;
+       __le16 vlan;
+       u8 nbds;
+       struct eth_tx_1st_bd_flags bd_flags;
+       __le16 bitfields;
 #define ETH_TX_DATA_1ST_BD_TUNN_FLAG_MASK  0x1
 #define ETH_TX_DATA_1ST_BD_TUNN_FLAG_SHIFT 0
 #define ETH_TX_DATA_1ST_BD_RESERVED0_MASK          0x1
@@ -96,7 +111,7 @@ struct eth_tx_data_1st_bd {
 
 /* The parsing information data for the second tx bd of a given packet. */
 struct eth_tx_data_2nd_bd {
-       __le16  tunn_ip_size;
+       __le16 tunn_ip_size;
        __le16  bitfields1;
 #define ETH_TX_DATA_2ND_BD_TUNN_INNER_L2_HDR_SIZE_W_MASK  0xF
 #define ETH_TX_DATA_2ND_BD_TUNN_INNER_L2_HDR_SIZE_W_SHIFT 0
@@ -125,9 +140,14 @@ struct eth_tx_data_2nd_bd {
 #define ETH_TX_DATA_2ND_BD_RESERVED0_SHIFT                13
 };
 
+/* Firmware data for L2-EDPM packet. */
+struct eth_edpm_fw_data {
+       struct eth_tx_data_1st_bd data_1st_bd;
+       struct eth_tx_data_2nd_bd data_2nd_bd;
+       __le32 reserved;
+};
+
 struct eth_fast_path_cqe_fw_debug {
-       u8 reserved0;
-       u8 reserved1;
        __le16 reserved2;
 };
 
@@ -148,6 +168,17 @@ struct eth_tunnel_parsing_flags {
 #define        ETH_TUNNEL_PARSING_FLAGS_IPV4_OPTIONS_SHIFT     7
 };
 
+/* PMD flow control bits */
+struct eth_pmd_flow_flags {
+       u8 flags;
+#define ETH_PMD_FLOW_FLAGS_VALID_MASK  0x1
+#define ETH_PMD_FLOW_FLAGS_VALID_SHIFT 0
+#define ETH_PMD_FLOW_FLAGS_TOGGLE_MASK 0x1
+#define ETH_PMD_FLOW_FLAGS_TOGGLE_SHIFT        1
+#define ETH_PMD_FLOW_FLAGS_RESERVED_MASK 0x3F
+#define ETH_PMD_FLOW_FLAGS_RESERVED_SHIFT 2
+};
+
 /* Regular ETH Rx FP CQE. */
 struct eth_fast_path_rx_reg_cqe {
        u8 type;
@@ -166,64 +197,63 @@ struct eth_fast_path_rx_reg_cqe {
        u8 placement_offset;
        struct eth_tunnel_parsing_flags tunnel_pars_flags;
        u8 bd_num;
-       u8 reserved[7];
+       u8 reserved[9];
        struct eth_fast_path_cqe_fw_debug fw_debug;
        u8 reserved1[3];
-       u8 flags;
-#define ETH_FAST_PATH_RX_REG_CQE_VALID_MASK          0x1
-#define ETH_FAST_PATH_RX_REG_CQE_VALID_SHIFT         0
-#define ETH_FAST_PATH_RX_REG_CQE_VALID_TOGGLE_MASK   0x1
-#define ETH_FAST_PATH_RX_REG_CQE_VALID_TOGGLE_SHIFT  1
-#define ETH_FAST_PATH_RX_REG_CQE_RESERVED2_MASK      0x3F
-#define ETH_FAST_PATH_RX_REG_CQE_RESERVED2_SHIFT     2
+       struct eth_pmd_flow_flags pmd_flags;
 };
 
 /* TPA-continue ETH Rx FP CQE. */
 struct eth_fast_path_rx_tpa_cont_cqe {
-       u8      type;
-       u8      tpa_agg_index;
-       __le16  len_list[ETH_TPA_CQE_CONT_LEN_LIST_SIZE];
-       u8      reserved[5];
-       u8      reserved1;
-       __le16  reserved2[ETH_TPA_CQE_CONT_LEN_LIST_SIZE];
+       u8 type;
+       u8 tpa_agg_index;
+       __le16 len_list[ETH_TPA_CQE_CONT_LEN_LIST_SIZE];
+       u8 reserved;
+       u8 reserved1;
+       __le16 reserved2[ETH_TPA_CQE_CONT_LEN_LIST_SIZE];
+       u8 reserved3[3];
+       struct eth_pmd_flow_flags pmd_flags;
 };
 
 /* TPA-end ETH Rx FP CQE. */
 struct eth_fast_path_rx_tpa_end_cqe {
-       u8      type;
-       u8      tpa_agg_index;
-       __le16  total_packet_len;
-       u8      num_of_bds;
-       u8      end_reason;
-       __le16  num_of_coalesced_segs;
-       __le32  ts_delta;
-       __le16  len_list[ETH_TPA_CQE_END_LEN_LIST_SIZE];
-       u8      reserved1[3];
-       u8      reserved2;
-       __le16  reserved3[ETH_TPA_CQE_END_LEN_LIST_SIZE];
+       u8 type;
+       u8 tpa_agg_index;
+       __le16 total_packet_len;
+       u8 num_of_bds;
+       u8 end_reason;
+       __le16 num_of_coalesced_segs;
+       __le32 ts_delta;
+       __le16 len_list[ETH_TPA_CQE_END_LEN_LIST_SIZE];
+       __le16 reserved3[ETH_TPA_CQE_END_LEN_LIST_SIZE];
+       __le16 reserved1;
+       u8 reserved2;
+       struct eth_pmd_flow_flags pmd_flags;
 };
 
 /* TPA-start ETH Rx FP CQE. */
 struct eth_fast_path_rx_tpa_start_cqe {
-       u8      type;
-       u8      bitfields;
+       u8 type;
+       u8 bitfields;
 #define ETH_FAST_PATH_RX_TPA_START_CQE_RSS_HASH_TYPE_MASK  0x7
 #define ETH_FAST_PATH_RX_TPA_START_CQE_RSS_HASH_TYPE_SHIFT 0
 #define ETH_FAST_PATH_RX_TPA_START_CQE_TC_MASK             0xF
 #define ETH_FAST_PATH_RX_TPA_START_CQE_TC_SHIFT            3
 #define ETH_FAST_PATH_RX_TPA_START_CQE_RESERVED0_MASK      0x1
 #define ETH_FAST_PATH_RX_TPA_START_CQE_RESERVED0_SHIFT     7
-       __le16  seg_len;
+       __le16 seg_len;
        struct parsing_and_err_flags pars_flags;
-       __le16  vlan_tag;
-       __le32  rss_hash;
-       __le16  len_on_first_bd;
-       u8      placement_offset;
+       __le16 vlan_tag;
+       __le32 rss_hash;
+       __le16 len_on_first_bd;
+       u8 placement_offset;
        struct eth_tunnel_parsing_flags tunnel_pars_flags;
-       u8      tpa_agg_index;
-       u8      header_len;
-       __le16  ext_bd_len_list[ETH_TPA_CQE_START_LEN_LIST_SIZE];
+       u8 tpa_agg_index;
+       u8 header_len;
+       __le16 ext_bd_len_list[ETH_TPA_CQE_START_LEN_LIST_SIZE];
        struct eth_fast_path_cqe_fw_debug fw_debug;
+       u8 reserved;
+       struct eth_pmd_flow_flags pmd_flags;
 };
 
 /* The L4 pseudo checksum mode for Ethernet */
@@ -245,15 +275,7 @@ struct eth_slow_path_rx_cqe {
        u8      reserved[25];
        __le16  echo;
        u8      reserved1;
-       u8      flags;
-/* for PMD mode - valid indication */
-#define ETH_SLOW_PATH_RX_CQE_VALID_MASK         0x1
-#define ETH_SLOW_PATH_RX_CQE_VALID_SHIFT        0
-/* for PMD mode - valid toggle indication */
-#define ETH_SLOW_PATH_RX_CQE_VALID_TOGGLE_MASK  0x1
-#define ETH_SLOW_PATH_RX_CQE_VALID_TOGGLE_SHIFT 1
-#define ETH_SLOW_PATH_RX_CQE_RESERVED2_MASK     0x3F
-#define ETH_SLOW_PATH_RX_CQE_RESERVED2_SHIFT    2
+       struct eth_pmd_flow_flags pmd_flags;
 };
 
 /* union for all ETH Rx CQE types */
@@ -276,6 +298,11 @@ enum eth_rx_cqe_type {
        MAX_ETH_RX_CQE_TYPE
 };
 
+struct eth_rx_pmd_cqe {
+       union eth_rx_cqe cqe;
+       u8 reserved[ETH_RX_CQE_GAP];
+};
+
 enum eth_rx_tunn_type {
        ETH_RX_NO_TUNN,
        ETH_RX_TUNN_GENEVE,
@@ -313,8 +340,8 @@ struct eth_tx_2nd_bd {
 
 /* The parsing information data for the third tx bd of a given packet. */
 struct eth_tx_data_3rd_bd {
-       __le16  lso_mss;
-       __le16  bitfields;
+       __le16 lso_mss;
+       __le16 bitfields;
 #define ETH_TX_DATA_3RD_BD_TCP_HDR_LEN_DW_MASK  0xF
 #define ETH_TX_DATA_3RD_BD_TCP_HDR_LEN_DW_SHIFT 0
 #define ETH_TX_DATA_3RD_BD_HDR_NBD_MASK         0xF
@@ -323,8 +350,8 @@ struct eth_tx_data_3rd_bd {
 #define ETH_TX_DATA_3RD_BD_START_BD_SHIFT       8
 #define ETH_TX_DATA_3RD_BD_RESERVED0_MASK       0x7F
 #define ETH_TX_DATA_3RD_BD_RESERVED0_SHIFT      9
-       u8      tunn_l4_hdr_start_offset_w;
-       u8      tunn_hdr_size_w;
+       u8 tunn_l4_hdr_start_offset_w;
+       u8 tunn_hdr_size_w;
 };
 
 /* The third tx bd of a given packet */
@@ -355,10 +382,10 @@ struct eth_tx_bd {
 };
 
 union eth_tx_bd_types {
-       struct eth_tx_1st_bd    first_bd;
-       struct eth_tx_2nd_bd    second_bd;
-       struct eth_tx_3rd_bd    third_bd;
-       struct eth_tx_bd        reg_bd;
+       struct eth_tx_1st_bd first_bd;
+       struct eth_tx_2nd_bd second_bd;
+       struct eth_tx_3rd_bd third_bd;
+       struct eth_tx_bd reg_bd;
 };
 
 /* Mstorm Queue Zone */
@@ -389,8 +416,8 @@ struct eth_db_data {
 #define ETH_DB_DATA_RESERVED_SHIFT    5
 #define ETH_DB_DATA_AGG_VAL_SEL_MASK  0x3
 #define ETH_DB_DATA_AGG_VAL_SEL_SHIFT 6
-       u8      agg_flags;
-       __le16  bd_prod;
+       u8 agg_flags;
+       __le16 bd_prod;
 };
 
 #endif /* __ETH_COMMON__ */