Message ID | 20231020032535.1777746-1-yi.fang.gan@intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 95201f36f395df34321fcddbce12103e8bbe4970 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,v2,1/1] net: stmmac: update MAC capabilities when tx queues are updated | expand |
Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Fri, 20 Oct 2023 11:25:35 +0800 you wrote: > From: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com> > > Upon boot up, the driver will configure the MAC capabilities based on > the maximum number of tx and rx queues. When the user changes the > tx queues to single queue, the MAC should be capable of supporting Half > Duplex, but the driver does not update the MAC capabilities when it is > configured so. > > [...] Here is the summary with links: - [net,v2,1/1] net: stmmac: update MAC capabilities when tx queues are updated https://git.kernel.org/netdev/net/c/95201f36f395 You are awesome, thank you!
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index ed1a5a31a491..5801f4d50f95 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1197,6 +1197,17 @@ static int stmmac_init_phy(struct net_device *dev) return ret; } +static void stmmac_set_half_duplex(struct stmmac_priv *priv) +{ + /* Half-Duplex can only work with single tx queue */ + if (priv->plat->tx_queues_to_use > 1) + priv->phylink_config.mac_capabilities &= + ~(MAC_10HD | MAC_100HD | MAC_1000HD); + else + priv->phylink_config.mac_capabilities |= + (MAC_10HD | MAC_100HD | MAC_1000HD); +} + static int stmmac_phy_setup(struct stmmac_priv *priv) { struct stmmac_mdio_bus_data *mdio_bus_data; @@ -1228,10 +1239,7 @@ static int stmmac_phy_setup(struct stmmac_priv *priv) MAC_10FD | MAC_100FD | MAC_1000FD; - /* Half-Duplex can only work with single queue */ - if (priv->plat->tx_queues_to_use <= 1) - priv->phylink_config.mac_capabilities |= MAC_10HD | MAC_100HD | - MAC_1000HD; + stmmac_set_half_duplex(priv); /* Get the MAC specific capabilities */ stmmac_mac_phylink_get_caps(priv); @@ -7172,6 +7180,7 @@ int stmmac_reinit_queues(struct net_device *dev, u32 rx_cnt, u32 tx_cnt) priv->rss.table[i] = ethtool_rxfh_indir_default(i, rx_cnt); + stmmac_set_half_duplex(priv); stmmac_napi_add(dev); if (netif_running(dev))