Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/669014/?format=api
{ "id": 669014, "url": "http://patchwork.ozlabs.org/api/patches/669014/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1473715124-31296-5-git-send-email-bimmy.pujari@intel.com/", "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": "<1473715124-31296-5-git-send-email-bimmy.pujari@intel.com>", "list_archive_url": null, "date": "2016-09-12T21:18:40", "name": "[next,S46,4/8] i40e/i40evf: Add txring_txq function to match fm10k and ixgbe", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "5ab96427a73c7f59197048cf211f40e650581650", "submitter": { "id": 68919, "url": "http://patchwork.ozlabs.org/api/people/68919/?format=api", "name": "Pujari, Bimmy", "email": "bimmy.pujari@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/1473715124-31296-5-git-send-email-bimmy.pujari@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/669014/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/669014/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 fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\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 3sY10V3zd0z9sdm\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 13 Sep 2016 07:19:38 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 2728088FD5;\n\tMon, 12 Sep 2016 21:19:37 +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 24UG2Bp2x9vu; Mon, 12 Sep 2016 21:19:32 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 6E8598900E;\n\tMon, 12 Sep 2016 21:19:26 +0000 (UTC)", "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id AEDB51C2D64\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 12 Sep 2016 21:19:22 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id A1B6C31624\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 12 Sep 2016 21:19:22 +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 xJLaf-iu05K1 for <intel-wired-lan@lists.osuosl.org>;\n\tMon, 12 Sep 2016 21:19:17 +0000 (UTC)", "from mga07.intel.com (mga07.intel.com [134.134.136.100])\n\tby silver.osuosl.org (Postfix) with ESMTPS id 76A8D31610\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 12 Sep 2016 21:19:17 +0000 (UTC)", "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby orsmga105.jf.intel.com with ESMTP; 12 Sep 2016 14:19:16 -0700", "from bimmy.jf.intel.com (HELO bimmy.linux1.jf.intel.com)\n\t([134.134.2.177])\n\tby orsmga003.jf.intel.com with ESMTP; 12 Sep 2016 14:19:17 -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.30,324,1470726000\"; d=\"scan'208\";a=\"877982155\"", "From": "Bimmy Pujari <bimmy.pujari@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Mon, 12 Sep 2016 14:18:40 -0700", "Message-Id": "<1473715124-31296-5-git-send-email-bimmy.pujari@intel.com>", "X-Mailer": "git-send-email 2.4.11", "In-Reply-To": "<1473715124-31296-1-git-send-email-bimmy.pujari@intel.com>", "References": "<1473715124-31296-1-git-send-email-bimmy.pujari@intel.com>", "Subject": "[Intel-wired-lan] [next PATCH S46 4/8] i40e/i40evf: Add txring_txq\n\tfunction to match fm10k and ixgbe", "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>", "MIME-Version": "1.0", "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": "From: Alexander Duyck <alexander.h.duyck@intel.com>\n\nThis patch adds a txring_txq function which allows us to convert a\ni40e_ring/i40evf_ring to a netdev_tx_queue structure. This way we\ncan avoid having to make a multi-line function call for all the spots\nthat need access to this.\n\nSigned-off-by: Alexander Duyck <alexander.h.duyck@intel.com>\nChange-ID: Ic063b71d8b92ea406d2c32e798c8e2b02809d65b\n---\nTesting Hints:\n This functionality is most heavily used to stop/start the Tx queues\n so a good way to exercise this is to push the device with multiple\n large flows to the point that you start seeing the Tx restart stat\n incrementing. As long as no data corruption is reported it is\n passing.\n\n drivers/net/ethernet/intel/i40e/i40e_txrx.c | 17 ++++++-----------\n drivers/net/ethernet/intel/i40e/i40e_txrx.h | 9 +++++++++\n drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 17 ++++++-----------\n drivers/net/ethernet/intel/i40evf/i40e_txrx.h | 9 +++++++++\n 4 files changed, 30 insertions(+), 22 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\nindex a2077be..6e0a7ac 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n@@ -584,8 +584,7 @@ void i40e_clean_tx_ring(struct i40e_ring *tx_ring)\n \t\treturn;\n \n \t/* cleanup Tx queue statistics */\n-\tnetdev_tx_reset_queue(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index));\n+\tnetdev_tx_reset_queue(txring_txq(tx_ring));\n }\n \n /**\n@@ -754,8 +753,8 @@ static bool i40e_clean_tx_irq(struct i40e_vsi *vsi,\n \t\t\ttx_ring->arm_wb = true;\n \t}\n \n-\tnetdev_tx_completed_queue(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index),\n+\t/* notify netdev of completed buffers */\n+\tnetdev_tx_completed_queue(txring_txq(tx_ring),\n \t\t\t\t total_packets, total_bytes);\n \n #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)\n@@ -2784,9 +2783,7 @@ static inline void i40e_tx_map(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \n \ttx_ring->next_to_use = i;\n \n-\tnetdev_tx_sent_queue(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index),\n-\t\t\t\t\t\t first->bytecount);\n+\tnetdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);\n \ti40e_maybe_stop_tx(tx_ring, DESC_NEEDED);\n \n \t/* Algorithm to optimize tail and RS bit setting:\n@@ -2811,13 +2808,11 @@ static inline void i40e_tx_map(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \t * trigger a force WB.\n \t */\n \tif (skb->xmit_more &&\n-\t !netif_xmit_stopped(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index))) {\n+\t !netif_xmit_stopped(txring_txq(tx_ring))) {\n \t\ttx_ring->flags |= I40E_TXR_FLAGS_LAST_XMIT_MORE_SET;\n \t\ttail_bump = false;\n \t} else if (!skb->xmit_more &&\n-\t\t !netif_xmit_stopped(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index)) &&\n+\t\t !netif_xmit_stopped(txring_txq(tx_ring)) &&\n \t\t (!(tx_ring->flags & I40E_TXR_FLAGS_LAST_XMIT_MORE_SET)) &&\n \t\t (tx_ring->packet_stride < WB_STRIDE) &&\n \t\t (desc_count < WB_STRIDE)) {\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.h b/drivers/net/ethernet/intel/i40e/i40e_txrx.h\nindex b78c810..ff63d77 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.h\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.h\n@@ -463,4 +463,13 @@ static inline bool i40e_rx_is_fcoe(u16 ptype)\n \treturn (ptype >= I40E_RX_PTYPE_L2_FCOE_PAY3) &&\n \t (ptype <= I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER);\n }\n+\n+/**\n+ * txring_txq - Find the netdev Tx ring based on the i40e Tx ring\n+ * @ring: Tx ring to find the netdev equivilent of\n+ **/\n+static inline struct netdev_queue *txring_txq(const struct i40e_ring *ring)\n+{\n+\treturn netdev_get_tx_queue(ring->netdev, ring->queue_index);\n+}\n #endif /* _I40E_TXRX_H_ */\ndiff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\nindex cb6b130..d4c6a76 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\n@@ -103,8 +103,7 @@ void i40evf_clean_tx_ring(struct i40e_ring *tx_ring)\n \t\treturn;\n \n \t/* cleanup Tx queue statistics */\n-\tnetdev_tx_reset_queue(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index));\n+\tnetdev_tx_reset_queue(txring_txq(tx_ring));\n }\n \n /**\n@@ -273,8 +272,8 @@ static bool i40e_clean_tx_irq(struct i40e_vsi *vsi,\n \t\t\ttx_ring->arm_wb = true;\n \t}\n \n-\tnetdev_tx_completed_queue(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index),\n+\t/* notify netdev of completed buffers */\n+\tnetdev_tx_completed_queue(txring_txq(tx_ring),\n \t\t\t\t total_packets, total_bytes);\n \n #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)\n@@ -2012,9 +2011,7 @@ static inline void i40evf_tx_map(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \n \ttx_ring->next_to_use = i;\n \n-\tnetdev_tx_sent_queue(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index),\n-\t\t\t\t\t\t first->bytecount);\n+\tnetdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);\n \ti40e_maybe_stop_tx(tx_ring, DESC_NEEDED);\n \n \t/* Algorithm to optimize tail and RS bit setting:\n@@ -2039,13 +2036,11 @@ static inline void i40evf_tx_map(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \t * trigger a force WB.\n \t */\n \tif (skb->xmit_more &&\n-\t !netif_xmit_stopped(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index))) {\n+\t !netif_xmit_stopped(txring_txq(tx_ring))) {\n \t\ttx_ring->flags |= I40E_TXR_FLAGS_LAST_XMIT_MORE_SET;\n \t\ttail_bump = false;\n \t} else if (!skb->xmit_more &&\n-\t\t !netif_xmit_stopped(netdev_get_tx_queue(tx_ring->netdev,\n-\t\t\t\t\t\t tx_ring->queue_index)) &&\n+\t\t !netif_xmit_stopped(txring_txq(tx_ring)) &&\n \t\t (!(tx_ring->flags & I40E_TXR_FLAGS_LAST_XMIT_MORE_SET)) &&\n \t\t (tx_ring->packet_stride < WB_STRIDE) &&\n \t\t (desc_count < WB_STRIDE)) {\ndiff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.h b/drivers/net/ethernet/intel/i40evf/i40e_txrx.h\nindex 0112277..7f72ee7 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.h\n+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.h\n@@ -445,4 +445,13 @@ static inline bool i40e_rx_is_fcoe(u16 ptype)\n \treturn (ptype >= I40E_RX_PTYPE_L2_FCOE_PAY3) &&\n \t (ptype <= I40E_RX_PTYPE_L2_FCOE_VFT_FCOTHER);\n }\n+\n+/**\n+ * txring_txq - Find the netdev Tx ring based on the i40e Tx ring\n+ * @ring: Tx ring to find the netdev equivilent of\n+ **/\n+static inline struct netdev_queue *txring_txq(const struct i40e_ring *ring)\n+{\n+\treturn netdev_get_tx_queue(ring->netdev, ring->queue_index);\n+}\n #endif /* _I40E_TXRX_H_ */\n", "prefixes": [ "next", "S46", "4/8" ] }