Avoid skip_xdp goto and label that skip over five lines of code. If received buffer is fragmented, we know for sure it cannot be XDP as we limit the MTU to ensure packets fit one buffer. Second label removed is next_frame which jumps to one assignement statement and a continue. Duplicate to remove label and goto. Signed-off-by: Théo Lebrun --- drivers/net/ethernet/cadence/macb_main.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 70f5dc9c6529..918eee5c8a5b 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -1611,17 +1611,17 @@ static int gem_rx(struct macb_queue *queue, struct napi_struct *napi, data_len = bp->rx_buffer_size; } - if (!(first_frame && last_frame)) - goto skip_xdp; + if (first_frame && last_frame) { + ret = gem_xdp_run(queue, buff_head, data_len, addr); + if (ret == XDP_REDIRECT) + xdp_flush = true; - ret = gem_xdp_run(queue, buff_head, data_len, addr); - if (ret == XDP_REDIRECT) - xdp_flush = true; + if (ret != XDP_PASS) { + queue->rx_buff[entry] = NULL; + continue; + } + } - if (ret != XDP_PASS) - goto next_frame; - -skip_xdp: if (first_frame) { queue->skb = napi_build_skb(buff_head, gem_total_rx_buffer_size(bp)); if (unlikely(!queue->skb)) { @@ -1691,7 +1691,6 @@ static int gem_rx(struct macb_queue *queue, struct napi_struct *napi, queue->skb = NULL; } -next_frame: queue->rx_buff[entry] = NULL; continue; -- 2.53.0