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 <redacted>
Reviewed-by: Théo Lebrun <theo.lebrun@bootlin.com>
---
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