aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOsama Abboud <osamaabb@amazon.com>2024-08-07 06:24:21 +0000
committerOsama Abboud <osamaabb@FreeBSD.org>2024-10-15 17:38:32 +0000
commit2f17afd19a3534dc1755c52edb0c2f70ea0eb1e4 (patch)
treeec1d6f71e057af83428df71886f72f20a35db978
parentce20b51cb71bfb548fcaafc4bacb8290460f03d5 (diff)
downloadsrc-2f17afd19a3534dc1755c52edb0c2f70ea0eb1e4.tar.gz
src-2f17afd19a3534dc1755c52edb0c2f70ea0eb1e4.zip
ena: Clear NS_MOREFRAG flag for last netmap slot
When processing packets within the rx-flow ena_netmap_rx_load_desc doesn't know the number of descriptors, so it sets NS_MOREFRAG to all the slots to indicate that there are more fragments for this packet. The code calls ena_netmap_rx_load_desc() for every descriptor in this packet to map the relevant buffer into the netmap shared memory. After ena_netmap_rx_load_desc() calls, we need to unset the NS_MOREFRAG for the last fragment to indicate that this is the last fragment, so we explicitly turn off NS_MOREFRAG flag. Current code overrides all other flags and sets NS_BUF_CHANGED. This patch unsets the relevant flag only. Approved by: cperciva (mentor) MFC after: 2 weeks Sponsored by: Amazon, Inc.
-rw-r--r--sys/dev/ena/ena_netmap.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/ena/ena_netmap.c b/sys/dev/ena/ena_netmap.c
index eef8021b8569..8a220373ec3f 100644
--- a/sys/dev/ena/ena_netmap.c
+++ b/sys/dev/ena/ena_netmap.c
@@ -964,7 +964,7 @@ ena_netmap_rx_frame(struct ena_netmap_ctx *ctx)
* It just set flag NS_MOREFRAG to all slots, then here flag of
* last slot is cleared.
*/
- ctx->slots[nm_prev(ctx->nm_i, ctx->lim)].flags = NS_BUF_CHANGED;
+ ctx->slots[nm_prev(ctx->nm_i, ctx->lim)].flags &= ~NS_MOREFRAG;
if (rc != 0) {
goto rx_clear_desc;