Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/657781/?format=api
{ "id": 657781, "url": "http://patchwork.ozlabs.org/api/patches/657781/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20160810181923.14875.61286.stgit@localhost6.localdomain6/", "project": { "id": 46, "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api", "name": "Intel Wired Ethernet development", "link_name": "intel-wired-lan", "list_id": "intel-wired-lan.osuosl.org", "list_email": "intel-wired-lan@osuosl.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20160810181923.14875.61286.stgit@localhost6.localdomain6>", "list_archive_url": null, "date": "2016-08-10T18:19:23", "name": "ixgbe: add support for geneve Rx offload", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "4f4a508b02226ab93899393207612666e6aafa3b", "submitter": { "id": 1670, "url": "http://patchwork.ozlabs.org/api/people/1670/?format=api", "name": "Tantilov, Emil S", "email": "emil.s.tantilov@intel.com" }, "delegate": { "id": 68, "url": "http://patchwork.ozlabs.org/api/users/68/?format=api", "username": "jtkirshe", "first_name": "Jeff", "last_name": "Kirsher", "email": "jeffrey.t.kirsher@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20160810181923.14875.61286.stgit@localhost6.localdomain6/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/657781/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/657781/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@lists.osuosl.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Received": [ "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3s8fWW64Glz9s9x\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 11 Aug 2016 04:17:27 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 22DCE22F02;\n\tWed, 10 Aug 2016 18:17:25 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id AWn1ODCClcbE; Wed, 10 Aug 2016 18:17:21 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 019C726659;\n\tWed, 10 Aug 2016 18:17:21 +0000 (UTC)", "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 805E01BFA86\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 10 Aug 2016 18:17:19 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 7ACF42F455\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 10 Aug 2016 18:17:19 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id F0qsGPiWsHSL for <intel-wired-lan@lists.osuosl.org>;\n\tWed, 10 Aug 2016 18:17:18 +0000 (UTC)", "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n\tby silver.osuosl.org (Postfix) with ESMTP id 3F59B26659\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 10 Aug 2016 18:17:18 +0000 (UTC)", "from fmsmga004.fm.intel.com ([10.253.24.48])\n\tby fmsmga104.fm.intel.com with ESMTP; 10 Aug 2016 11:17:10 -0700", "from estantil-desk3.jf.intel.com (HELO localhost6.localdomain6)\n\t([134.134.3.186])\n\tby fmsmga004.fm.intel.com with ESMTP; 10 Aug 2016 11:17:10 -0700" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.28,501,1464678000\"; d=\"scan'208\";a=\"153780367\"", "From": "Emil Tantilov <emil.s.tantilov@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Wed, 10 Aug 2016 11:19:23 -0700", "Message-ID": "<20160810181923.14875.61286.stgit@localhost6.localdomain6>", "User-Agent": "StGit/0.17.1-17-ge4e0", "MIME-Version": "1.0", "Subject": "[Intel-wired-lan] [PATCH] ixgbe: add support for geneve Rx offload", "X-BeenThere": "intel-wired-lan@lists.osuosl.org", "X-Mailman-Version": "2.1.18-1", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.lists.osuosl.org>", "List-Unsubscribe": "<http://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@lists.osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@lists.osuosl.org?subject=help>", "List-Subscribe": "<http://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=subscribe>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "intel-wired-lan-bounces@lists.osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@lists.osuosl.org>" }, "content": "Add geneve Rx offload support for x550em_a.\n\nThe implementation follows the vxlan code with the lower 16 bits of\nthe VXLANCTRL register holding the UDP port for VXLAN and the upper\nfor Geneve.\n\nDisabled NFS filters in the RFCTL register which allows us to simplify\nthe check for VXLAN and Geneve packets in ixgbe_rx_checksum().\n\nRemoved vxlan from the name of the callback functions and replaced it\nwith udp_tunnel which is more in line with the new API.\n\nSigned-off-by: Emil Tantilov <emil.s.tantilov@intel.com>\n---\n drivers/net/ethernet/intel/ixgbe/ixgbe.h | 4 -\n drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 174 ++++++++++++++++++-------\n drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 7 +\n 3 files changed, 134 insertions(+), 51 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h b/drivers/net/ethernet/intel/ixgbe/ixgbe.h\nindex 5628e2d..33c0250 100644\n--- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h\n+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h\n@@ -645,6 +645,7 @@ struct ixgbe_adapter {\n #define IXGBE_FLAG_RX_HWTSTAMP_ENABLED\t\tBIT(25)\n #define IXGBE_FLAG_RX_HWTSTAMP_IN_REGISTER\tBIT(26)\n #define IXGBE_FLAG_DCB_CAPABLE\t\t\tBIT(27)\n+#define IXGBE_FLAG_GENEVE_OFFLOAD_CAPABLE\tBIT(28)\n \n \tu32 flags2;\n #define IXGBE_FLAG2_RSC_CAPABLE\t\t\tBIT(0)\n@@ -658,7 +659,7 @@ struct ixgbe_adapter {\n #define IXGBE_FLAG2_RSS_FIELD_IPV6_UDP\t\tBIT(9)\n #define IXGBE_FLAG2_PTP_PPS_ENABLED\t\tBIT(10)\n #define IXGBE_FLAG2_PHY_INTERRUPT\t\tBIT(11)\n-#define IXGBE_FLAG2_VXLAN_REREG_NEEDED\t\tBIT(12)\n+#define IXGBE_FLAG2_UDP_TUN_REREG_NEEDED\tBIT(12)\n #define IXGBE_FLAG2_VLAN_PROMISC\t\tBIT(13)\n \n \t/* Tx fast path data */\n@@ -672,6 +673,7 @@ struct ixgbe_adapter {\n \n \t/* Port number used to identify VXLAN traffic */\n \t__be16 vxlan_port;\n+\t__be16 geneve_port;\n \n \t/* TX */\n \tstruct ixgbe_ring *tx_ring[MAX_TX_QUEUES] ____cacheline_aligned_in_smp;\ndiff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\nindex 9f2eed9..e06ca55 100644\n--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\n+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\n@@ -1495,7 +1495,6 @@ static inline void ixgbe_rx_checksum(struct ixgbe_ring *ring,\n \t\t\t\t struct sk_buff *skb)\n {\n \t__le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info;\n-\t__le16 hdr_info = rx_desc->wb.lower.lo_dword.hs_rss.hdr_info;\n \tbool encap_pkt = false;\n \n \tskb_checksum_none_assert(skb);\n@@ -1504,8 +1503,8 @@ static inline void ixgbe_rx_checksum(struct ixgbe_ring *ring,\n \tif (!(ring->netdev->features & NETIF_F_RXCSUM))\n \t\treturn;\n \n-\tif ((pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_VXLAN)) &&\n-\t (hdr_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_TUNNEL >> 16))) {\n+\t/* check for VXLAN and Geneve packets */\n+\tif (pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_VXLAN)) {\n \t\tencap_pkt = true;\n \t\tskb->encapsulation = 1;\n \t}\n@@ -3922,6 +3921,9 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)\n \trfctl &= ~IXGBE_RFCTL_RSC_DIS;\n \tif (!(adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED))\n \t\trfctl |= IXGBE_RFCTL_RSC_DIS;\n+\n+\t/* disable NFS filtering */\n+\trfctl |= (IXGBE_RFCTL_NFSW_DIS | IXGBE_RFCTL_NFSR_DIS);\n \tIXGBE_WRITE_REG(hw, IXGBE_RFCTL, rfctl);\n \n \t/* Program registers for the distribution of queues */\n@@ -4580,18 +4582,23 @@ static void ixgbe_napi_disable_all(struct ixgbe_adapter *adapter)\n \t}\n }\n \n-static void ixgbe_clear_vxlan_port(struct ixgbe_adapter *adapter)\n+static void ixgbe_clear_udp_tunnel_port(struct ixgbe_adapter *adapter, u32 mask)\n {\n-\tswitch (adapter->hw.mac.type) {\n-\tcase ixgbe_mac_X550:\n-\tcase ixgbe_mac_X550EM_x:\n-\tcase ixgbe_mac_x550em_a:\n-\t\tIXGBE_WRITE_REG(&adapter->hw, IXGBE_VXLANCTRL, 0);\n+\tstruct ixgbe_hw *hw = &adapter->hw;\n+\tu32 vxlanctrl;\n+\n+\tif (!(adapter->flags & (IXGBE_FLAG_VXLAN_OFFLOAD_CAPABLE |\n+\t\t\t\tIXGBE_FLAG_GENEVE_OFFLOAD_CAPABLE)))\n+\t\treturn;\n+\n+\tvxlanctrl = IXGBE_READ_REG(hw, IXGBE_VXLANCTRL) && ~mask;\n+\tIXGBE_WRITE_REG(hw, IXGBE_VXLANCTRL, vxlanctrl);\n+\n+\tif (mask & IXGBE_VXLANCTRL_VXLAN_UDPPORT_MASK)\n \t\tadapter->vxlan_port = 0;\n-\t\tbreak;\n-\tdefault:\n-\t\tbreak;\n-\t}\n+\n+\tif (mask & IXGBE_VXLANCTRL_GENEVE_UDPPORT_MASK)\n+\t\tadapter->geneve_port = 0;\n }\n \n #ifdef CONFIG_IXGBE_DCB\n@@ -5705,8 +5712,10 @@ static int ixgbe_sw_init(struct ixgbe_adapter *adapter)\n \t\tif (fwsm & IXGBE_FWSM_TS_ENABLED)\n \t\t\tadapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE;\n \t\tbreak;\n-\tcase ixgbe_mac_X550EM_x:\n \tcase ixgbe_mac_x550em_a:\n+\t\tadapter->flags |= IXGBE_FLAG_GENEVE_OFFLOAD_CAPABLE;\n+\t/* fall through */\n+\tcase ixgbe_mac_X550EM_x:\n #ifdef CONFIG_IXGBE_DCB\n \t\tadapter->flags &= ~IXGBE_FLAG_DCB_CAPABLE;\n #endif\n@@ -6138,7 +6147,7 @@ int ixgbe_open(struct net_device *netdev)\n \n \tixgbe_up_complete(adapter);\n \n-\tixgbe_clear_vxlan_port(adapter);\n+\tixgbe_clear_udp_tunnel_port(adapter, IXGBE_VXLANCTRL_ALL_UDPPORT_MASK);\n \tudp_tunnel_get_rx_info(netdev);\n \n \treturn 0;\n@@ -7217,9 +7226,9 @@ static void ixgbe_service_task(struct work_struct *work)\n \t\tixgbe_service_event_complete(adapter);\n \t\treturn;\n \t}\n-\tif (adapter->flags2 & IXGBE_FLAG2_VXLAN_REREG_NEEDED) {\n+\tif (adapter->flags2 & IXGBE_FLAG2_UDP_TUN_REREG_NEEDED) {\n \t\trtnl_lock();\n-\t\tadapter->flags2 &= ~IXGBE_FLAG2_VXLAN_REREG_NEEDED;\n+\t\tadapter->flags2 &= ~IXGBE_FLAG2_UDP_TUN_REREG_NEEDED;\n \t\tudp_tunnel_get_rx_info(adapter->netdev);\n \t\trtnl_unlock();\n \t}\n@@ -7659,6 +7668,10 @@ static void ixgbe_atr(struct ixgbe_ring *ring,\n \t\tif (adapter->vxlan_port &&\n \t\t udp_hdr(skb)->dest == adapter->vxlan_port)\n \t\t\thdr.network = skb_inner_network_header(skb);\n+\n+\t\tif (adapter->geneve_port &&\n+\t\t udp_hdr(skb)->dest == adapter->geneve_port)\n+\t\t\thdr.network = skb_inner_network_header(skb);\n \t}\n \n \t/* Currently only IPv4/IPv6 with TCP is supported */\n@@ -8792,10 +8805,23 @@ static int ixgbe_set_features(struct net_device *netdev,\n \tnetdev->features = features;\n \n \tif ((adapter->flags & IXGBE_FLAG_VXLAN_OFFLOAD_CAPABLE)) {\n-\t\tif (features & NETIF_F_RXCSUM)\n-\t\t\tadapter->flags2 |= IXGBE_FLAG2_VXLAN_REREG_NEEDED;\n-\t\telse\n-\t\t\tixgbe_clear_vxlan_port(adapter);\n+\t\tif (features & NETIF_F_RXCSUM) {\n+\t\t\tadapter->flags2 |= IXGBE_FLAG2_UDP_TUN_REREG_NEEDED;\n+\t\t} else {\n+\t\t\tu32 port_mask = IXGBE_VXLANCTRL_VXLAN_UDPPORT_MASK;\n+\n+\t\t\tixgbe_clear_udp_tunnel_port(adapter, port_mask);\n+\t\t}\n+\t}\n+\n+\tif ((adapter->flags & IXGBE_FLAG_GENEVE_OFFLOAD_CAPABLE)) {\n+\t\tif (features & NETIF_F_RXCSUM) {\n+\t\t\tadapter->flags2 |= IXGBE_FLAG2_UDP_TUN_REREG_NEEDED;\n+\t\t} else {\n+\t\t\tu32 port_mask = IXGBE_VXLANCTRL_GENEVE_UDPPORT_MASK;\n+\n+\t\t\tixgbe_clear_udp_tunnel_port(adapter, port_mask);\n+\t\t}\n \t}\n \n \tif (need_reset)\n@@ -8808,67 +8834,115 @@ static int ixgbe_set_features(struct net_device *netdev,\n }\n \n /**\n- * ixgbe_add_vxlan_port - Get notifications about VXLAN ports that come up\n+ * ixgbe_add_udp_tunnel_port - Get notifications about adding UDP tunnel ports\n * @dev: The port's netdev\n * @ti: Tunnel endpoint information\n **/\n-static void ixgbe_add_vxlan_port(struct net_device *dev,\n-\t\t\t\t struct udp_tunnel_info *ti)\n+static void ixgbe_add_udp_tunnel_port(struct net_device *dev,\n+\t\t\t\t struct udp_tunnel_info *ti)\n {\n \tstruct ixgbe_adapter *adapter = netdev_priv(dev);\n \tstruct ixgbe_hw *hw = &adapter->hw;\n \t__be16 port = ti->port;\n-\n-\tif (ti->type != UDP_TUNNEL_TYPE_VXLAN)\n-\t\treturn;\n+\tu32 port_shift = 0;\n+\tu32 reg;\n \n \tif (ti->sa_family != AF_INET)\n \t\treturn;\n \n-\tif (!(adapter->flags & IXGBE_FLAG_VXLAN_OFFLOAD_CAPABLE))\n-\t\treturn;\n+\tswitch (ti->type) {\n+\tcase UDP_TUNNEL_TYPE_VXLAN:\n+\t\tif (!(adapter->flags & IXGBE_FLAG_VXLAN_OFFLOAD_CAPABLE))\n+\t\t\treturn;\n \n-\tif (adapter->vxlan_port == port)\n-\t\treturn;\n+\t\tif (adapter->vxlan_port == port)\n+\t\t\treturn;\n+\n+\t\tif (adapter->vxlan_port) {\n+\t\t\tnetdev_info(dev,\n+\t\t\t\t \"VXLAN port %d set, not adding port %d\\n\",\n+\t\t\t\t ntohs(adapter->vxlan_port),\n+\t\t\t\t ntohs(port));\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tadapter->vxlan_port = port;\n+\t\tbreak;\n+\tcase UDP_TUNNEL_TYPE_GENEVE:\n+\t\tif (!(adapter->flags & IXGBE_FLAG_GENEVE_OFFLOAD_CAPABLE))\n+\t\t\treturn;\n+\n+\t\tif (adapter->geneve_port == port)\n+\t\t\treturn;\n+\n+\t\tif (adapter->geneve_port) {\n+\t\t\tnetdev_info(dev,\n+\t\t\t\t \"GENEVE port %d set, not adding port %d\\n\",\n+\t\t\t\t ntohs(adapter->geneve_port),\n+\t\t\t\t ntohs(port));\n+\t\t\treturn;\n+\t\t}\n \n-\tif (adapter->vxlan_port) {\n-\t\tnetdev_info(dev,\n-\t\t\t \"Hit Max num of VXLAN ports, not adding port %d\\n\",\n-\t\t\t ntohs(port));\n+\t\tport_shift = IXGBE_VXLANCTRL_GENEVE_UDPPORT_SHIFT;\n+\t\tadapter->geneve_port = port;\n+\t\tbreak;\n+\tdefault:\n \t\treturn;\n \t}\n \n-\tadapter->vxlan_port = port;\n-\tIXGBE_WRITE_REG(hw, IXGBE_VXLANCTRL, ntohs(port));\n+\treg = IXGBE_READ_REG(hw, IXGBE_VXLANCTRL) | ntohs(port) << port_shift;\n+\tIXGBE_WRITE_REG(hw, IXGBE_VXLANCTRL, reg);\n }\n \n /**\n- * ixgbe_del_vxlan_port - Get notifications about VXLAN ports that go away\n+ * ixgbe_del_udp_tunnel_port - Get notifications about removing UDP tunnel ports\n * @dev: The port's netdev\n * @ti: Tunnel endpoint information\n **/\n-static void ixgbe_del_vxlan_port(struct net_device *dev,\n-\t\t\t\t struct udp_tunnel_info *ti)\n+static void ixgbe_del_udp_tunnel_port(struct net_device *dev,\n+\t\t\t\t struct udp_tunnel_info *ti)\n {\n \tstruct ixgbe_adapter *adapter = netdev_priv(dev);\n+\tu32 port_mask;\n \n-\tif (ti->type != UDP_TUNNEL_TYPE_VXLAN)\n+\tif (ti->type != UDP_TUNNEL_TYPE_VXLAN &&\n+\t ti->type != UDP_TUNNEL_TYPE_GENEVE)\n \t\treturn;\n \n \tif (ti->sa_family != AF_INET)\n \t\treturn;\n \n-\tif (!(adapter->flags & IXGBE_FLAG_VXLAN_OFFLOAD_CAPABLE))\n-\t\treturn;\n+\tswitch (ti->type) {\n+\tcase UDP_TUNNEL_TYPE_VXLAN:\n+\t\tif (!(adapter->flags & IXGBE_FLAG_VXLAN_OFFLOAD_CAPABLE))\n+\t\t\treturn;\n \n-\tif (adapter->vxlan_port != ti->port) {\n-\t\tnetdev_info(dev, \"Port %d was not found, not deleting\\n\",\n-\t\t\t ntohs(ti->port));\n+\t\tif (adapter->vxlan_port != ti->port) {\n+\t\t\tnetdev_info(dev, \"VXLAN port %d not found\\n\",\n+\t\t\t\t ntohs(ti->port));\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tport_mask = IXGBE_VXLANCTRL_VXLAN_UDPPORT_MASK;\n+\t\tbreak;\n+\tcase UDP_TUNNEL_TYPE_GENEVE:\n+\t\tif (!(adapter->flags & IXGBE_FLAG_GENEVE_OFFLOAD_CAPABLE))\n+\t\t\treturn;\n+\n+\t\tif (adapter->geneve_port != ti->port) {\n+\t\t\tnetdev_info(dev, \"GENEVE port %d not found\\n\",\n+\t\t\t\t ntohs(ti->port));\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tport_mask = IXGBE_VXLANCTRL_GENEVE_UDPPORT_MASK;\n+\t\tbreak;\n+\tdefault:\n \t\treturn;\n \t}\n \n-\tixgbe_clear_vxlan_port(adapter);\n-\tadapter->flags2 |= IXGBE_FLAG2_VXLAN_REREG_NEEDED;\n+\tixgbe_clear_udp_tunnel_port(adapter, port_mask);\n+\tadapter->flags2 |= IXGBE_FLAG2_UDP_TUN_REREG_NEEDED;\n }\n \n static int ixgbe_ndo_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],\n@@ -9182,8 +9256,8 @@ static const struct net_device_ops ixgbe_netdev_ops = {\n \t.ndo_bridge_getlink\t= ixgbe_ndo_bridge_getlink,\n \t.ndo_dfwd_add_station\t= ixgbe_fwd_add,\n \t.ndo_dfwd_del_station\t= ixgbe_fwd_del,\n-\t.ndo_udp_tunnel_add\t= ixgbe_add_vxlan_port,\n-\t.ndo_udp_tunnel_del\t= ixgbe_del_vxlan_port,\n+\t.ndo_udp_tunnel_add\t= ixgbe_add_udp_tunnel_port,\n+\t.ndo_udp_tunnel_del\t= ixgbe_del_udp_tunnel_port,\n \t.ndo_features_check\t= ixgbe_features_check,\n };\n \ndiff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h\nindex 1248a99..5ff91b8 100644\n--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h\n+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h\n@@ -487,6 +487,13 @@ struct ixgbe_thermal_sensor_data {\n #define IXGBE_FHFT_EXT(_n)\t(0x09800 + ((_n) * 0x100)) /* Ext Flexible Host\n \t\t\t\t\t\t\t * Filter Table */\n \n+/* masks for accessing VXLAN and GENEVE UDP ports */\n+#define IXGBE_VXLANCTRL_VXLAN_UDPPORT_MASK 0x0000ffff /* VXLAN port */\n+#define IXGBE_VXLANCTRL_GENEVE_UDPPORT_MASK 0xffff0000 /* GENEVE port */\n+#define IXGBE_VXLANCTRL_ALL_UDPPORT_MASK 0xffffffff /* GENEVE/VXLAN */\n+\n+#define IXGBE_VXLANCTRL_GENEVE_UDPPORT_SHIFT 16\n+\n #define IXGBE_FLEXIBLE_FILTER_COUNT_MAX 4\n #define IXGBE_EXT_FLEXIBLE_FILTER_COUNT_MAX 2\n \n", "prefixes": [] }