mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 12:57:53 +00:00
Merge branch 'tsnep-xdp-fixes'
Gerhard Engleder says: ==================== tsnep: XDP fixes Found two driver specific problems during XDP and XSK testing. ==================== Link: https://lore.kernel.org/r/20240123200918.61219-1-gerhard@engleder-embedded.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
commit
0a5bd0ffe7
1 changed files with 15 additions and 2 deletions
|
@ -1485,7 +1485,7 @@ static int tsnep_rx_poll(struct tsnep_rx *rx, struct napi_struct *napi,
|
|||
|
||||
xdp_prepare_buff(&xdp, page_address(entry->page),
|
||||
XDP_PACKET_HEADROOM + TSNEP_RX_INLINE_METADATA_SIZE,
|
||||
length, false);
|
||||
length - ETH_FCS_LEN, false);
|
||||
|
||||
consume = tsnep_xdp_run_prog(rx, prog, &xdp,
|
||||
&xdp_status, tx_nq, tx);
|
||||
|
@ -1568,7 +1568,7 @@ static int tsnep_rx_poll_zc(struct tsnep_rx *rx, struct napi_struct *napi,
|
|||
prefetch(entry->xdp->data);
|
||||
length = __le32_to_cpu(entry->desc_wb->properties) &
|
||||
TSNEP_DESC_LENGTH_MASK;
|
||||
xsk_buff_set_size(entry->xdp, length);
|
||||
xsk_buff_set_size(entry->xdp, length - ETH_FCS_LEN);
|
||||
xsk_buff_dma_sync_for_cpu(entry->xdp, rx->xsk_pool);
|
||||
|
||||
/* RX metadata with timestamps is in front of actual data,
|
||||
|
@ -1762,6 +1762,19 @@ static void tsnep_rx_reopen_xsk(struct tsnep_rx *rx)
|
|||
allocated--;
|
||||
}
|
||||
}
|
||||
|
||||
/* set need wakeup flag immediately if ring is not filled completely,
|
||||
* first polling would be too late as need wakeup signalisation would
|
||||
* be delayed for an indefinite time
|
||||
*/
|
||||
if (xsk_uses_need_wakeup(rx->xsk_pool)) {
|
||||
int desc_available = tsnep_rx_desc_available(rx);
|
||||
|
||||
if (desc_available)
|
||||
xsk_set_rx_need_wakeup(rx->xsk_pool);
|
||||
else
|
||||
xsk_clear_rx_need_wakeup(rx->xsk_pool);
|
||||
}
|
||||
}
|
||||
|
||||
static bool tsnep_pending(struct tsnep_queue *queue)
|
||||
|
|
Loading…
Reference in a new issue