mirror of
https://github.com/opnsense/src.git
synced 2026-02-18 18:20:26 -05:00
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) Sponsored by: Amazon, Inc. (cherry picked from commit 2f17afd19a3534dc1755c52edb0c2f70ea0eb1e4)
This commit is contained in:
parent
b0830d2b6b
commit
8b43095ad8
1 changed files with 1 additions and 1 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue