sch_htb: Add extack messages for EOPNOTSUPP errors
authorMaxim Mikityanskiy <maximmi@nvidia.com>
Thu, 28 Oct 2021 12:24:36 +0000 (15:24 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 28 Oct 2021 13:34:03 +0000 (14:34 +0100)
In order to make the "Operation not supported" message clearer to the
user, add extack messages explaining why exactly adding offloaded HTB
could be not supported in each case.

Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_htb.c

index cf1d45d..9267922 100644 (file)
@@ -1084,11 +1084,15 @@ static int htb_init(struct Qdisc *sch, struct nlattr *opt,
        offload = nla_get_flag(tb[TCA_HTB_OFFLOAD]);
 
        if (offload) {
-               if (sch->parent != TC_H_ROOT)
+               if (sch->parent != TC_H_ROOT) {
+                       NL_SET_ERR_MSG(extack, "HTB must be the root qdisc to use offload");
                        return -EOPNOTSUPP;
+               }
 
-               if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc)
+               if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc) {
+                       NL_SET_ERR_MSG(extack, "hw-tc-offload ethtool feature flag must be on");
                        return -EOPNOTSUPP;
+               }
 
                q->num_direct_qdiscs = dev->real_num_tx_queues;
                q->direct_qdiscs = kcalloc(q->num_direct_qdiscs,