Message ID | 1358350935-3281-5-git-send-email-amirv@mellanox.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On Wed, 2013-01-16 at 17:42 +0200, Amir Vadai wrote: > From: Eugenia Emantayev <eugenia@mellanox.com> > > Under heavy CPU load changing ring size/mtu/etc. could result in transmit > timeout, since stop-start port might take more than 10 sec. Set > netif_carrier_off to prevent tx queue transmit timeout. A spurious link change can restart L3 auto-configuration (DHCP, SLAAC, etc.) netif_device_detach() also inhibits the watchdog and doesn't have that problem. Ben. > Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com> > Signed-off-by: Amir Vadai <amirv@mellanox.com> > --- > drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c > index 805e242..108c4cf 100644 > --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c > +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c > @@ -1212,6 +1212,7 @@ void mlx4_en_stop_port(struct net_device *dev) > > /* Synchronize with tx routine */ > netif_tx_lock_bh(dev); > + netif_carrier_off(dev); > netif_tx_stop_all_queues(dev); > netif_tx_unlock_bh(dev); >
On 16/01/2013 18:00, Ben Hutchings wrote: > On Wed, 2013-01-16 at 17:42 +0200, Amir Vadai wrote: >> >From: Eugenia Emantayev<eugenia@mellanox.com> >> > >> >Under heavy CPU load changing ring size/mtu/etc. could result in transmit >> >timeout, since stop-start port might take more than 10 sec. Set >> >netif_carrier_off to prevent tx queue transmit timeout. > A spurious link change can restart L3 auto-configuration (DHCP, SLAAC, > etc.) netif_device_detach() also inhibits the watchdog and doesn't have > that problem. > > Ben. > Thanks, Ben. I will change it to netif_device_attach(). Since this will need some testing, will resend the patchset without this patch for now. Amir. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 16/01/2013 18:00, Ben Hutchings wrote: > On Wed, 2013-01-16 at 17:42 +0200, Amir Vadai wrote: >> From: Eugenia Emantayev <eugenia@mellanox.com> >> >> Under heavy CPU load changing ring size/mtu/etc. could result in transmit >> timeout, since stop-start port might take more than 10 sec. Set >> netif_carrier_off to prevent tx queue transmit timeout. > > A spurious link change can restart L3 auto-configuration (DHCP, SLAAC, > etc.) netif_device_detach() also inhibits the watchdog and doesn't have > that problem. > > Ben. > But after calling netif_device_detach(), device present bit is cleared and therefore won't be able to access the device. This means, that after 'ifconfig down', won't be able to do 'ifconfig up'. Amir >> Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com> >> Signed-off-by: Amir Vadai <amirv@mellanox.com> >> --- >> drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 1 + >> 1 files changed, 1 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c >> index 805e242..108c4cf 100644 >> --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c >> +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c >> @@ -1212,6 +1212,7 @@ void mlx4_en_stop_port(struct net_device *dev) >> >> /* Synchronize with tx routine */ >> netif_tx_lock_bh(dev); >> + netif_carrier_off(dev); >> netif_tx_stop_all_queues(dev); >> netif_tx_unlock_bh(dev); >> > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 2013-01-28 at 14:07 +0200, Amir Vadai wrote: > On 16/01/2013 18:00, Ben Hutchings wrote: > > On Wed, 2013-01-16 at 17:42 +0200, Amir Vadai wrote: > >> From: Eugenia Emantayev <eugenia@mellanox.com> > >> > >> Under heavy CPU load changing ring size/mtu/etc. could result in transmit > >> timeout, since stop-start port might take more than 10 sec. Set > >> netif_carrier_off to prevent tx queue transmit timeout. > > > > A spurious link change can restart L3 auto-configuration (DHCP, SLAAC, > > etc.) netif_device_detach() also inhibits the watchdog and doesn't have > > that problem. > > > > Ben. > > > > But after calling netif_device_detach(), device present bit is cleared > and therefore won't be able to access the device. This means, that after > 'ifconfig down', won't be able to do 'ifconfig up'. Indeed, so don't do it in ndo_stop! Your commit message referred to changing ring size and MTU. Ben.
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c index 805e242..108c4cf 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -1212,6 +1212,7 @@ void mlx4_en_stop_port(struct net_device *dev) /* Synchronize with tx routine */ netif_tx_lock_bh(dev); + netif_carrier_off(dev); netif_tx_stop_all_queues(dev); netif_tx_unlock_bh(dev);