i40e: flower: check if TC offload is enabled on a netdev
authorJakub Kicinski <jakub.kicinski@netronome.com>
Tue, 23 Jan 2018 08:08:40 +0000 (00:08 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Jan 2018 21:50:51 +0000 (16:50 -0500)
Since TC block changes drivers are required to check if
the TC hw offload flag is set on the interface themselves.

Fixes: 2f4b411a3d67 ("i40e: Enable cloud filters via tc-flower")
Fixes: 44ae12a768b7 ("net: sched: move the can_offload check from binding phase to rule insertion phase")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Acked-by: Amritha Nambiar <amritha.nambiar@intel.com>
Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 42dcaefc4c1942777edf6044953ccd1f798cac2a..af792112a2d3da749d3b5e586b9fcf5adc9ec50d 100644 (file)
@@ -7505,6 +7505,8 @@ static int i40e_setup_tc_cls_flower(struct i40e_netdev_priv *np,
 {
        struct i40e_vsi *vsi = np->vsi;
 
+       if (!tc_can_offload(vsi->netdev))
+               return -EOPNOTSUPP;
        if (cls_flower->common.chain_index)
                return -EOPNOTSUPP;