diff options
author | Damjan Marion <damarion@cisco.com> | 2016-04-12 05:10:25 +0200 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2016-04-12 12:11:15 +0000 |
commit | c42552d4e0f358c5c473b64aafe3057a4914f71a (patch) | |
tree | a7c25add162a1010a8d8bd73be6d36d5795d1241 /dpdk/dpdk-16.04_patches/0001-e1000-Set-VLAN-Rx-Offload-tag-correctly.patch | |
parent | 254b036dff8ac1ffc663788766de999a2837dc7e (diff) |
Add support for DPDK 16.04 release, rebase some of 2.2.0 patches
Change-Id: I08292ba39dc6012c2edbcdaed0b02a8ebe07aec4
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'dpdk/dpdk-16.04_patches/0001-e1000-Set-VLAN-Rx-Offload-tag-correctly.patch')
-rw-r--r-- | dpdk/dpdk-16.04_patches/0001-e1000-Set-VLAN-Rx-Offload-tag-correctly.patch | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/dpdk/dpdk-16.04_patches/0001-e1000-Set-VLAN-Rx-Offload-tag-correctly.patch b/dpdk/dpdk-16.04_patches/0001-e1000-Set-VLAN-Rx-Offload-tag-correctly.patch new file mode 100644 index 00000000000..044a4179003 --- /dev/null +++ b/dpdk/dpdk-16.04_patches/0001-e1000-Set-VLAN-Rx-Offload-tag-correctly.patch @@ -0,0 +1,75 @@ +From c085c9f9a7332c63d002169581edc89ef99fdbb1 Mon Sep 17 00:00:00 2001 +From: Damjan Marion <damarion@cisco.com> +Date: Wed, 16 Dec 2015 03:21:21 +0100 +Subject: [PATCH 1/6] e1000: Set VLAN Rx Offload tag correctly + +--- + drivers/net/e1000/igb_rxtx.c | 30 ++++++++++++++++++++++++++++++ + lib/librte_ether/rte_ether.h | 3 +++ + 2 files changed, 33 insertions(+) + +diff --git a/drivers/net/e1000/igb_rxtx.c b/drivers/net/e1000/igb_rxtx.c +index 4a987e3..d6a4ce5 100644 +--- a/drivers/net/e1000/igb_rxtx.c ++++ b/drivers/net/e1000/igb_rxtx.c +@@ -904,6 +904,21 @@ eth_igb_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, + pkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(rxq, hlen_type_rss); + pkt_flags = pkt_flags | rx_desc_status_to_pkt_flags(staterr); + pkt_flags = pkt_flags | rx_desc_error_to_pkt_flags(staterr); ++ { ++ /* ++ * Check packet for VLAN ethernet types and set ++ * RX Offload flag PKT_RX_VLAN_PKT accordingly. ++ */ ++ struct ether_hdr *eth_hdr = ++ rte_pktmbuf_mtod(rxm, struct ether_hdr *); ++ u16 eth_type = rte_be_to_cpu_16(eth_hdr->ether_type); ++ ++ if ((eth_type == ETHER_TYPE_VLAN) || ++ (eth_type == ETHER_TYPE_VLAN_AD) || ++ (eth_type == ETHER_TYPE_VLAN_9100) || ++ (eth_type == ETHER_TYPE_VLAN_9200)) ++ pkt_flags |= PKT_RX_VLAN_PKT; ++ } + rxm->ol_flags = pkt_flags; + rxm->packet_type = igb_rxd_pkt_info_to_pkt_type(rxd.wb.lower. + lo_dword.hs_rss.pkt_info); +@@ -1140,6 +1155,21 @@ eth_igb_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, + pkt_flags = rx_desc_hlen_type_rss_to_pkt_flags(rxq, hlen_type_rss); + pkt_flags = pkt_flags | rx_desc_status_to_pkt_flags(staterr); + pkt_flags = pkt_flags | rx_desc_error_to_pkt_flags(staterr); ++ { ++ /* ++ * Check packet for VLAN ethernet types and set ++ * RX Offload flag PKT_RX_VLAN_PKT accordingly. ++ */ ++ struct ether_hdr *eth_hdr = ++ rte_pktmbuf_mtod(rxm, struct ether_hdr *); ++ u16 eth_type = rte_be_to_cpu_16(eth_hdr->ether_type); ++ ++ if ((eth_type == ETHER_TYPE_VLAN) || ++ (eth_type == ETHER_TYPE_VLAN_AD) || ++ (eth_type == ETHER_TYPE_VLAN_9100) || ++ (eth_type == ETHER_TYPE_VLAN_9200)) ++ pkt_flags |= PKT_RX_VLAN_PKT; ++ } + first_seg->ol_flags = pkt_flags; + first_seg->packet_type = igb_rxd_pkt_info_to_pkt_type(rxd.wb. + lower.lo_dword.hs_rss.pkt_info); +diff --git a/lib/librte_ether/rte_ether.h b/lib/librte_ether/rte_ether.h +index 1d62d8e..341121a 100644 +--- a/lib/librte_ether/rte_ether.h ++++ b/lib/librte_ether/rte_ether.h +@@ -332,6 +332,9 @@ struct vxlan_hdr { + #define ETHER_TYPE_1588 0x88F7 /**< IEEE 802.1AS 1588 Precise Time Protocol. */ + #define ETHER_TYPE_SLOW 0x8809 /**< Slow protocols (LACP and Marker). */ + #define ETHER_TYPE_TEB 0x6558 /**< Transparent Ethernet Bridging. */ ++#define ETHER_TYPE_VLAN_AD 0x88a8 /**< IEEE 802.1AD VLAN tagging. */ ++#define ETHER_TYPE_VLAN_9100 0x9100 /**< VLAN 0x9100 tagging. */ ++#define ETHER_TYPE_VLAN_9200 0x9200 /**< VLAN 0x9200 tagging. */ + + #define ETHER_VXLAN_HLEN (sizeof(struct udp_hdr) + sizeof(struct vxlan_hdr)) + /**< VXLAN tunnel header length. */ +-- +2.7.4 + |