mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
tsnep: Add helper for RX XDP_RING_NEED_WAKEUP flag
Similar chunk of code is used in tsnep_rx_poll_zc() and tsnep_rx_reopen_xsk() to maintain the RX XDP_RING_NEED_WAKEUP flag. Consolidate the code to common helper function. Suggested-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com> Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
89304f91bf
commit
1e08223272
|
|
@ -1260,6 +1260,14 @@ static int tsnep_rx_refill_zc(struct tsnep_rx *rx, int count, bool reuse)
|
|||
return desc_refilled;
|
||||
}
|
||||
|
||||
static void tsnep_xsk_rx_need_wakeup(struct tsnep_rx *rx, int desc_available)
|
||||
{
|
||||
if (desc_available)
|
||||
xsk_set_rx_need_wakeup(rx->xsk_pool);
|
||||
else
|
||||
xsk_clear_rx_need_wakeup(rx->xsk_pool);
|
||||
}
|
||||
|
||||
static bool tsnep_xdp_run_prog(struct tsnep_rx *rx, struct bpf_prog *prog,
|
||||
struct xdp_buff *xdp, int *status,
|
||||
struct netdev_queue *tx_nq, struct tsnep_tx *tx)
|
||||
|
|
@ -1621,10 +1629,7 @@ static int tsnep_rx_poll_zc(struct tsnep_rx *rx, struct napi_struct *napi,
|
|||
desc_available -= tsnep_rx_refill_zc(rx, desc_available, false);
|
||||
|
||||
if (xsk_uses_need_wakeup(rx->xsk_pool)) {
|
||||
if (desc_available)
|
||||
xsk_set_rx_need_wakeup(rx->xsk_pool);
|
||||
else
|
||||
xsk_clear_rx_need_wakeup(rx->xsk_pool);
|
||||
tsnep_xsk_rx_need_wakeup(rx, desc_available);
|
||||
|
||||
return done;
|
||||
}
|
||||
|
|
@ -1769,14 +1774,8 @@ static void tsnep_rx_reopen_xsk(struct tsnep_rx *rx)
|
|||
* 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);
|
||||
}
|
||||
if (xsk_uses_need_wakeup(rx->xsk_pool))
|
||||
tsnep_xsk_rx_need_wakeup(rx, tsnep_rx_desc_available(rx));
|
||||
}
|
||||
|
||||
static bool tsnep_pending(struct tsnep_queue *queue)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user