|
| 1 | +idpf: fix idpf_vport_splitq_napi_poll() |
| 2 | + |
| 3 | +jira LE-3467 |
| 4 | +Rebuild_History Non-Buildable kernel-4.18.0-553.58.1.el8_10 |
| 5 | +commit-author Eric Dumazet <edumazet@google.com> |
| 6 | +commit 407e0efdf8baf1672876d5948b75049860a93e59 |
| 7 | +Empty-Commit: Cherry-Pick Conflicts during history rebuild. |
| 8 | +Will be included in final tarball splat. Ref for failed cherry-pick at: |
| 9 | +ciq/ciq_backports/kernel-4.18.0-553.58.1.el8_10/407e0efd.failed |
| 10 | + |
| 11 | +idpf_vport_splitq_napi_poll() can incorrectly return @budget |
| 12 | +after napi_complete_done() has been called. |
| 13 | + |
| 14 | +This violates NAPI rules, because after napi_complete_done(), |
| 15 | +current thread lost napi ownership. |
| 16 | + |
| 17 | +Move the test against POLL_MODE before the napi_complete_done(). |
| 18 | + |
| 19 | +Fixes: c2d548cad150 ("idpf: add TX splitq napi poll support") |
| 20 | + Reported-by: Peter Newman <peternewman@google.com> |
| 21 | +Closes: https://lore.kernel.org/netdev/20250520121908.1805732-1-edumazet@google.com/T/#u |
| 22 | + Signed-off-by: Eric Dumazet <edumazet@google.com> |
| 23 | + Cc: Joshua Hay <joshua.a.hay@intel.com> |
| 24 | + Cc: Alan Brady <alan.brady@intel.com> |
| 25 | + Cc: Madhu Chittim <madhu.chittim@intel.com> |
| 26 | + Cc: Phani Burra <phani.r.burra@intel.com> |
| 27 | + Cc: Pavan Kumar Linga <pavan.kumar.linga@intel.com> |
| 28 | +Link: https://patch.msgid.link/20250520124030.1983936-1-edumazet@google.com |
| 29 | + Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| 30 | +(cherry picked from commit 407e0efdf8baf1672876d5948b75049860a93e59) |
| 31 | + Signed-off-by: Jonathan Maple <jmaple@ciq.com> |
| 32 | + |
| 33 | +# Conflicts: |
| 34 | +# drivers/net/ethernet/intel/idpf/idpf_txrx.c |
| 35 | +diff --cc drivers/net/ethernet/intel/idpf/idpf_txrx.c |
| 36 | +index 7501a74f8dd9,2d5f5c9f91ce..000000000000 |
| 37 | +--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c |
| 38 | ++++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c |
| 39 | +@@@ -3926,15 -4043,7 +3934,19 @@@ static int idpf_vport_splitq_napi_poll( |
| 40 | + else |
| 41 | + idpf_vport_intr_set_wb_on_itr(q_vector); |
| 42 | + |
| 43 | +++<<<<<<< HEAD |
| 44 | + + /* Switch to poll mode in the tear-down path after sending disable |
| 45 | + + * queues virtchnl message, as the interrupts will be disabled after |
| 46 | + + * that |
| 47 | + + */ |
| 48 | + + if (unlikely(q_vector->num_txq && test_bit(__IDPF_Q_POLL_MODE, |
| 49 | + + q_vector->tx[0]->flags))) |
| 50 | + + return budget; |
| 51 | + + else |
| 52 | + + return work_done; |
| 53 | +++======= |
| 54 | ++ return work_done; |
| 55 | +++>>>>>>> 407e0efdf8ba (idpf: fix idpf_vport_splitq_napi_poll()) |
| 56 | + } |
| 57 | + |
| 58 | + /** |
| 59 | +* Unmerged path drivers/net/ethernet/intel/idpf/idpf_txrx.c |
0 commit comments