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>
        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,