Move the NETIF_F_HW_TC capability check and the runtime PM suspend guard from macb_setup_taprio() into the common macb_setup_tc() entry point. These preconditions apply to all hardware TC offload paths routed through ndo_setup_tc(), not just TAPRIO. Centralizing them avoids duplicating the same checks as new TC qdisc types are added. Signed-off-by: Vineeth Karumanchi Reviewed-by: Théo Lebrun --- Changes in v2: - No functional change; rebased on net-next, which renamed the struct net_device pointer to "netdev" (was "dev"). drivers/net/ethernet/cadence/macb_main.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 8223ad81215b..ff7e02d3fab8 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -4476,18 +4476,8 @@ static void macb_taprio_destroy(struct net_device *netdev) static int macb_setup_taprio(struct net_device *netdev, struct tc_taprio_qopt_offload *taprio) { - struct macb *bp = netdev_priv(netdev); int err = 0; - if (unlikely(!(netdev->hw_features & NETIF_F_HW_TC))) - return -EOPNOTSUPP; - - /* Check if Device is in runtime suspend */ - if (unlikely(pm_runtime_suspended(&bp->pdev->dev))) { - netdev_err(netdev, "Device is in runtime suspend\n"); - return -EOPNOTSUPP; - } - switch (taprio->cmd) { case TAPRIO_CMD_REPLACE: err = macb_taprio_setup_replace(netdev, taprio); @@ -4505,9 +4495,22 @@ static int macb_setup_taprio(struct net_device *netdev, static int macb_setup_tc(struct net_device *netdev, enum tc_setup_type type, void *type_data) { + struct macb *bp; + if (!netdev || !type_data) return -EINVAL; + bp = netdev_priv(netdev); + + if (unlikely(!(netdev->hw_features & NETIF_F_HW_TC))) + return -EOPNOTSUPP; + + /* Check if Device is in runtime suspend */ + if (unlikely(pm_runtime_suspended(&bp->pdev->dev))) { + netdev_err(netdev, "Device is in runtime suspend\n"); + return -EOPNOTSUPP; + } + switch (type) { case TC_SETUP_QDISC_TAPRIO: return macb_setup_taprio(netdev, type_data); -- 2.43.0