On 7/17/19 8:31 PM, Andrew Lunn wrote:
On Fri, Jul 12, 2019 at 10:32:38PM -0700, Shannon Nelson wrote:
On 7/8/19 7:30 PM, Andrew Lunn wrote:
+static int ionic_nway_reset(struct net_device *netdev)
+{
+       struct lif *lif = netdev_priv(netdev);
+       int err = 0;
+
+       if (netif_running(netdev))
+               err = ionic_reset_queues(lif);
What does ionic_reset_queues() do? It sounds nothing like restarting
auto negotiation?

      Andrew
Basically, it's a rip-it-all-down-and-start-over way of restarting the
connection, and is also useful for fixing queues that are misbehaving.  It's
a little old-fashioned, taken from the ixgbe example, but is effective when
there isn't an actual "restart auto-negotiation" command in the firmware.
O.K. More comments please.

After a little more discussion with the nic connection folks, they've said to just flap the link to force a new auto-negotiation, so that's what I'm adding - set state to off, then back on.  And yes, another comment here.


Did you consider throwing the firmware away and just letting Linux
control the hardware? It would make this all much more transparent and
debuggable.


Yes, the tension between direct driver bit twiddling and smartnic offloading continues.

sln

Reply via email to