Message ID | 20230609135103.14221-1-ansuelsmth@gmail.com |
---|---|
Headers | show |
Series | leds: trigger: netdev: add additional modes | expand |
> + if (trigger_data->net_dev != NULL) { > + struct ethtool_link_ksettings cmd; > + cmd is a stack variable, so contains random junk: > trigger_data->carrier_link_up = netif_carrier_ok(trigger_data->net_dev); > > + if (trigger_data->carrier_link_up) { > + rtnl_lock(); > + __ethtool_get_link_ksettings(trigger_data->net_dev, &cmd); /* Internal kernel helper to query a device ethtool_link_settings. */ int __ethtool_get_link_ksettings(struct net_device *dev, struct ethtool_link_ksettings *link_ksettings) { ASSERT_RTNL(); if (!dev->ethtool_ops->get_link_ksettings) return -EOPNOTSUPP; If the op is not implemented, it just returns. > + rtnl_unlock(); > + > + trigger_data->link_speed = cmd.base.speed; and now you are accessing the random junk. > + __ethtool_get_link_ksettings(trigger_data->net_dev, &cmd); > + > + trigger_data->link_speed = cmd.base.speed; You have this code three times. I suggest you pull it out into a little helper, and within the helper, deal with the return code, and set speed to 0 if it is unknown. Andrew
On Fri, Jun 09, 2023 at 03:51:03PM +0200, Christian Marangi wrote: > Add additional mode for unified tx/rx traffic. LED will blink on both tx > or rx traffic. > > This is especially useful for PHY and Switch that supports LEDs hw > control that doesn't support split tx/rx traffic but supports blinking > on any kind of traffic in the link. > > On mode set from sysfs we check if we have enabled split tx/rx mode and > reject enabling activity mode to prevent wrong and redundant > configuration. TRIGGER_NETDEV_TX + TRIGGER_NETDEV_RX = TRIGGER_NETDEV_ACTIVITY: When calling into the driver, it probably makes the drivers simpler if you do this simplification. Within the trigger code, keep them separate, because that is what the user has configured. I know such a simplification will make the marvell PHY driver simpler. Andrew