On Sun, Jan 10, 2021 at 05:30:18PM +0200, stef...@marvell.com wrote: > @@ -5373,6 +5402,30 @@ static int mvpp2_ethtool_set_pause_param(struct > net_device *dev, > struct ethtool_pauseparam *pause) > { > struct mvpp2_port *port = netdev_priv(dev); > + int i; > + > + if (pause->tx_pause && port->priv->global_tx_fc) { > + port->tx_fc = true; > + mvpp2_rxq_enable_fc(port); > + if (port->priv->percpu_pools) { > + for (i = 0; i < port->nrxqs; i++) > + mvpp2_bm_pool_update_fc(port, > &port->priv->bm_pools[i], true); > + } else { > + mvpp2_bm_pool_update_fc(port, port->pool_long, true); > + mvpp2_bm_pool_update_fc(port, port->pool_short, true); > + } > + > + } else if (port->priv->global_tx_fc) { > + port->tx_fc = false; > + mvpp2_rxq_disable_fc(port); > + if (port->priv->percpu_pools) { > + for (i = 0; i < port->nrxqs; i++) > + mvpp2_bm_pool_update_fc(port, > &port->priv->bm_pools[i], false); > + } else { > + mvpp2_bm_pool_update_fc(port, port->pool_long, false); > + mvpp2_bm_pool_update_fc(port, port->pool_short, false); > + } > + }
This doesn't look correct to me. This function is only called when ethtool -A is used to change the flow control settings. This is not the place to be configuring flow control, as flow control is negotiated with the link partner. The final resolved flow control settings are available in mvpp2_mac_link_up() via the tx_pause and rx_pause parameters. What also concerns me is whether flow control is supported in the existing driver at all, given this patch set. If it isn't supported without the firmware's help, then we should _not_ be negotiating flow control with the link partner unless we actually support it, so the Pause and Asym_Pause bits in mvpp2_phylink_validate() should be cleared. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!