> +static void dwmac5_log_error(struct net_device *ndev, u32 value, bool corr, > + const char *module_name, const char **errors_str) { > + unsigned long loc, mask; > + > + mask = value; > + for_each_set_bit(loc, &mask, 32) { > + netdev_err(ndev, "Found %s error in %s: '%s'\n", corr ? > + "correctable" : "uncorrectable", module_name, > + errors_str[loc]); > + } > +}
How about also adding ethtool -S stats. You have a text string, so all you need to add is a counter. And i expect statistics are looked at more than dmesg output. > + > +static bool dwmac5_handle_mac_err(struct net_device *ndev, > + void __iomem *ioaddr, bool correctable) { > + u32 value; > + > + value = readl(ioaddr + MAC_DPP_FSM_INT_STATUS); > + writel(value, ioaddr + MAC_DPP_FSM_INT_STATUS); > + > + dwmac5_log_error(ndev, value, correctable, "MAC", dwmac5_mac_errors); > + return !correctable; > +} Returning !correctable in all these functions seems pointless. None of the handlers change its value. So just make these void functions. > static void stmmac_global_err(struct stmmac_priv *priv) { > + netif_carrier_off(priv->dev); > set_bit(STMMAC_RESET_REQUESTED, &priv->state); > stmmac_service_event_schedule(priv); > } This should be in a separate patch, with an explanation why it is needed. Andrew