diff options
author | Or Gerlitz <ogerlitz@mellanox.com> | 2016-08-18 14:09:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-08-19 19:09:56 -0400 |
commit | f96750f8d6bd64bb6f5a7a1146121b96bc6115f0 (patch) | |
tree | ab661379a3a8c0c16c0974cd056d1e7b4b2c750c | |
parent | 1a8ee6f25b10da7e3de0899a184b221d793f2482 (diff) |
net/mlx5: E-Switch, Avoid ACLs in the offloads mode
When we are in the switchdev/offloads mode, HW matching is done as
dictated by the offloaded rules and hence we don't need to enable
the ACLs mechanism used by the legacy mode.
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c index f6d667797ee1..8b78f156214e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | |||
@@ -1451,7 +1451,8 @@ static void esw_enable_vport(struct mlx5_eswitch *esw, int vport_num, | |||
1451 | 1451 | ||
1452 | esw_debug(esw->dev, "Enabling VPORT(%d)\n", vport_num); | 1452 | esw_debug(esw->dev, "Enabling VPORT(%d)\n", vport_num); |
1453 | 1453 | ||
1454 | if (vport_num) { /* Only VFs need ACLs for VST and spoofchk filtering */ | 1454 | /* Only VFs need ACLs for VST and spoofchk filtering */ |
1455 | if (vport_num && esw->mode == SRIOV_LEGACY) { | ||
1455 | esw_vport_ingress_config(esw, vport); | 1456 | esw_vport_ingress_config(esw, vport); |
1456 | esw_vport_egress_config(esw, vport); | 1457 | esw_vport_egress_config(esw, vport); |
1457 | } | 1458 | } |
@@ -1502,7 +1503,7 @@ static void esw_disable_vport(struct mlx5_eswitch *esw, int vport_num) | |||
1502 | */ | 1503 | */ |
1503 | esw_vport_change_handle_locked(vport); | 1504 | esw_vport_change_handle_locked(vport); |
1504 | vport->enabled_events = 0; | 1505 | vport->enabled_events = 0; |
1505 | if (vport_num) { | 1506 | if (vport_num && esw->mode == SRIOV_LEGACY) { |
1506 | esw_vport_disable_egress_acl(esw, vport); | 1507 | esw_vport_disable_egress_acl(esw, vport); |
1507 | esw_vport_disable_ingress_acl(esw, vport); | 1508 | esw_vport_disable_ingress_acl(esw, vport); |
1508 | } | 1509 | } |
@@ -1767,7 +1768,7 @@ int mlx5_eswitch_set_vport_mac(struct mlx5_eswitch *esw, | |||
1767 | vport, err); | 1768 | vport, err); |
1768 | 1769 | ||
1769 | mutex_lock(&esw->state_lock); | 1770 | mutex_lock(&esw->state_lock); |
1770 | if (evport->enabled) | 1771 | if (evport->enabled && esw->mode == SRIOV_LEGACY) |
1771 | err = esw_vport_ingress_config(esw, evport); | 1772 | err = esw_vport_ingress_config(esw, evport); |
1772 | mutex_unlock(&esw->state_lock); | 1773 | mutex_unlock(&esw->state_lock); |
1773 | return err; | 1774 | return err; |
@@ -1839,7 +1840,7 @@ int mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw, | |||
1839 | mutex_lock(&esw->state_lock); | 1840 | mutex_lock(&esw->state_lock); |
1840 | evport->vlan = vlan; | 1841 | evport->vlan = vlan; |
1841 | evport->qos = qos; | 1842 | evport->qos = qos; |
1842 | if (evport->enabled) { | 1843 | if (evport->enabled && esw->mode == SRIOV_LEGACY) { |
1843 | err = esw_vport_ingress_config(esw, evport); | 1844 | err = esw_vport_ingress_config(esw, evport); |
1844 | if (err) | 1845 | if (err) |
1845 | goto out; | 1846 | goto out; |
@@ -1868,10 +1869,11 @@ int mlx5_eswitch_set_vport_spoofchk(struct mlx5_eswitch *esw, | |||
1868 | mutex_lock(&esw->state_lock); | 1869 | mutex_lock(&esw->state_lock); |
1869 | pschk = evport->spoofchk; | 1870 | pschk = evport->spoofchk; |
1870 | evport->spoofchk = spoofchk; | 1871 | evport->spoofchk = spoofchk; |
1871 | if (evport->enabled) | 1872 | if (evport->enabled && esw->mode == SRIOV_LEGACY) { |
1872 | err = esw_vport_ingress_config(esw, evport); | 1873 | err = esw_vport_ingress_config(esw, evport); |
1873 | if (err) | 1874 | if (err) |
1874 | evport->spoofchk = pschk; | 1875 | evport->spoofchk = pschk; |
1876 | } | ||
1875 | mutex_unlock(&esw->state_lock); | 1877 | mutex_unlock(&esw->state_lock); |
1876 | 1878 | ||
1877 | return err; | 1879 | return err; |