Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "Björn Töpel" <bjorn.topel@gmail.com>
To: intel-wired-lan@lists.osuosl.org
Cc: "Björn Töpel" <bjorn.topel@intel.com>,
magnus.karlsson@intel.com, netdev@vger.kernel.org,
bpf@vger.kernel.org, kuba@kernel.org
Subject: [PATCH net-next v2 3/3] i40e, xsk: move buffer allocation out of the Rx processing loop
Date: Tue, 25 Aug 2020 13:35:56 +0200 [thread overview]
Message-ID: <20200825113556.18342-4-bjorn.topel@gmail.com> (raw)
In-Reply-To: <20200825113556.18342-1-bjorn.topel@gmail.com>
From: Björn Töpel <bjorn.topel@intel.com>
Instead of checking in each iteration of the Rx packet processing
loop, move the allocation out of the loop and do it once for each napi
activation.
For AF_XDP the rx_drop benchmark was improved by 6%.
Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_xsk.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
index 1f2dd591dbf1..ae40592c31f9 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
@@ -277,8 +277,8 @@ int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget)
unsigned int total_rx_bytes = 0, total_rx_packets = 0;
u16 cleaned_count = I40E_DESC_UNUSED(rx_ring);
unsigned int xdp_res, xdp_xmit = 0;
- bool failure = false;
struct sk_buff *skb;
+ bool failure;
while (likely(total_rx_packets < (unsigned int)budget)) {
union i40e_rx_desc *rx_desc;
@@ -286,13 +286,6 @@ int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget)
unsigned int size;
u64 qword;
- if (cleaned_count >= I40E_RX_BUFFER_WRITE) {
- failure = failure ||
- !i40e_alloc_rx_buffers_zc(rx_ring,
- cleaned_count);
- cleaned_count = 0;
- }
-
rx_desc = I40E_RX_DESC(rx_ring, rx_ring->next_to_clean);
qword = le64_to_cpu(rx_desc->wb.qword1.status_error_len);
@@ -367,6 +360,9 @@ int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget)
napi_gro_receive(&rx_ring->q_vector->napi, skb);
}
+ if (cleaned_count >= I40E_RX_BUFFER_WRITE)
+ failure = !i40e_alloc_rx_buffers_zc(rx_ring, cleaned_count);
+
i40e_finalize_xdp_rx(rx_ring, xdp_xmit);
i40e_update_rx_stats(rx_ring, total_rx_bytes, total_rx_packets);
--
2.25.1
next prev parent reply other threads:[~2020-08-25 11:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-25 11:35 [PATCH net-next v2 0/3] i40e driver performance tweaks for AF_XDP Björn Töpel
2020-08-25 11:35 ` [PATCH net-next v2 1/3] i40e, xsk: remove HW descriptor prefetch in AF_XDP path Björn Töpel
2020-09-05 2:58 ` [Intel-wired-lan] " Brown, Aaron F
2020-08-25 11:35 ` [PATCH net-next v2 2/3] i40e: use 16B HW descriptors instead of 32B Björn Töpel
2020-09-05 3:01 ` [Intel-wired-lan] " Brown, Aaron F
2020-08-25 11:35 ` Björn Töpel [this message]
2020-09-05 3:03 ` [Intel-wired-lan] [PATCH net-next v2 3/3] i40e, xsk: move buffer allocation out of the Rx processing loop Brown, Aaron F
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200825113556.18342-4-bjorn.topel@gmail.com \
--to=bjorn.topel@gmail.com \
--cc=bjorn.topel@intel.com \
--cc=bpf@vger.kernel.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=kuba@kernel.org \
--cc=magnus.karlsson@intel.com \
--cc=netdev@vger.kernel.org \
--subject='Re: [PATCH net-next v2 3/3] i40e, xsk: move buffer allocation out of the Rx processing loop' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).