Very few (mlxsw) upstream drivers seem to allow offload of chains
other than 0.  Save driver developers typing and add a helper for
checking both if ethtool's TC offload flag is on and if chain is 0.
This helper will set the extack appropriately in both error cases.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
        return can;
 }
 
+static inline bool
+tc_cls_can_offload_and_chain0(const struct net_device *dev,
+                             struct tc_cls_common_offload *common)
+{
+       if (!tc_can_offload_extack(dev, common->extack))
+               return false;
+       if (common->chain_index) {
+               NL_SET_ERR_MSG(common->extack,
+                              "Driver supports only offload of chain 0");
+               return false;
+       }
+       return true;
+}
+
 static inline bool tc_skip_hw(u32 flags)
 {
        return (flags & TCA_CLS_FLAGS_SKIP_HW) ? true : false;