From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0079.outbound.protection.outlook.com [104.47.32.79]) by dpdk.org (Postfix) with ESMTP id C8DFEAAC8 for ; Wed, 28 Mar 2018 02:16:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=3d56KKBfaAHPNjayl4+zdb23voV7ACxnYGauhZ8UtfU=; b=RgfC0EWJh1n2wNmmijsrZ26jCQcwXDzHWpv4R8J4I4jYQSIXqpCLwBWjkOw+ZriftTrrIOQsshcFUbNPCwoA0eFHHoRb62sdT1FGkDxZm9xu1ZxZf8W9jbiRMRSDbmTgq1Vm9DK1RHnAk+34nKq1k5VsPMjPUfM0JTDs9ALiCjg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by CY4PR0701MB3665.namprd07.prod.outlook.com (2603:10b6:910:93::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.631.10; Wed, 28 Mar 2018 00:16:14 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Harish Patil , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com Date: Tue, 27 Mar 2018 17:15:52 -0700 Message-Id: <1522196155-30972-2-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1522196155-30972-1-git-send-email-rasesh.mody@cavium.com> References: <1522196155-30972-1-git-send-email-rasesh.mody@cavium.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: CO2PR05CA0102.namprd05.prod.outlook.com (2603:10b6:104:1::28) To CY4PR0701MB3665.namprd07.prod.outlook.com (2603:10b6:910:93::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 13fc6126-ab2a-404d-57c6-08d594411e49 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3665; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3665; 3:Klqm0YzC1MAZXALRZKWT5D5G5KBs8CqEPKcFj3YDfuUDmeShTRDVOm9R0yFqSOMuq3QMinBc3HHg/TLHCdLWgfKYoAeH1WmTVJg0DvnE0sNHmCU4heSHtfJsfyNJHw6FNPkCogaMjwMKicWF9498EpwxRklru38tKhfjqz+NnnJcrLMZBUoare0ZokifrSw2PcQ42BeVfp3mWSZz6zutDR3nlbbsG/EG4JvQafw9eUHJMMB/s7Pc/K1Pxux/30RJ; 25:mRYlMcWrBD7E7uGtTM2l02KxbVm/aj3krP8vzjwxfL985ncStxQwe7CGMta8/g1Cbqok81/jHy+vbsura+t++ZPUoaWzIhucXt19dSpqN0OTIdduibdwl1u8mCDh0Z2uMqtyOB+6W1Q2VSsNfTU6+Pv+iwMAA/Mh0avqYASfPbibeA/CTHkOtR5i+DlC5kyGOlFA7EL14murQ/KsYhmBc4dk7WoRq200LUofkA1U0WNoXRRTGgbfhNhBPEgzQddt9OafNuUrxNNcRHYHEjmES0yTwwIt8Pq8HXDwA0lSf3CohhGvC/uYUi7v7hQrx2xjjFw4A0iX4YnzfNRqgU3rjA==; 31:Z087+n9oBDKwgrFnn9MnjNzPhIg7BlDzQjRgwomVorFT1iIBhOwNqxtcQvRMG6nc0z8SNlZDsePz+gP40ohCmj3U08/PDT/u8fqITTPUvKhwZlhrYw7TB/G4WmxkfY2k0bHmHws5RiSTmA1qEFCNrkXGG1P5sUYB1dMRJCpOc6R+OC92fv2ZYCdCnPcD64WLE6pVjJ6ltO9a8Cyc+X2UiGGKJYyTzpqFJu8D11yJhMc= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3665: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3665; 20:kQ73f1X7l2+gdagVL2jrHiBpiGsqFzF6m2NC+qhTOcVyxEiajfExPfmy2Q6zyf3ttOFRJ36sSJ4clCiXmETrkg0oxxkFca2sZCZ+BgjqwqfNaL501eIcRFZkuk8YR6fz2+D0OSh0xqpZR6lYzA0CoFSkRVbCyx4oAS9Ge8CHfasjKTz5kccI7Eqc+3fkgQ2AvskZctQ8iIRlqDskDviktiKyOpoqzRPBmbf8JIaRZo3OyX1nv38a+brW4CzogRlyJuelynHWnVQVndpTuibpblLQsnJMn6jyh6lyYHtEP1zNz5c2ga7r6syqyU0w+ttfuu3VTeLQb7xO/nis4Qb9uvEVxiLmc6e9IbPGHDD1eB+P61gKeBVyNnsr3uvFWVjesVQ6sSq2AUstqNqngRFWogDHTwKnSpxzgkXwykmqSnmD9c93LXETeZvY+EJcfAGACKx+M82OQpgbrMfT4k9SyMAgq79fibI6/XRBo/j5JS76Yrgg1lr1u9wD7IM5Gk9N; 4:WXrQ7crN1V9+/nWmResQgdiG7nwoIekb9NCQBssKHJjHlmD2yKhAkuXDTB/JzLILkryG3uCt2mdYo0eRqz/q7UHR1OX+Wm6ENU/b6tJ2Y1FthzusS/hvEWpJoyrun2sW6W9xM5uEf7iXpxKnmC9rQB63DoEoHtK929vcvLOAnrL499ufrWAbw26tYzmjvdxVZhO1Po1dPHngW1NR46UCglzx4cokdniNyp43AiruI6axw2OYmk0zU6T2uVKPz+jjsRheUTZTAqtX3Rd4k834lg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231221)(944501327)(52105095)(10201501046)(93006095)(93001095)(3002001)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:CY4PR0701MB3665; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3665; X-Forefront-PRVS: 06259BA5A2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(376002)(39380400002)(39860400002)(189003)(199004)(2906002)(107886003)(48376002)(106356001)(50466002)(6116002)(16526019)(26005)(186003)(3846002)(68736007)(2351001)(316002)(2361001)(105586002)(4720700003)(16586007)(50226002)(72206003)(478600001)(69596002)(36756003)(21086003)(6666003)(25786009)(55016002)(7736002)(6916009)(53936002)(486005)(8936002)(81166006)(81156014)(305945005)(8676002)(476003)(956004)(76176011)(386003)(2616005)(486005)(4326008)(52116002)(59450400001)(47776003)(66066001)(446003)(11346002)(5660300001)(86362001)(51416003)(97736004)(575784001)(7696005); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3665; H:cavium.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3665; 23:rP+ZA7YgfgiYeUUbE2K8tNVHT6LqSppwwQeKdZY?= =?us-ascii?Q?95PM9P7qMM12i6Cg9CaykYvTiIwsRh77HoaSe+36pkX2NOzI5JpkDnc843j2?= =?us-ascii?Q?8Wk6X7Ow3HEItqHW8H3f1XyUWyk4eXw86DCrQyhWwn361IlW2TZwmGfP0bEH?= =?us-ascii?Q?jHa/Ctjk00EEG/ioshRSYVbxWAHNwIqpIYkRwODWDd/wFexM3lYpBIA1JO9h?= =?us-ascii?Q?V1TQJK0cHLliY0Ja9K/KhQaFnCgm5svXhdk7cdAyR3o4EmuN26L24fzU/HL9?= =?us-ascii?Q?pyNH2edP36iZP6LZASdTpfi9sOe48lYy9/Kb7GeXqo4/jK72gGSODB0eZZuT?= =?us-ascii?Q?3dMfYMHszj0hLixoC7Mr0QyNfWyJpEs+AZ8EFZ5JS/KVaifKKgO+GMrAzd5Q?= =?us-ascii?Q?ZIf7EPmIbWnxFDTa5Kop8XpaUbCAtRUSJFDiry0/AvH31t9rDkSy0Ir9rKJR?= =?us-ascii?Q?y/ghcZhwnEjIH3WklnFW3vWmXA90ujuoEHuL5rfrWwbrBKxnF1+CT8hGGV88?= =?us-ascii?Q?wcDxqgyjD2EMLSiKk/SXp7Jn+Hj523tRFlm3r/mt9j93aym2XTKJsaPwF9sS?= =?us-ascii?Q?HANUIScYS3tCsEt7/UdXMF5ECLeRF7jQd0HMPDk6sWk9GLUPoEF0aV82e2Ef?= =?us-ascii?Q?WKCDn64PVvRIUJOg6kNzk5jmmGYzhv9aOcCsAki+tvqB12YAWdSvz04CqWab?= =?us-ascii?Q?0NJg35HSWKMIu6A5inTzc/eEHJRpS9v2pJEDRHAm3reKC5vi3RFpxVsdmkCh?= =?us-ascii?Q?t76raVoHMQJofeJHSyf/V7Qf5oDwT7fd/YWwSNKDhExq7n26UrzleOxGf+XG?= =?us-ascii?Q?PPyiUC5nHScrcJGzNZ2fZkUEMhfOl5vihMOxofe12BqgetOShA1pt9EZWh7x?= =?us-ascii?Q?IIcIwUa73UhbOksRzLwmIlVvfEtujZCA/Qis9tWblAIbA5CDU+jlrNhXQd+E?= =?us-ascii?Q?zywmZGg4Abde1jVTrai+TlBpLTbn92gUtmxGnoE3ZmuSak+XhIr5f53UmV4t?= =?us-ascii?Q?CkCQ7OE5Z4UNP/NnY3Nh44H6OaYuGL+mvWn8quXdV8cDGu7JQPrGkKQ/rLGr?= =?us-ascii?Q?uqv/NCKj4s7pDzMTvkmBTWJIr39lGf+xIKgURjOuoiPjno6e2TnpH/3Keboc?= =?us-ascii?Q?cSJQR8fn8ZPGwThpbHfKM9c81lckGANk6KVowH7o01nWV/u0am0zPs0qWWzY?= =?us-ascii?Q?9BlqfEEGp3kymWubDuUm6X6fg5qDHMWy3acP6/86kopGvxxuuH62qfAJ1fGt?= =?us-ascii?Q?mnL3rlHK4yXx5Tegb3Z74BR+AtMNGYRAElg1ZDjA24FJE7i0AFWWR6lA5AvJ?= =?us-ascii?Q?XByDDZ3jDAkJKcUuS/UNLqlWpVfFAx7JYKzf5j1VTzzRptKMyy0aaouVNGKf?= =?us-ascii?Q?VQdm6+eVawnRTxXoV1Skm9qdzZlk=3D?= X-Microsoft-Antispam-Message-Info: Zyn1OpOTuAz77/9tbxjPIB6FRTtvMIcdls3/DG8KDIYY2n/xYlMpow2PF4sl4uQibkCxvIWAHy/xzd90m5BRalB70xBTHebnoZJUI+V4RPki1M7qvGgX6ORko1Oq2y1CqwRENhgaCf4y6VgNP/MQvvQ3mJgZKC5SC96yrSEdkiXTaWtcHxciLRqO6XNACT8z X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3665; 6:QbMtH73XKRVzkWD0woo34yiKSI4mKeLasQQchuPm/cRhjGkj0iqwlhEbhKEqpPJwwKllPeU3dojnMP5zfm0NSzEOStwbG0hOyP07Xee48S0fmldC/TJL0nxauEjUFXknvKh3ge1R8Qnyeqxt4SE2DwYf8qFdBDVYSlvFf3JgOCC/qX+f7E60GaXbVcI9B1d1AT5XOS5dqvxnYWqMQS3vFYg2Xk1ExcuiC0mZMvnVbcQRizJcoqLv0ogNaDDLOqKnsMuTQqWPnKXVFNM83g/3l/EWHQv9Uoan14Y+QkxyBT/Gwpb6PU4cJKQE7Wxbj5lFmZjpvKyNBcnzIxffUN2x/UZmdvLLIgdhfK9WooYSvwcUYlhrtlqwFzQ6+1bYq5iqfwi95mcCci4vpVgIfhgucRA6Eq1OQEK4uT42CfaPg5cFnnzo8onDNQ2BeejUvGb6f5Y6h5AwhMkV1m/qPTW6zA==; 5:xekjC+dZaEZE2ZSboWb3CT0VzWyeUrECPa3rMUCdAYvbaZlWCoR2aSxxBQL9IfwBcVFcLejDDEf9+8A5GVu+enozvip9mPlrFbk/b6ll/L4Voc7FP/Q5zU/Ozsjgpd1lunj8qcFVxhBjHRSHkTICVYtIGtOYmRWu5+mOqIeIoBM=; 24:svp5Z1Kj2ap05y+QWPHCISCSmAvR/ye0LQxCSxXbMh74Vk9BE2GUIUf4u4pG4UAA3BAidaYlyi8jxP++XQnxmIJgQOeg95OF6d7XuyAfRZM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3665; 7:FM9hPL7qq2uEefEMVQSiTiOPzF7KHosuSMsITzDSN2y96D1Zr3xCn8JcRygLCDK4q9ucuSP+t0WsMaF0R28HQI1hy2UIC2dSdmP18PAo4XFywrjZe7A9EUMWBlrPxyVl78YN0/cb//ZlOht6wSR58WcqhZpcewkIIAG0o+0jkNndv29U48qbEbIcEH9CdKRa2Y5+t3w2syk8Y1h5hTfyHfpmgP6m3bsoR9dNsoJuqggZc4zICbMws7Uehn6kGPbU X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2018 00:16:14.1379 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 13fc6126-ab2a-404d-57c6-08d594411e49 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3665 Subject: [dpdk-dev] [PATCH 2/5] net/qede: enable IPGRE offload support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Mar 2018 00:16:16 -0000 From: Harish Patil Signed-off-by: Harish Patil --- drivers/net/qede/qede_ethdev.c | 49 ++++++++++++++++++++++++++++++++++------ drivers/net/qede/qede_ethdev.h | 7 +++--- drivers/net/qede/qede_rxtx.c | 14 +++++------- drivers/net/qede/qede_rxtx.h | 3 ++- 4 files changed, 54 insertions(+), 19 deletions(-) diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 6a51e3d..f25fb91 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -782,6 +782,36 @@ static void qede_set_ucast_cmn_params(struct ecore_filter_ucast *ucast) } static int +qede_ipgre_enable(struct rte_eth_dev *eth_dev, uint8_t clss, + bool enable) +{ + struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); + struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); + enum _ecore_status_t rc = ECORE_INVAL; + struct ecore_tunnel_info tunn; + + memset(&tunn, 0, sizeof(struct ecore_tunnel_info)); + tunn.ip_gre.b_update_mode = true; + tunn.ip_gre.b_mode_enabled = enable; + tunn.ip_gre.tun_cls = clss; + tunn.ip_gre.tun_cls = clss; + tunn.b_update_rx_cls = true; + tunn.b_update_tx_cls = true; + + rc = qede_tunnel_update(qdev, &tunn); + if (rc == ECORE_SUCCESS) { + qdev->ipgre.enable = enable; + DP_INFO(edev, "IPGRE is %s\n", + enable ? "enabled" : "disabled"); + } else { + DP_ERR(edev, "Failed to update tunn_clss %u\n", + clss); + } + + return rc; +} + +static int qede_tunn_enable(struct rte_eth_dev *eth_dev, uint8_t clss, enum rte_eth_tunnel_type tunn_type, bool enable) { @@ -794,6 +824,9 @@ static void qede_set_ucast_cmn_params(struct ecore_filter_ucast *ucast) case RTE_TUNNEL_TYPE_GENEVE: rc = qede_geneve_enable(eth_dev, clss, enable); break; + case RTE_TUNNEL_TYPE_IP_IN_GRE: + rc = qede_ipgre_enable(eth_dev, clss, enable); + break; default: rc = -EINVAL; break; @@ -2078,6 +2111,7 @@ static int qede_flow_ctrl_get(struct rte_eth_dev *eth_dev, RTE_PTYPE_TUNNEL_VXLAN, RTE_PTYPE_L4_FRAG, RTE_PTYPE_TUNNEL_GENEVE, + RTE_PTYPE_TUNNEL_GRE, /* Inner */ RTE_PTYPE_INNER_L2_ETHER, RTE_PTYPE_INNER_L2_ETHER_VLAN, @@ -2501,7 +2535,6 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) ECORE_TUNN_CLSS_MAC_VLAN, false); break; - case RTE_TUNNEL_TYPE_GENEVE: if (qdev->geneve.udp_port != tunnel_udp->udp_port) { DP_ERR(edev, "UDP port %u doesn't exist\n", @@ -2591,7 +2624,6 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) qdev->vxlan.udp_port = udp_port; break; - case RTE_TUNNEL_TYPE_GENEVE: if (qdev->geneve.udp_port == tunnel_udp->udp_port) { DP_INFO(edev, @@ -2629,7 +2661,6 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) qdev->geneve.udp_port = udp_port; break; - default: return ECORE_INVAL; } @@ -2795,7 +2826,8 @@ static void qede_get_ecore_tunn_params(uint32_t filter, uint32_t *type, qdev->geneve.filter_type = conf->filter_type; } - if (!qdev->vxlan.enable || !qdev->geneve.enable) + if (!qdev->vxlan.enable || !qdev->geneve.enable || + !qdev->ipgre.enable) return qede_tunn_enable(eth_dev, clss, conf->tunnel_type, true); @@ -2831,15 +2863,14 @@ int qede_dev_filter_ctrl(struct rte_eth_dev *eth_dev, switch (filter_conf->tunnel_type) { case RTE_TUNNEL_TYPE_VXLAN: case RTE_TUNNEL_TYPE_GENEVE: + case RTE_TUNNEL_TYPE_IP_IN_GRE: DP_INFO(edev, "Packet steering to the specified Rx queue" " is not supported with UDP tunneling"); return(qede_tunn_filter_config(eth_dev, filter_op, filter_conf)); - /* Place holders for future tunneling support */ case RTE_TUNNEL_TYPE_TEREDO: case RTE_TUNNEL_TYPE_NVGRE: - case RTE_TUNNEL_TYPE_IP_IN_GRE: case RTE_L2_TUNNEL_TYPE_E_TAG: DP_ERR(edev, "Unsupported tunnel type %d\n", filter_conf->tunnel_type); @@ -3138,19 +3169,23 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf) /* VF tunnel offloads is enabled by default in PF driver */ adapter->vxlan.num_filters = 0; adapter->geneve.num_filters = 0; + adapter->ipgre.num_filters = 0; if (is_vf) { adapter->vxlan.enable = true; adapter->vxlan.filter_type = ETH_TUNNEL_FILTER_IMAC | ETH_TUNNEL_FILTER_IVLAN; adapter->vxlan.udp_port = QEDE_VXLAN_DEF_PORT; adapter->geneve.enable = true; - adapter->geneve.filter_type = ETH_TUNNEL_FILTER_IMAC | ETH_TUNNEL_FILTER_IVLAN; adapter->geneve.udp_port = QEDE_GENEVE_DEF_PORT; + adapter->ipgre.enable = true; + adapter->ipgre.filter_type = ETH_TUNNEL_FILTER_IMAC | + ETH_TUNNEL_FILTER_IVLAN; } else { adapter->vxlan.enable = false; adapter->geneve.enable = false; + adapter->ipgre.enable = false; } DP_INFO(edev, "MAC address : %02x:%02x:%02x:%02x:%02x:%02x\n", diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h index 23f7e0e..baae22d 100644 --- a/drivers/net/qede/qede_ethdev.h +++ b/drivers/net/qede/qede_ethdev.h @@ -170,7 +170,7 @@ struct qede_fdir_info { #define QEDE_VXLAN_DEF_PORT (4789) #define QEDE_GENEVE_DEF_PORT (6081) -struct qede_udp_tunn { +struct qede_tunn_params { bool enable; uint16_t num_filters; uint16_t filter_type; @@ -205,8 +205,9 @@ struct qede_dev { SLIST_HEAD(uc_list_head, qede_ucast_entry) uc_list_head; uint16_t num_uc_addr; bool handle_hw_err; - struct qede_udp_tunn vxlan; - struct qede_udp_tunn geneve; + struct qede_tunn_params vxlan; + struct qede_tunn_params geneve; + struct qede_tunn_params ipgre; struct qede_fdir_info fdir_info; bool vlan_strip_flg; char drv_ver[QEDE_PMD_DRV_VER_STR_SIZE]; diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c index e9fe46c..20c10be 100644 --- a/drivers/net/qede/qede_rxtx.c +++ b/drivers/net/qede/qede_rxtx.c @@ -1837,17 +1837,14 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) * offloads. Don't rely on pkt_type marked by Rx, instead use * tx_ol_flags to decide. */ - if (((tx_ol_flags & PKT_TX_TUNNEL_MASK) == - PKT_TX_TUNNEL_VXLAN) || - ((tx_ol_flags & PKT_TX_TUNNEL_MASK) == - PKT_TX_TUNNEL_MPLSINUDP) || - ((tx_ol_flags & PKT_TX_TUNNEL_MASK) == - PKT_TX_TUNNEL_GENEVE)) { + tunn_flg = !!(tx_ol_flags & PKT_TX_TUNNEL_MASK); + + if (tunn_flg) { /* Check against max which is Tunnel IPv6 + ext */ if (unlikely(txq->nb_tx_avail < ETH_TX_MIN_BDS_PER_TUNN_IPV6_WITH_EXT_PKT)) break; - tunn_flg = true; + /* First indicate its a tunnel pkt */ bd1_bf |= ETH_TX_DATA_1ST_BD_TUNN_FLAG_MASK << ETH_TX_DATA_1ST_BD_TUNN_FLAG_SHIFT; @@ -1986,7 +1983,8 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags) * csum offload is requested then we need to force * recalculation of L4 tunnel header csum also. */ - if (tunn_flg) { + if (tunn_flg && ((tx_ol_flags & PKT_TX_TUNNEL_MASK) != + PKT_TX_TUNNEL_GRE)) { bd1_bd_flags_bf |= ETH_TX_1ST_BD_FLAGS_TUNN_L4_CSUM_MASK << ETH_TX_1ST_BD_FLAGS_TUNN_L4_CSUM_SHIFT; diff --git a/drivers/net/qede/qede_rxtx.h b/drivers/net/qede/qede_rxtx.h index a2dc9e7..3c66df0 100644 --- a/drivers/net/qede/qede_rxtx.h +++ b/drivers/net/qede/qede_rxtx.h @@ -151,7 +151,8 @@ PKT_TX_VLAN_PKT | \ PKT_TX_TUNNEL_VXLAN | \ PKT_TX_TUNNEL_GENEVE | \ - PKT_TX_TUNNEL_MPLSINUDP) + PKT_TX_TUNNEL_MPLSINUDP | \ + PKT_TX_TUNNEL_GRE) #define QEDE_TX_OFFLOAD_NOTSUP_MASK \ (PKT_TX_OFFLOAD_MASK ^ QEDE_TX_OFFLOAD_MASK) -- 1.7.10.3