.. | .. |
---|
1456 | 1456 | rx_work_done = (likely(fp->type & QEDE_FASTPATH_RX) && |
---|
1457 | 1457 | qede_has_rx_work(fp->rxq)) ? |
---|
1458 | 1458 | qede_rx_int(fp, budget) : 0; |
---|
1459 | | - if (rx_work_done < budget) { |
---|
| 1459 | + |
---|
| 1460 | + if (fp->xdp_xmit & QEDE_XDP_REDIRECT) |
---|
| 1461 | + xdp_do_flush(); |
---|
| 1462 | + |
---|
| 1463 | + /* Handle case where we are called by netpoll with a budget of 0 */ |
---|
| 1464 | + if (rx_work_done < budget || !budget) { |
---|
1460 | 1465 | if (!qede_poll_is_more_work(fp)) { |
---|
1461 | 1466 | napi_complete_done(napi, rx_work_done); |
---|
1462 | 1467 | |
---|
.. | .. |
---|
1473 | 1478 | fp->xdp_tx->tx_db.data.bd_prod = cpu_to_le16(xdp_prod); |
---|
1474 | 1479 | qede_update_tx_producer(fp->xdp_tx); |
---|
1475 | 1480 | } |
---|
1476 | | - |
---|
1477 | | - if (fp->xdp_xmit & QEDE_XDP_REDIRECT) |
---|
1478 | | - xdp_do_flush_map(); |
---|
1479 | 1481 | |
---|
1480 | 1482 | return rx_work_done; |
---|
1481 | 1483 | } |
---|