浏览代码

qlcnic: eswitch config fixes

o remove validation before deleting vlan id
o Add missing 'break' while deleting vlan id.

Signed-off-by: Rajesh Borundia <rajesh.borundia@qlogic.com>
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Rajesh Borundia 15 年之前
父节点
当前提交
e9a47700cb
共有 2 个文件被更改,包括 15 次插入12 次删除
  1. 1 0
      drivers/net/qlcnic/qlcnic_ctx.c
  2. 14 12
      drivers/net/qlcnic/qlcnic_main.c

+ 1 - 0
drivers/net/qlcnic/qlcnic_ctx.c

@@ -1160,6 +1160,7 @@ int qlcnic_config_switch_port(struct qlcnic_adapter *adapter,
 	case QLCNIC_DEL_VLAN:
 			arg1 |= (BIT_3 | BIT_5);
 			arg1 &= ~(0x0ffff << 16);
+			break;
 	default:
 		return err;
 	}

+ 14 - 12
drivers/net/qlcnic/qlcnic_main.c

@@ -3301,8 +3301,6 @@ validate_esw_config(struct qlcnic_adapter *adapter,
 				return QL_STATUS_INVALID_PARAM;
 			break;
 		case QLCNIC_DEL_VLAN:
-			if (!IS_VALID_VLAN(esw_cfg[i].vlan_id))
-				return QL_STATUS_INVALID_PARAM;
 			if (!esw_cfg[i].op_type)
 				return QL_STATUS_INVALID_PARAM;
 			break;
@@ -3338,21 +3336,25 @@ qlcnic_sysfs_write_esw_config(struct file *file, struct kobject *kobj,
 		if (adapter->op_mode == QLCNIC_MGMT_FUNC)
 			if (qlcnic_config_switch_port(adapter, &esw_cfg[i]))
 				return QL_STATUS_INVALID_PARAM;
-		if (adapter->ahw.pci_func == esw_cfg[i].pci_func)
-			op_mode = esw_cfg[i].op_mode;
-			qlcnic_get_eswitch_port_config(adapter, &esw_cfg[i]);
-			esw_cfg[i].op_mode = op_mode;
-			esw_cfg[i].pci_func = adapter->ahw.pci_func;
-			switch (esw_cfg[i].op_mode) {
-			case QLCNIC_PORT_DEFAULTS:
-				qlcnic_set_eswitch_port_features(adapter,
-								&esw_cfg[i]);
-				break;
+
+		if (adapter->ahw.pci_func != esw_cfg[i].pci_func)
+			continue;
+
+		op_mode = esw_cfg[i].op_mode;
+		qlcnic_get_eswitch_port_config(adapter, &esw_cfg[i]);
+		esw_cfg[i].op_mode = op_mode;
+		esw_cfg[i].pci_func = adapter->ahw.pci_func;
+
+		switch (esw_cfg[i].op_mode) {
+		case QLCNIC_PORT_DEFAULTS:
+			qlcnic_set_eswitch_port_features(adapter, &esw_cfg[i]);
+			break;
 		}
 	}
 
 	if (adapter->op_mode != QLCNIC_MGMT_FUNC)
 		goto out;
+
 	for (i = 0; i < count; i++) {
 		pci_func = esw_cfg[i].pci_func;
 		npar = &adapter->npars[pci_func];