Commit 83a0c6e5 authored by Benjamin Poirier's avatar Benjamin Poirier Committed by Jeff Kirsher
Browse files

i40e: Invoke softirqs after napi_reschedule



The following message is logged from time to time when using i40e:
NOHZ: local_softirq_pending 08

i40e may schedule napi from a workqueue. Afterwards, softirqs are not run
in a deterministic time frame. The problem is the same as what was
described in commit ec13ee80 ("virtio_net: invoke softirqs after
__napi_schedule") and this patch applies the same fix to i40e.

Signed-off-by: default avatarBenjamin Poirier <bpoirier@suse.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent ee847d93
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -4685,8 +4685,10 @@ static void i40e_detect_recover_hung_queue(int q_idx, struct i40e_vsi *vsi)
	 */
	if ((!tx_pending_hw) && i40e_get_tx_pending(tx_ring, true) &&
	    (!(val & I40E_PFINT_DYN_CTLN_INTENA_MASK))) {
		local_bh_disable();
		if (napi_reschedule(&tx_ring->q_vector->napi))
			tx_ring->tx_stats.tx_lost_interrupt++;
		local_bh_enable();
	}
}