ice, xsk: Decorate ICE_XDP_REDIR with likely()
ice_run_xdp_zc() suggests to compiler that XDP_REDIRECT is the most probable action returned from BPF program that AF_XDP has in its pipeline. Let's also bring this suggestion up to the callsite of ice_run_xdp_zc() so that compiler will be able to generate more optimized code which in turn will make branch predictor happy. Suggested-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20220413153015.453864-4-maciej.fijalkowski@intel.com
This commit is contained in:
parent
2be4a677cc
commit
0bd5ab511e
@ -629,18 +629,19 @@ int ice_clean_rx_irq_zc(struct ice_rx_ring *rx_ring, int budget)
|
||||
xsk_buff_dma_sync_for_cpu(xdp, rx_ring->xsk_pool);
|
||||
|
||||
xdp_res = ice_run_xdp_zc(rx_ring, xdp, xdp_prog, xdp_ring);
|
||||
if (xdp_res) {
|
||||
if (xdp_res & (ICE_XDP_TX | ICE_XDP_REDIR))
|
||||
xdp_xmit |= xdp_res;
|
||||
else
|
||||
xsk_buff_free(xdp);
|
||||
if (likely(xdp_res & (ICE_XDP_TX | ICE_XDP_REDIR)))
|
||||
xdp_xmit |= xdp_res;
|
||||
else if (xdp_res == ICE_XDP_CONSUMED)
|
||||
xsk_buff_free(xdp);
|
||||
else
|
||||
goto construct_skb;
|
||||
|
||||
total_rx_bytes += size;
|
||||
total_rx_packets++;
|
||||
total_rx_bytes += size;
|
||||
total_rx_packets++;
|
||||
|
||||
ice_bump_ntc(rx_ring);
|
||||
continue;
|
||||
|
||||
ice_bump_ntc(rx_ring);
|
||||
continue;
|
||||
}
|
||||
construct_skb:
|
||||
/* XDP_PASS path */
|
||||
skb = ice_construct_skb_zc(rx_ring, xdp);
|
||||
|
Loading…
Reference in New Issue
Block a user