mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-07 12:46:00 +07:00
sfc-falcon: remove ndo_poll_controller
As diagnosed by Song Liu, ndo_poll_controller() can be very dangerous on loaded hosts, since the cpu calling ndo_poll_controller() might steal all NAPI contexts (for all RX/TX queues of the NIC). This capture can last for unlimited amount of time, since one cpu is generally not able to drain all the queues under load. sfc-falcon uses NAPI for TX completions, so we better let core networking stack call the napi->poll() to avoid the capture. Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Solarflare linux maintainers <linux-net-drivers@solarflare.com> Cc: Edward Cree <ecree@solarflare.com> Cc: Bert Kenward <bkenward@solarflare.com> Acked-By: Bert Kenward <bkenward@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9447a10ff6
commit
a4f570be65
@ -2052,29 +2052,6 @@ static void ef4_fini_napi(struct ef4_nic *efx)
|
||||
ef4_fini_napi_channel(channel);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Kernel netpoll interface
|
||||
*
|
||||
*************************************************************************/
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
|
||||
/* Although in the common case interrupts will be disabled, this is not
|
||||
* guaranteed. However, all our work happens inside the NAPI callback,
|
||||
* so no locking is required.
|
||||
*/
|
||||
static void ef4_netpoll(struct net_device *net_dev)
|
||||
{
|
||||
struct ef4_nic *efx = netdev_priv(net_dev);
|
||||
struct ef4_channel *channel;
|
||||
|
||||
ef4_for_each_channel(channel, efx)
|
||||
ef4_schedule_channel(channel);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Kernel net device interface
|
||||
@ -2250,9 +2227,6 @@ static const struct net_device_ops ef4_netdev_ops = {
|
||||
.ndo_set_mac_address = ef4_set_mac_address,
|
||||
.ndo_set_rx_mode = ef4_set_rx_mode,
|
||||
.ndo_set_features = ef4_set_features,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = ef4_netpoll,
|
||||
#endif
|
||||
.ndo_setup_tc = ef4_setup_tc,
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
.ndo_rx_flow_steer = ef4_filter_rfs,
|
||||
|
Loading…
Reference in New Issue
Block a user