History

qed: FW 8.42.2.0 HSI changes

This patch contains several HSI changes. The changes are part of features like RDMA VF and OVS, the patch also contains a fix to how the init code determines if the dmae is ready to be used.

Michal Kalderon committed 6 years ago

Commit 0500a701 parent 6459d937 files · +280 −154Browse files

Showing the changes to include/linux (2 of 7 files). Show all

Unified · Split

2 files
  1. include/linux/qed/common_hsi.h +12 −9
  2. include/linux/qed/eth_common.h +56 −22
include/linux/qed/common_hsi.h+12−9
@@ -76,7 +76,6 @@ · 75 unmodified lines
76 76
77#define FW_ASSERT_GENERAL_ATTN_IDX 3277#define FW_ASSERT_GENERAL_ATTN_IDX 32
78 78
79#define MAX_PINNED_CCFC 32
80 79
81/* Queue Zone sizes in bytes */80/* Queue Zone sizes in bytes */
82#define TSTORM_QZONE_SIZE 881#define TSTORM_QZONE_SIZE 8
@@ -139,10 +138,10 @@ · 56 unmodified lines
139#define MAX_NUM_VFS (MAX_NUM_VFS_K2)138#define MAX_NUM_VFS (MAX_NUM_VFS_K2)
140 139
141#define MAX_NUM_FUNCTIONS_BB (MAX_NUM_PFS_BB + MAX_NUM_VFS_BB)140#define MAX_NUM_FUNCTIONS_BB (MAX_NUM_PFS_BB + MAX_NUM_VFS_BB)
142#define MAX_NUM_FUNCTIONS (MAX_NUM_PFS + MAX_NUM_VFS)
143 141
144#define MAX_FUNCTION_NUMBER_BB (MAX_NUM_PFS + MAX_NUM_VFS_BB)142#define MAX_FUNCTION_NUMBER_BB (MAX_NUM_PFS + MAX_NUM_VFS_BB)
145#define MAX_FUNCTION_NUMBER (MAX_NUM_PFS + MAX_NUM_VFS)143#define MAX_FUNCTION_NUMBER_K2 (MAX_NUM_PFS + MAX_NUM_VFS_K2)
144#define MAX_NUM_FUNCTIONS (MAX_FUNCTION_NUMBER_K2)
146 145
147#define MAX_NUM_VPORTS_K2 (208)146#define MAX_NUM_VPORTS_K2 (208)
148#define MAX_NUM_VPORTS_BB (160)147#define MAX_NUM_VPORTS_BB (160)
@@ -229,6 +228,7 @@ · 80 unmodified lines
229#define DQ_XCM_TOE_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4228#define DQ_XCM_TOE_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4
230#define DQ_XCM_TOE_MORE_TO_SEND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG3229#define DQ_XCM_TOE_MORE_TO_SEND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG3
231#define DQ_XCM_TOE_LOCAL_ADV_WND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG4230#define DQ_XCM_TOE_LOCAL_ADV_WND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG4
231#define DQ_XCM_ROCE_ACK_EDPM_DORQ_SEQ_CMD DQ_XCM_AGG_VAL_SEL_WORD5
232 232
233/* UCM agg val selection (HW) */233/* UCM agg val selection (HW) */
234#define DQ_UCM_AGG_VAL_SEL_WORD0 0234#define DQ_UCM_AGG_VAL_SEL_WORD0 0
@@ -406,6 +406,7 @@ · 171 unmodified lines
406 406
407/* Number of Protocol Indices per Status Block */407/* Number of Protocol Indices per Status Block */
408#define PIS_PER_SB_E4 12408#define PIS_PER_SB_E4 12
409#define MAX_PIS_PER_SB PIS_PER_SB
409 410
410#define CAU_HC_STOPPED_STATE 3411#define CAU_HC_STOPPED_STATE 3
411#define CAU_HC_DISABLE_STATE 4412#define CAU_HC_DISABLE_STATE 4
@@ -436,8 +437,6 @@ · 24 unmodified lines
436#define IGU_MEM_PBA_MSIX_RESERVED_UPPER 0x03ff437#define IGU_MEM_PBA_MSIX_RESERVED_UPPER 0x03ff
437 438
438#define IGU_CMD_INT_ACK_BASE 0x0400439#define IGU_CMD_INT_ACK_BASE 0x0400
439#define IGU_CMD_INT_ACK_UPPER (IGU_CMD_INT_ACK_BASE + \
440 MAX_TOT_SB_PER_PATH - 1)
441#define IGU_CMD_INT_ACK_RESERVED_UPPER 0x05ff440#define IGU_CMD_INT_ACK_RESERVED_UPPER 0x05ff
442 441
443#define IGU_CMD_ATTN_BIT_UPD_UPPER 0x05f0442#define IGU_CMD_ATTN_BIT_UPD_UPPER 0x05f0
@@ -450,8 +449,6 @@ · 6 unmodified lines
450#define IGU_REG_SISR_MDPC_WOMASK_UPPER 0x05f6449#define IGU_REG_SISR_MDPC_WOMASK_UPPER 0x05f6
451 450
452#define IGU_CMD_PROD_UPD_BASE 0x0600451#define IGU_CMD_PROD_UPD_BASE 0x0600
453#define IGU_CMD_PROD_UPD_UPPER (IGU_CMD_PROD_UPD_BASE +\
454 MAX_TOT_SB_PER_PATH - 1)
455#define IGU_CMD_PROD_UPD_RESERVED_UPPER 0x07ff452#define IGU_CMD_PROD_UPD_RESERVED_UPPER 0x07ff
456 453
457/*****************/454/*****************/
@@ -741,6 +738,8 @@ enum protocol_type { · 283 unmodified lines
741 PROTOCOLID_PREROCE,738 PROTOCOLID_PREROCE,
742 PROTOCOLID_COMMON,739 PROTOCOLID_COMMON,
743 PROTOCOLID_RESERVED1,740 PROTOCOLID_RESERVED1,
741 PROTOCOLID_RDMA,
742 PROTOCOLID_SCSI,
744 MAX_PROTOCOL_TYPE743 MAX_PROTOCOL_TYPE
745};744};
746 745
@@ -761,6 +760,10 @@ union rdma_eqe_data { · 14 unmodified lines
761 struct rdma_eqe_destroy_qp rdma_destroy_qp_data;760 struct rdma_eqe_destroy_qp rdma_destroy_qp_data;
762};761};
763 762
763struct tstorm_queue_zone {
764 __le32 reserved[2];
765};
766
764/* Ustorm Queue Zone */767/* Ustorm Queue Zone */
765struct ustorm_eth_queue_zone {768struct ustorm_eth_queue_zone {
766 struct coalescing_timeset int_coalescing_timeset;769 struct coalescing_timeset int_coalescing_timeset;
@@ -883,8 +886,8 @@ struct db_l2_dpm_data { · 116 unmodified lines
883#define DB_L2_DPM_DATA_RESERVED0_SHIFT 27886#define DB_L2_DPM_DATA_RESERVED0_SHIFT 27
884#define DB_L2_DPM_DATA_SGE_NUM_MASK 0x7887#define DB_L2_DPM_DATA_SGE_NUM_MASK 0x7
885#define DB_L2_DPM_DATA_SGE_NUM_SHIFT 28888#define DB_L2_DPM_DATA_SGE_NUM_SHIFT 28
886#define DB_L2_DPM_DATA_GFS_SRC_EN_MASK 0x1889#define DB_L2_DPM_DATA_TGFS_SRC_EN_MASK 0x1
887#define DB_L2_DPM_DATA_GFS_SRC_EN_SHIFT 31890#define DB_L2_DPM_DATA_TGFS_SRC_EN_SHIFT 31
888};891};
889 892
890/* Structure for SGE in a DPM doorbell of type DPM_L2_BD */893/* Structure for SGE in a DPM doorbell of type DPM_L2_BD */
include/linux/qed/eth_common.h+56−22
@@ -38,9 +38,11 @@ · 37 unmodified lines
38/********************/38/********************/
39 39
40#define ETH_HSI_VER_MAJOR 340#define ETH_HSI_VER_MAJOR 3
41#define ETH_HSI_VER_MINOR 1041#define ETH_HSI_VER_MINOR 11
42 42
43#define ETH_HSI_VER_NO_PKT_LEN_TUNN 543#define ETH_HSI_VER_NO_PKT_LEN_TUNN 5
44/* Maximum number of pinned L2 connections (CIDs) */
45#define ETH_PINNED_CONN_MAX_NUM 32
44 46
45#define ETH_CACHE_LINE_SIZE 6447#define ETH_CACHE_LINE_SIZE 64
46#define ETH_RX_CQE_GAP 3248#define ETH_RX_CQE_GAP 32
@@ -61,6 +63,7 @@ · 14 unmodified lines
61#define ETH_TX_MIN_BDS_PER_TUNN_IPV6_WITH_EXT_PKT 363#define ETH_TX_MIN_BDS_PER_TUNN_IPV6_WITH_EXT_PKT 3
62#define ETH_TX_MIN_BDS_PER_IPV6_WITH_EXT_PKT 264#define ETH_TX_MIN_BDS_PER_IPV6_WITH_EXT_PKT 2
63#define ETH_TX_MIN_BDS_PER_PKT_W_LOOPBACK_MODE 265#define ETH_TX_MIN_BDS_PER_PKT_W_LOOPBACK_MODE 2
66#define ETH_TX_MIN_BDS_PER_PKT_W_VPORT_FORWARDING 4
64#define ETH_TX_MAX_NON_LSO_PKT_LEN (9700 - (4 + 4 + 12 + 8))67#define ETH_TX_MAX_NON_LSO_PKT_LEN (9700 - (4 + 4 + 12 + 8))
65#define ETH_TX_MAX_LSO_HDR_BYTES 51068#define ETH_TX_MAX_LSO_HDR_BYTES 510
66#define ETH_TX_LSO_WINDOW_BDS_NUM (18 - 1)69#define ETH_TX_LSO_WINDOW_BDS_NUM (18 - 1)
@@ -75,9 +78,8 @@ · 8 unmodified lines
75#define ETH_NUM_STATISTIC_COUNTERS_QUAD_VF_ZONE \78#define ETH_NUM_STATISTIC_COUNTERS_QUAD_VF_ZONE \
76 (ETH_NUM_STATISTIC_COUNTERS - 3 * MAX_NUM_VFS / 4)79 (ETH_NUM_STATISTIC_COUNTERS - 3 * MAX_NUM_VFS / 4)
77 80
78/* Maximum number of buffers, used for RX packet placement */
79#define ETH_RX_MAX_BUFF_PER_PKT 581#define ETH_RX_MAX_BUFF_PER_PKT 5
80#define ETH_RX_BD_THRESHOLD 1282#define ETH_RX_BD_THRESHOLD 16
81 83
82/* Num of MAC/VLAN filters */84/* Num of MAC/VLAN filters */
83#define ETH_NUM_MAC_FILTERS 51285#define ETH_NUM_MAC_FILTERS 512
@@ -96,24 +98,24 @@ · 12 unmodified lines
96#define ETH_RSS_ENGINE_NUM_BB 12798#define ETH_RSS_ENGINE_NUM_BB 127
97 99
98/* TPA constants */100/* TPA constants */
99#define ETH_TPA_MAX_AGGS_NUM 64101#define ETH_TPA_MAX_AGGS_NUM 64
100#define ETH_TPA_CQE_START_LEN_LIST_SIZE ETH_RX_MAX_BUFF_PER_PKT102#define ETH_TPA_CQE_START_BW_LEN_LIST_SIZE 2
101#define ETH_TPA_CQE_CONT_LEN_LIST_SIZE 6103#define ETH_TPA_CQE_CONT_LEN_LIST_SIZE 6
102#define ETH_TPA_CQE_END_LEN_LIST_SIZE 4104#define ETH_TPA_CQE_END_LEN_LIST_SIZE 4
103 105
104/* Control frame check constants */106/* Control frame check constants */
105#define ETH_CTL_FRAME_ETH_TYPE_NUM 4107#define ETH_CTL_FRAME_ETH_TYPE_NUM 4
106 108
107/* GFS constants */109/* GFS constants */
108#define ETH_GFT_TRASHCAN_VPORT 0x1FF /* GFT drop flow vport number */110#define ETH_GFT_TRASHCAN_VPORT 0x1FF /* GFT drop flow vport number */
109 111
110/* Destination port mode */112/* Destination port mode */
111enum dest_port_mode {113enum dst_port_mode {
112 DEST_PORT_PHY,114 DST_PORT_PHY,
113 DEST_PORT_LOOPBACK,115 DST_PORT_LOOPBACK,
114 DEST_PORT_PHY_LOOPBACK,116 DST_PORT_PHY_LOOPBACK,
115 DEST_PORT_DROP,117 DST_PORT_DROP,
116 MAX_DEST_PORT_MODE118 MAX_DST_PORT_MODE
117};119};
118 120
119/* Ethernet address type */121/* Ethernet address type */
@@ -167,8 +169,8 @@ struct eth_tx_data_2nd_bd { · 47 unmodified lines
167#define ETH_TX_DATA_2ND_BD_TUNN_INNER_L2_HDR_SIZE_W_SHIFT 0169#define ETH_TX_DATA_2ND_BD_TUNN_INNER_L2_HDR_SIZE_W_SHIFT 0
168#define ETH_TX_DATA_2ND_BD_TUNN_INNER_ETH_TYPE_MASK 0x3170#define ETH_TX_DATA_2ND_BD_TUNN_INNER_ETH_TYPE_MASK 0x3
169#define ETH_TX_DATA_2ND_BD_TUNN_INNER_ETH_TYPE_SHIFT 4171#define ETH_TX_DATA_2ND_BD_TUNN_INNER_ETH_TYPE_SHIFT 4
170#define ETH_TX_DATA_2ND_BD_DEST_PORT_MODE_MASK 0x3172#define ETH_TX_DATA_2ND_BD_DST_PORT_MODE_MASK 0x3
171#define ETH_TX_DATA_2ND_BD_DEST_PORT_MODE_SHIFT 6173#define ETH_TX_DATA_2ND_BD_DST_PORT_MODE_SHIFT 6
172#define ETH_TX_DATA_2ND_BD_START_BD_MASK 0x1174#define ETH_TX_DATA_2ND_BD_START_BD_MASK 0x1
173#define ETH_TX_DATA_2ND_BD_START_BD_SHIFT 8175#define ETH_TX_DATA_2ND_BD_START_BD_SHIFT 8
174#define ETH_TX_DATA_2ND_BD_TUNN_TYPE_MASK 0x3176#define ETH_TX_DATA_2ND_BD_TUNN_TYPE_MASK 0x3
@@ -244,8 +246,9 @@ struct eth_fast_path_rx_reg_cqe { · 69 unmodified lines
244 struct eth_tunnel_parsing_flags tunnel_pars_flags;246 struct eth_tunnel_parsing_flags tunnel_pars_flags;
245 u8 bd_num;247 u8 bd_num;
246 u8 reserved;248 u8 reserved;
247 __le16 flow_id;249 __le16 reserved2;
248 u8 reserved1[11];250 __le32 flow_id_or_resource_id;
251 u8 reserved1[7];
249 struct eth_pmd_flow_flags pmd_flags;252 struct eth_pmd_flow_flags pmd_flags;
250};253};
251 254
@@ -296,9 +299,10 @@ struct eth_fast_path_rx_tpa_start_cqe { · 44 unmodified lines
296 struct eth_tunnel_parsing_flags tunnel_pars_flags;299 struct eth_tunnel_parsing_flags tunnel_pars_flags;
297 u8 tpa_agg_index;300 u8 tpa_agg_index;
298 u8 header_len;301 u8 header_len;
299 __le16 ext_bd_len_list[ETH_TPA_CQE_START_LEN_LIST_SIZE];302 __le16 bw_ext_bd_len_list[ETH_TPA_CQE_START_BW_LEN_LIST_SIZE];
300 __le16 flow_id;303 __le16 reserved2;
301 u8 reserved;304 __le32 flow_id_or_resource_id;
305 u8 reserved[3];
302 struct eth_pmd_flow_flags pmd_flags;306 struct eth_pmd_flow_flags pmd_flags;
303};307};
304 308
@@ -407,6 +411,29 @@ struct eth_tx_3rd_bd { · 102 unmodified lines
407 struct eth_tx_data_3rd_bd data;411 struct eth_tx_data_3rd_bd data;
408};412};
409 413
414/* The parsing information data for the forth tx bd of a given packet. */
415struct eth_tx_data_4th_bd {
416 u8 dst_vport_id;
417 u8 reserved4;
418 __le16 bitfields;
419#define ETH_TX_DATA_4TH_BD_DST_VPORT_ID_VALID_MASK 0x1
420#define ETH_TX_DATA_4TH_BD_DST_VPORT_ID_VALID_SHIFT 0
421#define ETH_TX_DATA_4TH_BD_RESERVED1_MASK 0x7F
422#define ETH_TX_DATA_4TH_BD_RESERVED1_SHIFT 1
423#define ETH_TX_DATA_4TH_BD_START_BD_MASK 0x1
424#define ETH_TX_DATA_4TH_BD_START_BD_SHIFT 8
425#define ETH_TX_DATA_4TH_BD_RESERVED2_MASK 0x7F
426#define ETH_TX_DATA_4TH_BD_RESERVED2_SHIFT 9
427 __le16 reserved3;
428};
429
430/* The forth tx bd of a given packet */
431struct eth_tx_4th_bd {
432 struct regpair addr; /* Single continuous buffer */
433 __le16 nbytes; /* Number of bytes in this BD */
434 struct eth_tx_data_4th_bd data; /* Parsing information data */
435};
436
410/* Complementary information for the regular tx bd of a given packet */437/* Complementary information for the regular tx bd of a given packet */
411struct eth_tx_data_bd {438struct eth_tx_data_bd {
412 __le16 reserved0;439 __le16 reserved0;
@@ -431,6 +458,7 @@ union eth_tx_bd_types { · 18 unmodified lines
431 struct eth_tx_1st_bd first_bd;458 struct eth_tx_1st_bd first_bd;
432 struct eth_tx_2nd_bd second_bd;459 struct eth_tx_2nd_bd second_bd;
433 struct eth_tx_3rd_bd third_bd;460 struct eth_tx_3rd_bd third_bd;
461 struct eth_tx_4th_bd fourth_bd;
434 struct eth_tx_bd reg_bd;462 struct eth_tx_bd reg_bd;
435};463};
436 464
@@ -443,6 +471,12 @@ enum eth_tx_tunn_type { · 6 unmodified lines
443 MAX_ETH_TX_TUNN_TYPE471 MAX_ETH_TX_TUNN_TYPE
444};472};
445 473
474/* Mstorm Queue Zone */
475struct mstorm_eth_queue_zone {
476 struct eth_rx_prod_data rx_producers;
477 __le32 reserved[3];
478};
479
446/* Ystorm Queue Zone */480/* Ystorm Queue Zone */
447struct xstorm_eth_queue_zone {481struct xstorm_eth_queue_zone {
448 struct coalescing_timeset int_coalescing_timeset;482 struct coalescing_timeset int_coalescing_timeset;