Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1007771/?format=api
{ "id": 1007771, "url": "http://patchwork.ozlabs.org/api/patches/1007771/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/6a993b48a235e7a65d522642a74a28a7391ad964.1543944510.git.mirq-linux@rere.qmqm.pl/", "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": "<6a993b48a235e7a65d522642a74a28a7391ad964.1543944510.git.mirq-linux@rere.qmqm.pl>", "list_archive_url": null, "date": "2018-12-04T17:31:14", "name": "[v3,1/2] i40e: fix VLAN.TCI == 0 RX HW offload", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "a8c5768066b4fd7c291b5437764d053794a70a86", "submitter": { "id": 524, "url": "http://patchwork.ozlabs.org/api/people/524/?format=api", "name": "Michał Mirosław", "email": "mirq-linux@rere.qmqm.pl" }, "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/6a993b48a235e7a65d522642a74a28a7391ad964.1543944510.git.mirq-linux@rere.qmqm.pl/mbox/", "series": [ { "id": 79724, "url": "http://patchwork.ozlabs.org/api/series/79724/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=79724", "date": "2018-12-04T17:31:15", "name": "[v3,1/2] i40e: fix VLAN.TCI == 0 RX HW offload", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/79724/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1007771/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1007771/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@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" ], "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.138; helo=whitealder.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)", "ozlabs.org; dmarc=none (p=none dis=none)\n\theader.from=rere.qmqm.pl", "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=rere.qmqm.pl header.i=@rere.qmqm.pl\n\theader.b=\"MnKqmqSe\"; dkim-atps=neutral" ], "Received": [ "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 438TS146ZMz9s47\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 5 Dec 2018 04:31:29 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 4B09986FD1;\n\tTue, 4 Dec 2018 17:31:27 +0000 (UTC)", "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id uhZVwLK35Yv4; Tue, 4 Dec 2018 17:31:24 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id AB11D8742D;\n\tTue, 4 Dec 2018 17:31:24 +0000 (UTC)", "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id 4B0661BF28D\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 4 Dec 2018 17:31:23 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 482ED868D1\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 4 Dec 2018 17:31:23 +0000 (UTC)", "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id dJ0_lszyaMXC for <intel-wired-lan@lists.osuosl.org>;\n\tTue, 4 Dec 2018 17:31:22 +0000 (UTC)", "from rere.qmqm.pl (rere.qmqm.pl [91.227.64.183])\n\tby fraxinus.osuosl.org (Postfix) with ESMTPS id 9C6C8867BD\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 4 Dec 2018 17:31:21 +0000 (UTC)", "from remote.user (localhost [127.0.0.1])\n\tby rere.qmqm.pl (Postfix) with ESMTPSA id 438TQF1ntMz25;\n\tTue, 4 Dec 2018 18:29:57 +0100 (CET)" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org", "clamav-milter 0.100.2 at mail" ], "X-Greylist": "from auto-whitelisted by SQLgrey-1.7.6", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=rere.qmqm.pl; s=1;\n\tt=1543944598; bh=EcW2fM+CPaizxTlOxB46R0j7iGmbD9ZhtDZ8BJ9L+iU=;\n\th=Date:From:Subject:To:Cc:From;\n\tb=MnKqmqSe2yCA+ys3hF9r19xqkhLQ5JSVxzuqtE+9iHZEC7iciDiwHUV/PCpwWZ1Zs\n\tuY7K+r9iz8i9yZTO+dBm4B6rYFIhT79gRiIpld3AuwVLCBBaqYojHsUQ0ESLK3uyP5\n\tG6dnBJopDZAQRyFtb9AJUAOWXzJuIeL/7nhCGAdjmwfefChaZJM6bw+5FPWwULhHVW\n\twCyiJWUEMlWVvBYt8gGEPDbpyt9CmtlfBSQk+YheU6XMFRrMgSPCLZVzHHJE3Dly19\n\tdt5Ik0zLJI5Z2CiWWDADFFuWAoXciztPsAPNM6yRf7PeInG3NpXSxXj9xVrycD1fFp\n\tV6MBhPaJp9b6g==", "X-Virus-Status": "Clean", "Date": "Tue, 04 Dec 2018 18:31:14 +0100", "Message-Id": "<6a993b48a235e7a65d522642a74a28a7391ad964.1543944510.git.mirq-linux@rere.qmqm.pl>", "From": "=?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= <mirq-linux@rere.qmqm.pl>", "MIME-Version": "1.0", "To": "netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org", "Subject": "[Intel-wired-lan] [PATCH v3 1/2] i40e: fix VLAN.TCI == 0 RX HW\n\toffload", "X-BeenThere": "intel-wired-lan@osuosl.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>", "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>", "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "intel-wired-lan-bounces@osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>" }, "content": "This fixes two bugs in hardware VLAN offload:\n 1. VLAN.TCI == 0 was being dropped\n 2. there was a race between disabling of VLAN RX feature in hardware\n and processing RX queue, where packets processed in this window\n could have their VLAN information dropped\n\nFix moves the VLAN handling into i40e_process_skb_fields() to save on\nduplicated code. i40e_receive_skb() becomes trivial and so is removed.\n\nSigned-off-by: Michał Mirosław <michal.miroslaw@atendesoftware.pl>\nSigned-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>\n---\nv3:\n * fix whitespace for checkpatch\nv2:\n * no changes\n---\n drivers/net/ethernet/intel/i40e/i40e_txrx.c | 31 +++++--------------\n .../ethernet/intel/i40e/i40e_txrx_common.h | 2 --\n drivers/net/ethernet/intel/i40e/i40e_xsk.c | 6 +---\n 3 files changed, 9 insertions(+), 30 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\nindex aef3c89ee79c..bc6a873ec574 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n@@ -1558,24 +1558,6 @@ static bool i40e_alloc_mapped_page(struct i40e_ring *rx_ring,\n \treturn true;\n }\n \n-/**\n- * i40e_receive_skb - Send a completed packet up the stack\n- * @rx_ring: rx ring in play\n- * @skb: packet to send up\n- * @vlan_tag: vlan tag for packet\n- **/\n-void i40e_receive_skb(struct i40e_ring *rx_ring,\n-\t\t struct sk_buff *skb, u16 vlan_tag)\n-{\n-\tstruct i40e_q_vector *q_vector = rx_ring->q_vector;\n-\n-\tif ((rx_ring->netdev->features & NETIF_F_HW_VLAN_CTAG_RX) &&\n-\t (vlan_tag & VLAN_VID_MASK))\n-\t\t__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan_tag);\n-\n-\tnapi_gro_receive(&q_vector->napi, skb);\n-}\n-\n /**\n * i40e_alloc_rx_buffers - Replace used receive buffers\n * @rx_ring: ring to place buffers on\n@@ -1812,6 +1794,13 @@ void i40e_process_skb_fields(struct i40e_ring *rx_ring,\n \n \tskb_record_rx_queue(skb, rx_ring->queue_index);\n \n+\tif (qword & BIT(I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)) {\n+\t\tu16 vlan_tag = rx_desc->wb.qword0.lo_dword.l2tag1;\n+\n+\t\t__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),\n+\t\t\t\t le16_to_cpu(vlan_tag));\n+\t}\n+\n \t/* modifies the skb - consumes the enet header */\n \tskb->protocol = eth_type_trans(skb, rx_ring->netdev);\n }\n@@ -2350,7 +2339,6 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)\n \t\tstruct i40e_rx_buffer *rx_buffer;\n \t\tunion i40e_rx_desc *rx_desc;\n \t\tunsigned int size;\n-\t\tu16 vlan_tag;\n \t\tu8 rx_ptype;\n \t\tu64 qword;\n \n@@ -2451,11 +2439,8 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)\n \t\t/* populate checksum, VLAN, and protocol */\n \t\ti40e_process_skb_fields(rx_ring, rx_desc, skb, rx_ptype);\n \n-\t\tvlan_tag = (qword & BIT(I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)) ?\n-\t\t\t le16_to_cpu(rx_desc->wb.qword0.lo_dword.l2tag1) : 0;\n-\n \t\ti40e_trace(clean_rx_irq_rx, rx_ring, rx_desc, skb);\n-\t\ti40e_receive_skb(rx_ring, skb, vlan_tag);\n+\t\tnapi_gro_receive(&rx_ring->q_vector->napi, skb);\n \t\tskb = NULL;\n \n \t\t/* update budget accounting */\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx_common.h b/drivers/net/ethernet/intel/i40e/i40e_txrx_common.h\nindex 09809dffe399..2c077f1c4eca 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx_common.h\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx_common.h\n@@ -14,8 +14,6 @@ struct i40e_rx_buffer *i40e_clean_programming_status(\n void i40e_process_skb_fields(struct i40e_ring *rx_ring,\n \t\t\t union i40e_rx_desc *rx_desc, struct sk_buff *skb,\n \t\t\t u8 rx_ptype);\n-void i40e_receive_skb(struct i40e_ring *rx_ring,\n-\t\t struct sk_buff *skb, u16 vlan_tag);\n void i40e_xdp_ring_update_tail(struct i40e_ring *xdp_ring);\n void i40e_update_rx_stats(struct i40e_ring *rx_ring,\n \t\t\t unsigned int total_rx_bytes,\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c b/drivers/net/ethernet/intel/i40e/i40e_xsk.c\nindex 433c8e688c78..a6ea2b249471 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c\n@@ -634,7 +634,6 @@ int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget)\n \t\tstruct i40e_rx_buffer *bi;\n \t\tunion i40e_rx_desc *rx_desc;\n \t\tunsigned int size;\n-\t\tu16 vlan_tag;\n \t\tu8 rx_ptype;\n \t\tu64 qword;\n \n@@ -717,10 +716,7 @@ int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget)\n \t\trx_ptype = (qword & I40E_RXD_QW1_PTYPE_MASK) >>\n \t\t\t I40E_RXD_QW1_PTYPE_SHIFT;\n \t\ti40e_process_skb_fields(rx_ring, rx_desc, skb, rx_ptype);\n-\n-\t\tvlan_tag = (qword & BIT(I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)) ?\n-\t\t\t le16_to_cpu(rx_desc->wb.qword0.lo_dword.l2tag1) : 0;\n-\t\ti40e_receive_skb(rx_ring, skb, vlan_tag);\n+\t\tnapi_gro_receive(&rx_ring->q_vector->napi, skb);\n \t}\n \n \ti40e_finalize_xdp_rx(rx_ring, xdp_xmit);\n", "prefixes": [ "v3", "1/2" ] }