Messages in this thread | | | Date | Wed, 11 Jan 2023 10:20:58 -0800 | From | Jakub Kicinski <> | Subject | Re: [PATCH v1] net/dev.c : Remove redundant state settings after waking up |
| |
On Wed, 11 Jan 2023 08:32:42 +0100 Sebastian Andrzej Siewior wrote: > It made sense in the beginning but now the suggested patch is a clean > up. First the `woken' parameter was added in commit > cb038357937ee ("net: fix race between napi kthread mode and busy poll") > > and then the `napi_disable_pending' check was removed in commit > 27f0ad71699de ("net: fix hangup on napi_disable for threaded napi") > > which renders the code to: > | while (!kthread_should_stop()) { > | if (test_bit(NAPI_STATE_SCHED_THREADED, &napi->state) || woken) { > | WARN_ON(!list_empty(&napi->poll_list)); > | __set_current_state(TASK_RUNNING); > | return 0; > | } > | > | schedule(); > | /* woken being true indicates this thread owns this napi. */ > | woken = true; > | set_current_state(TASK_INTERRUPTIBLE); > | } > | __set_current_state(TASK_RUNNING); > > so when you get out of schedule() woken is set and even if > NAPI_STATE_SCHED_THREADED is not set, the while() loop is left due to > `woken = true'. So changing state to TASK_INTERRUPTIBLE makes no sense > since it will be set back to TASK_RUNNING cycles later.
Ah, fair point, forgot about the woken optimization.
| |