summaryrefslogtreecommitdiffstats
path: root/build/external/patches/dpdk_20.02/0007-net-iavf-flexible-Rx-descriptor-definitions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build/external/patches/dpdk_20.02/0007-net-iavf-flexible-Rx-descriptor-definitions.patch')
-rw-r--r--build/external/patches/dpdk_20.02/0007-net-iavf-flexible-Rx-descriptor-definitions.patch226
1 files changed, 226 insertions, 0 deletions
diff --git a/build/external/patches/dpdk_20.02/0007-net-iavf-flexible-Rx-descriptor-definitions.patch b/build/external/patches/dpdk_20.02/0007-net-iavf-flexible-Rx-descriptor-definitions.patch
new file mode 100644
index 00000000000..07ad868f3e5
--- /dev/null
+++ b/build/external/patches/dpdk_20.02/0007-net-iavf-flexible-Rx-descriptor-definitions.patch
@@ -0,0 +1,226 @@
+From a7cbf4fabd46b0d02b651f5defac754e56e11e0e Mon Sep 17 00:00:00 2001
+From: Leyi Rong <leyi.rong@intel.com>
+Date: Wed, 8 Apr 2020 14:22:00 +0800
+Subject: [DPDK 07/17] net/iavf: flexible Rx descriptor definitions
+
+Add definitions for flexible Rx descriptor structures and macros.
+
+Signed-off-by: Leyi Rong <leyi.rong@intel.com>
+---
+ drivers/net/iavf/iavf_rxtx.h | 200 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 200 insertions(+)
+
+diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
+index 09b5bd99e..5e309631e 100644
+--- a/drivers/net/iavf/iavf_rxtx.h
++++ b/drivers/net/iavf/iavf_rxtx.h
+@@ -157,6 +157,206 @@ union iavf_tx_offload {
+ };
+ };
+
++/* Rx Flex Descriptors
++ * These descriptors are used instead of the legacy version descriptors
++ */
++union iavf_16b_rx_flex_desc {
++ struct {
++ __le64 pkt_addr; /* Packet buffer address */
++ __le64 hdr_addr; /* Header buffer address */
++ /* bit 0 of hdr_addr is DD bit */
++ } read;
++ struct {
++ /* Qword 0 */
++ u8 rxdid; /* descriptor builder profile ID */
++ u8 mir_id_umb_cast; /* mirror=[5:0], umb=[7:6] */
++ __le16 ptype_flex_flags0; /* ptype=[9:0], ff0=[15:10] */
++ __le16 pkt_len; /* [15:14] are reserved */
++ __le16 hdr_len_sph_flex_flags1; /* header=[10:0] */
++ /* sph=[11:11] */
++ /* ff1/ext=[15:12] */
++
++ /* Qword 1 */
++ __le16 status_error0;
++ __le16 l2tag1;
++ __le16 flex_meta0;
++ __le16 flex_meta1;
++ } wb; /* writeback */
++};
++
++union iavf_32b_rx_flex_desc {
++ struct {
++ __le64 pkt_addr; /* Packet buffer address */
++ __le64 hdr_addr; /* Header buffer address */
++ /* bit 0 of hdr_addr is DD bit */
++ __le64 rsvd1;
++ __le64 rsvd2;
++ } read;
++ struct {
++ /* Qword 0 */
++ u8 rxdid; /* descriptor builder profile ID */
++ u8 mir_id_umb_cast; /* mirror=[5:0], umb=[7:6] */
++ __le16 ptype_flex_flags0; /* ptype=[9:0], ff0=[15:10] */
++ __le16 pkt_len; /* [15:14] are reserved */
++ __le16 hdr_len_sph_flex_flags1; /* header=[10:0] */
++ /* sph=[11:11] */
++ /* ff1/ext=[15:12] */
++
++ /* Qword 1 */
++ __le16 status_error0;
++ __le16 l2tag1;
++ __le16 flex_meta0;
++ __le16 flex_meta1;
++
++ /* Qword 2 */
++ __le16 status_error1;
++ u8 flex_flags2;
++ u8 time_stamp_low;
++ __le16 l2tag2_1st;
++ __le16 l2tag2_2nd;
++
++ /* Qword 3 */
++ __le16 flex_meta2;
++ __le16 flex_meta3;
++ union {
++ struct {
++ __le16 flex_meta4;
++ __le16 flex_meta5;
++ } flex;
++ __le32 ts_high;
++ } flex_ts;
++ } wb; /* writeback */
++};
++
++/* Rx Flex Descriptor for Comms Package Profile
++ * RxDID Profile ID 16-21
++ * Flex-field 0: RSS hash lower 16-bits
++ * Flex-field 1: RSS hash upper 16-bits
++ * Flex-field 2: Flow ID lower 16-bits
++ * Flex-field 3: Flow ID upper 16-bits
++ * Flex-field 4: AUX0
++ * Flex-field 5: AUX1
++ */
++struct iavf_32b_rx_flex_desc_comms {
++ /* Qword 0 */
++ u8 rxdid;
++ u8 mir_id_umb_cast;
++ __le16 ptype_flexi_flags0;
++ __le16 pkt_len;
++ __le16 hdr_len_sph_flex_flags1;
++
++ /* Qword 1 */
++ __le16 status_error0;
++ __le16 l2tag1;
++ __le32 rss_hash;
++
++ /* Qword 2 */
++ __le16 status_error1;
++ u8 flexi_flags2;
++ u8 ts_low;
++ __le16 l2tag2_1st;
++ __le16 l2tag2_2nd;
++
++ /* Qword 3 */
++ __le32 flow_id;
++ union {
++ struct {
++ __le16 aux0;
++ __le16 aux1;
++ } flex;
++ __le32 ts_high;
++ } flex_ts;
++};
++
++/* Rx Flex Descriptor for Comms Package Profile
++ * RxDID Profile ID 22-23 (swap Hash and FlowID)
++ * Flex-field 0: Flow ID lower 16-bits
++ * Flex-field 1: Flow ID upper 16-bits
++ * Flex-field 2: RSS hash lower 16-bits
++ * Flex-field 3: RSS hash upper 16-bits
++ * Flex-field 4: AUX0
++ * Flex-field 5: AUX1
++ */
++struct iavf_32b_rx_flex_desc_comms_ovs {
++ /* Qword 0 */
++ u8 rxdid;
++ u8 mir_id_umb_cast;
++ __le16 ptype_flexi_flags0;
++ __le16 pkt_len;
++ __le16 hdr_len_sph_flex_flags1;
++
++ /* Qword 1 */
++ __le16 status_error0;
++ __le16 l2tag1;
++ __le32 flow_id;
++
++ /* Qword 2 */
++ __le16 status_error1;
++ u8 flexi_flags2;
++ u8 ts_low;
++ __le16 l2tag2_1st;
++ __le16 l2tag2_2nd;
++
++ /* Qword 3 */
++ __le32 rss_hash;
++ union {
++ struct {
++ __le16 aux0;
++ __le16 aux1;
++ } flex;
++ __le32 ts_high;
++ } flex_ts;
++};
++
++/* Receive Flex Descriptor profile IDs: There are a total
++ * of 64 profiles where profile IDs 0/1 are for legacy; and
++ * profiles 2-63 are flex profiles that can be programmed
++ * with a specific metadata (profile 7 reserved for HW)
++ */
++enum iavf_rxdid {
++ IAVF_RXDID_LEGACY_0 = 0,
++ IAVF_RXDID_LEGACY_1 = 1,
++ IAVF_RXDID_FLEX_NIC = 2,
++ IAVF_RXDID_FLEX_NIC_2 = 6,
++ IAVF_RXDID_HW = 7,
++ IAVF_RXDID_COMMS_GENERIC = 16,
++ IAVF_RXDID_COMMS_AUX_VLAN = 17,
++ IAVF_RXDID_COMMS_AUX_IPV4 = 18,
++ IAVF_RXDID_COMMS_AUX_IPV6 = 19,
++ IAVF_RXDID_COMMS_AUX_IPV6_FLOW = 20,
++ IAVF_RXDID_COMMS_AUX_TCP = 21,
++ IAVF_RXDID_COMMS_OVS_1 = 22,
++ IAVF_RXDID_COMMS_OVS_2 = 23,
++ IAVF_RXDID_LAST = 63,
++};
++
++enum iavf_rx_flex_desc_status_error_0_bits {
++ /* Note: These are predefined bit offsets */
++ IAVF_RX_FLEX_DESC_STATUS0_DD_S = 0,
++ IAVF_RX_FLEX_DESC_STATUS0_EOF_S,
++ IAVF_RX_FLEX_DESC_STATUS0_HBO_S,
++ IAVF_RX_FLEX_DESC_STATUS0_L3L4P_S,
++ IAVF_RX_FLEX_DESC_STATUS0_XSUM_IPE_S,
++ IAVF_RX_FLEX_DESC_STATUS0_XSUM_L4E_S,
++ IAVF_RX_FLEX_DESC_STATUS0_XSUM_EIPE_S,
++ IAVF_RX_FLEX_DESC_STATUS0_XSUM_EUDPE_S,
++ IAVF_RX_FLEX_DESC_STATUS0_LPBK_S,
++ IAVF_RX_FLEX_DESC_STATUS0_IPV6EXADD_S,
++ IAVF_RX_FLEX_DESC_STATUS0_RXE_S,
++ IAVF_RX_FLEX_DESC_STATUS0_CRCP_S,
++ IAVF_RX_FLEX_DESC_STATUS0_RSS_VALID_S,
++ IAVF_RX_FLEX_DESC_STATUS0_L2TAG1P_S,
++ IAVF_RX_FLEX_DESC_STATUS0_XTRMD0_VALID_S,
++ IAVF_RX_FLEX_DESC_STATUS0_XTRMD1_VALID_S,
++ IAVF_RX_FLEX_DESC_STATUS0_LAST /* this entry must be last!!! */
++};
++
++/* for iavf_32b_rx_flex_desc.ptype_flex_flags0 member */
++#define IAVF_RX_FLEX_DESC_PTYPE_M (0x3FF) /* 10-bits */
++
++/* for iavf_32b_rx_flex_desc.pkt_len member */
++#define IAVF_RX_FLX_DESC_PKT_LEN_M (0x3FFF) /* 14-bits */
++
+ int iavf_dev_rx_queue_setup(struct rte_eth_dev *dev,
+ uint16_t queue_idx,
+ uint16_t nb_desc,
+--
+2.17.1
+