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. Did you consider throwing the firmware away and just letting Linux control the hardware? It would make this all much more transparent and debuggable. Andrew