RE: [net-next 01/16] ixgbe: add check for netif_carrier_ok in ixgbe_xmit_frame
flat view
From: Tantilov, Emil S <hidden>
Date: 2014-03-15 00:24:02
-----Original Message----- From: Ben Hutchings [mailto:<redacted>] Sent: Friday, March 14, 2014 5:19 PM To: David Miller Cc: Tantilov, Emil S; Kirsher, Jeffrey T; netdev@vger.kernel.org; gospo@redhat.com; sassmann@redhat.com; asharma@fb.com; stable@vger.kernel.org Subject: Re: [net-next 01/16] ixgbe: add check for netif_carrier_ok in ixgbe_xmit_frame On Fri, 2014-03-14 at 17:51 -0400, David Miller wrote:quoted
From: "Tantilov, Emil S" <redacted> Date: Fri, 14 Mar 2014 20:19:38 +0000quoted
That would work, but what if there are other callers of ndo_start_xmit that don't have this check? Handling this in the driver takes care of all instances.netif_carrier_off() is supposed to stop traffic from flowing to the device. The qdisc layer should be honoring this property, and my suspicion is that it is just netpoll operates in the unique environment that doesn't.There is no check for netif_carrier_ok() in the qdisc transmit path. Instead netif_carrier_off() eventually causes link_watch to call dev_deactivate() which installs the noop qdisc. It does seem like transmitters that bypass the qdisc should be checking netif_carrier_ok(), but drivers must also accept that the effect of netif_carrier_off() is not immediate. Maybe ixgbe is not calling netif_stop_all_queues() at quite the right time?
You're probably right. I'm looking into it. Thanks, Emil
Ben. -- Ben Hutchings When you say `I wrote a program that crashed Windows', people just stare ... and say `Hey, I got those with the system, *for free*'. - Linus Torvalds