|
@@ -434,7 +434,9 @@ static int bnx2x_vf_mac_vlan_config(struct bnx2x *bp,
|
|
|
|
|
|
/* Add/Remove the filter */
|
|
|
rc = bnx2x_config_vlan_mac(bp, &ramrod);
|
|
|
- if (rc && rc != -EEXIST) {
|
|
|
+ if (rc == -EEXIST)
|
|
|
+ return 0;
|
|
|
+ if (rc) {
|
|
|
BNX2X_ERR("Failed to %s %s\n",
|
|
|
filter->add ? "add" : "delete",
|
|
|
(filter->type == BNX2X_VF_FILTER_VLAN_MAC) ?
|
|
@@ -444,6 +446,8 @@ static int bnx2x_vf_mac_vlan_config(struct bnx2x *bp,
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+ filter->applied = true;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -471,6 +475,8 @@ int bnx2x_vf_mac_vlan_config_list(struct bnx2x *bp, struct bnx2x_virtf *vf,
|
|
|
BNX2X_ERR("Managed only %d/%d filters - rolling back\n",
|
|
|
i, filters->count + 1);
|
|
|
while (--i >= 0) {
|
|
|
+ if (!filters->filters[i].applied)
|
|
|
+ continue;
|
|
|
filters->filters[i].add = !filters->filters[i].add;
|
|
|
bnx2x_vf_mac_vlan_config(bp, vf, qid,
|
|
|
&filters->filters[i],
|