net: bcmgenet: Add 'eee' module parameter

On some switches, having EEE enabled causes the link to become
unstable. With this patch, adding 'genet.eee=N' to the kernel command
line will cause EEE to be disabled on the link.

See: https://github.com/raspberrypi/linux/issues/4289

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
This commit is contained in:
Phil Elwell
2022-12-14 15:00:51 +00:00
committed by Dom Cobley
parent 7c5a276ba3
commit e6337e28b3

View File

@@ -68,6 +68,9 @@ static void bcmgenet_set_rx_mode(struct net_device *dev);
static bool skip_umac_reset = false;
module_param(skip_umac_reset, bool, 0444);
MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step");
static bool eee = true;
module_param(eee, bool, 0444);
MODULE_PARM_DESC(eee, "Enable EEE (default Y)");
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
{
@@ -3371,6 +3374,17 @@ static int bcmgenet_open(struct net_device *dev)
bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause);
if (!eee) {
struct ethtool_keee eee_data;
ret = bcmgenet_get_eee(dev, &eee_data);
if (ret == 0) {
eee_data.eee_enabled = 0;
bcmgenet_set_eee(dev, &eee_data);
netdev_warn(dev, "EEE disabled\n");
}
}
bcmgenet_netif_start(dev);
netif_tx_start_all_queues(dev);