|
@@ -1133,13 +1133,6 @@ static int esw_vport_ingress_config(struct mlx5_eswitch *esw,
|
|
|
int err = 0;
|
|
int err = 0;
|
|
|
u8 *smac_v;
|
|
u8 *smac_v;
|
|
|
|
|
|
|
|
- if (vport->info.spoofchk && !is_valid_ether_addr(vport->info.mac)) {
|
|
|
|
|
- mlx5_core_warn(esw->dev,
|
|
|
|
|
- "vport[%d] configure ingress rules failed, illegal mac with spoofchk\n",
|
|
|
|
|
- vport->vport);
|
|
|
|
|
- return -EPERM;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
esw_vport_cleanup_ingress_rules(esw, vport);
|
|
esw_vport_cleanup_ingress_rules(esw, vport);
|
|
|
|
|
|
|
|
if (!vport->info.vlan && !vport->info.qos && !vport->info.spoofchk) {
|
|
if (!vport->info.vlan && !vport->info.qos && !vport->info.spoofchk) {
|
|
@@ -1812,13 +1805,10 @@ int mlx5_eswitch_set_vport_mac(struct mlx5_eswitch *esw,
|
|
|
mutex_lock(&esw->state_lock);
|
|
mutex_lock(&esw->state_lock);
|
|
|
evport = &esw->vports[vport];
|
|
evport = &esw->vports[vport];
|
|
|
|
|
|
|
|
- if (evport->info.spoofchk && !is_valid_ether_addr(mac)) {
|
|
|
|
|
|
|
+ if (evport->info.spoofchk && !is_valid_ether_addr(mac))
|
|
|
mlx5_core_warn(esw->dev,
|
|
mlx5_core_warn(esw->dev,
|
|
|
- "MAC invalidation is not allowed when spoofchk is on, vport(%d)\n",
|
|
|
|
|
|
|
+ "Set invalid MAC while spoofchk is on, vport(%d)\n",
|
|
|
vport);
|
|
vport);
|
|
|
- err = -EPERM;
|
|
|
|
|
- goto unlock;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
err = mlx5_modify_nic_vport_mac_address(esw->dev, vport, mac);
|
|
err = mlx5_modify_nic_vport_mac_address(esw->dev, vport, mac);
|
|
|
if (err) {
|
|
if (err) {
|
|
@@ -1964,6 +1954,10 @@ int mlx5_eswitch_set_vport_spoofchk(struct mlx5_eswitch *esw,
|
|
|
evport = &esw->vports[vport];
|
|
evport = &esw->vports[vport];
|
|
|
pschk = evport->info.spoofchk;
|
|
pschk = evport->info.spoofchk;
|
|
|
evport->info.spoofchk = spoofchk;
|
|
evport->info.spoofchk = spoofchk;
|
|
|
|
|
+ if (pschk && !is_valid_ether_addr(evport->info.mac))
|
|
|
|
|
+ mlx5_core_warn(esw->dev,
|
|
|
|
|
+ "Spoofchk in set while MAC is invalid, vport(%d)\n",
|
|
|
|
|
+ evport->vport);
|
|
|
if (evport->enabled && esw->mode == SRIOV_LEGACY)
|
|
if (evport->enabled && esw->mode == SRIOV_LEGACY)
|
|
|
err = esw_vport_ingress_config(esw, evport);
|
|
err = esw_vport_ingress_config(esw, evport);
|
|
|
if (err)
|
|
if (err)
|