From 9d170216480960b4ed85d63d4a447ec0d270ad6c Mon Sep 17 00:00:00 2001 From: Qiming Yang Date: Fri, 5 Apr 2019 17:05:32 +0800 Subject: [PATCH] net/i40e: support VXLAN-GPE Add new protocol type VXLAN-GPE support for UDP tunnel. inner IP/TCP/UDP checksum and RSS configuration shared the same implementation of VXLAN. Signed-off-by: Qiming Yang Reviewed-by: Ferruh Yigit Acked-by: Qi Zhang --- doc/guides/rel_notes/release_19_05.rst | 6 ++++++ drivers/net/i40e/i40e_ethdev.c | 13 +++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/doc/guides/rel_notes/release_19_05.rst b/doc/guides/rel_notes/release_19_05.rst index 2acb42e456..555acaa288 100644 --- a/doc/guides/rel_notes/release_19_05.rst +++ b/doc/guides/rel_notes/release_19_05.rst @@ -130,6 +130,12 @@ New Features * Added Safe Mode support. * Supported RSS for UPD/TCP/SCTP+IPV4/IPV6 packets. +* **Updated the i40e driver.** + + New features for PF: + + * Added support for VXLAN-GPE packet. + * **Updated the QuickAssist Technology PMD.** Added support for AES-XTS with 128 and 256 bit AES keys. diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index b031bf4c62..f382013c41 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -8370,7 +8370,7 @@ i40e_get_vxlan_port_idx(struct i40e_pf *pf, uint16_t port) } static int -i40e_add_vxlan_port(struct i40e_pf *pf, uint16_t port) +i40e_add_vxlan_port(struct i40e_pf *pf, uint16_t port, int udp_type) { int idx, ret; uint8_t filter_idx; @@ -8393,7 +8393,7 @@ i40e_add_vxlan_port(struct i40e_pf *pf, uint16_t port) return -ENOSPC; } - ret = i40e_aq_add_udp_tunnel(hw, port, I40E_AQC_TUNNEL_TYPE_VXLAN, + ret = i40e_aq_add_udp_tunnel(hw, port, udp_type, &filter_idx, NULL); if (ret < 0) { PMD_DRV_LOG(ERR, "Failed to add VXLAN UDP port %d", port); @@ -8461,9 +8461,13 @@ i40e_dev_udp_tunnel_port_add(struct rte_eth_dev *dev, switch (udp_tunnel->prot_type) { case RTE_TUNNEL_TYPE_VXLAN: - ret = i40e_add_vxlan_port(pf, udp_tunnel->udp_port); + ret = i40e_add_vxlan_port(pf, udp_tunnel->udp_port, + I40E_AQC_TUNNEL_TYPE_VXLAN); + break; + case RTE_TUNNEL_TYPE_VXLAN_GPE: + ret = i40e_add_vxlan_port(pf, udp_tunnel->udp_port, + I40E_AQC_TUNNEL_TYPE_VXLAN_GPE); break; - case RTE_TUNNEL_TYPE_GENEVE: case RTE_TUNNEL_TYPE_TEREDO: PMD_DRV_LOG(ERR, "Tunnel type is not supported now."); @@ -8492,6 +8496,7 @@ i40e_dev_udp_tunnel_port_del(struct rte_eth_dev *dev, switch (udp_tunnel->prot_type) { case RTE_TUNNEL_TYPE_VXLAN: + case RTE_TUNNEL_TYPE_VXLAN_GPE: ret = i40e_del_vxlan_port(pf, udp_tunnel->udp_port); break; case RTE_TUNNEL_TYPE_GENEVE: -- 2.20.1