> +static int mv3310_led_funcs_from_flags(struct mv3310_led *led, > + unsigned long flags, > + enum mv3310_led_func *solid, > + enum mv3310_led_func *blink) > +{ > + unsigned long activity, duplex, link; > + > + if (flags & ~(BIT(TRIGGER_NETDEV_LINK) | > + BIT(TRIGGER_NETDEV_HALF_DUPLEX) | > + BIT(TRIGGER_NETDEV_FULL_DUPLEX) | > + BIT(TRIGGER_NETDEV_TX) | > + BIT(TRIGGER_NETDEV_RX))) > + return -EINVAL; This probably should be -EOPNOTSUPP. The trigger will then do the blinking in software. > + > + link = flags & BIT(TRIGGER_NETDEV_LINK); > + > + duplex = flags & (BIT(TRIGGER_NETDEV_HALF_DUPLEX) | > + BIT(TRIGGER_NETDEV_FULL_DUPLEX)); > + > + activity = flags & (BIT(TRIGGER_NETDEV_TX) | > + BIT(TRIGGER_NETDEV_RX)); > + > + if (link && duplex) > + return -EINVAL; It is an odd combination, but again, if the hardware cannot do it, return -EOPNOTSUPP and leave it to the software. Andrew