Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee9e8b6c authored by Manish Chopra's avatar Manish Chopra Committed by David S. Miller
Browse files

qlcnic: Enhance virtual NIC logging

parent 2343f06a
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -442,6 +442,7 @@ struct qlcnic_hardware_context {
	u16 max_mtu;
	u16 max_mtu;
	u32 msg_enable;
	u32 msg_enable;
	u16 act_pci_func;
	u16 act_pci_func;
	u16 max_pci_func;


	u32 capabilities;
	u32 capabilities;
	u32 capabilities2;
	u32 capabilities2;
+19 −17
Original line number Original line Diff line number Diff line
@@ -2134,26 +2134,25 @@ int qlcnic_83xx_get_nic_info(struct qlcnic_adapter *adapter,
int qlcnic_83xx_get_pci_info(struct qlcnic_adapter *adapter,
int qlcnic_83xx_get_pci_info(struct qlcnic_adapter *adapter,
			     struct qlcnic_pci_info *pci_info)
			     struct qlcnic_pci_info *pci_info)
{
{
	struct qlcnic_hardware_context *ahw = adapter->ahw;
	struct device *dev = &adapter->pdev->dev;
	struct qlcnic_cmd_args cmd;
	int i, err = 0, j = 0;
	int i, err = 0, j = 0;
	u32 temp;
	u32 temp;
	struct qlcnic_cmd_args cmd;


	qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO);
	qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO);
	err = qlcnic_issue_cmd(adapter, &cmd);
	err = qlcnic_issue_cmd(adapter, &cmd);


	adapter->ahw->act_pci_func = 0;
	ahw->act_pci_func = 0;
	if (err == QLCNIC_RCODE_SUCCESS) {
	if (err == QLCNIC_RCODE_SUCCESS) {
		pci_info->func_count = cmd.rsp.arg[1] & 0xFF;
		ahw->max_pci_func = cmd.rsp.arg[1] & 0xFF;
		dev_info(&adapter->pdev->dev,
			 "%s: total functions = %d\n",
			 __func__, pci_info->func_count);
		for (i = 2, j = 0; j < QLCNIC_MAX_PCI_FUNC; j++, pci_info++) {
		for (i = 2, j = 0; j < QLCNIC_MAX_PCI_FUNC; j++, pci_info++) {
			pci_info->id = cmd.rsp.arg[i] & 0xFFFF;
			pci_info->id = cmd.rsp.arg[i] & 0xFFFF;
			pci_info->active = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16;
			pci_info->active = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16;
			i++;
			i++;
			pci_info->type = cmd.rsp.arg[i] & 0xFFFF;
			pci_info->type = cmd.rsp.arg[i] & 0xFFFF;
			if (pci_info->type == QLCNIC_TYPE_NIC)
			if (pci_info->type == QLCNIC_TYPE_NIC)
				adapter->ahw->act_pci_func++;
				ahw->act_pci_func++;
			temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16;
			temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16;
			pci_info->default_port = temp;
			pci_info->default_port = temp;
			i++;
			i++;
@@ -2165,18 +2164,21 @@ int qlcnic_83xx_get_pci_info(struct qlcnic_adapter *adapter,
			i++;
			i++;
			memcpy(pci_info->mac + sizeof(u32), &cmd.rsp.arg[i], 2);
			memcpy(pci_info->mac + sizeof(u32), &cmd.rsp.arg[i], 2);
			i = i + 3;
			i = i + 3;

			if (ahw->op_mode == QLCNIC_MGMT_FUNC)
			dev_info(&adapter->pdev->dev, "%s:\n"
				dev_info(dev, "id = %d active = %d type = %d\n"
				 "\tid = %d active = %d type = %d\n"
					 "\tport = %d min bw = %d max bw = %d\n"
					 "\tport = %d min bw = %d max bw = %d\n"
				 "\tmac_addr =  %pM\n", __func__,
					 "\tmac_addr =  %pM\n", pci_info->id,
				 pci_info->id, pci_info->active, pci_info->type,
					 pci_info->active, pci_info->type,
				 pci_info->default_port, pci_info->tx_min_bw,
					 pci_info->default_port,
					 pci_info->tx_min_bw,
					 pci_info->tx_max_bw, pci_info->mac);
					 pci_info->tx_max_bw, pci_info->mac);
		}
		}
		if (ahw->op_mode == QLCNIC_MGMT_FUNC)
			dev_info(dev, "Max vNIC functions = %d, active vNIC functions = %d\n",
				 ahw->max_pci_func, ahw->act_pci_func);

	} else {
	} else {
		dev_err(&adapter->pdev->dev, "Failed to get PCI Info%d\n",
		dev_err(dev, "Failed to get PCI Info, error = %d\n", err);
			err);
		err = -EIO;
		err = -EIO;
	}
	}


+21 −23
Original line number Original line Diff line number Diff line
@@ -885,9 +885,10 @@ int qlcnic_82xx_get_pci_info(struct qlcnic_adapter *adapter,
int qlcnic_config_port_mirroring(struct qlcnic_adapter *adapter, u8 id,
int qlcnic_config_port_mirroring(struct qlcnic_adapter *adapter, u8 id,
				 u8 enable_mirroring, u8 pci_func)
				 u8 enable_mirroring, u8 pci_func)
{
{
	struct device *dev = &adapter->pdev->dev;
	struct qlcnic_cmd_args cmd;
	int err = -EIO;
	int err = -EIO;
	u32 arg1;
	u32 arg1;
	struct qlcnic_cmd_args cmd;


	if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC ||
	if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC ||
	    !(adapter->eswitch[id].flags & QLCNIC_SWITCH_ENABLE))
	    !(adapter->eswitch[id].flags & QLCNIC_SWITCH_ENABLE))
@@ -901,13 +902,11 @@ int qlcnic_config_port_mirroring(struct qlcnic_adapter *adapter, u8 id,
	err = qlcnic_issue_cmd(adapter, &cmd);
	err = qlcnic_issue_cmd(adapter, &cmd);


	if (err != QLCNIC_RCODE_SUCCESS)
	if (err != QLCNIC_RCODE_SUCCESS)
		dev_err(&adapter->pdev->dev,
		dev_err(dev, "Failed to configure port mirroring for vNIC function %d on eSwitch %d\n",
			"Failed to configure port mirroring%d on eswitch:%d\n",
			pci_func, id);
			pci_func, id);
	else
	else
		dev_info(&adapter->pdev->dev,
		dev_info(dev, "Configured port mirroring for vNIC function %d on eSwitch %d\n",
			"Configured eSwitch %d for port mirroring:%d\n",
			 pci_func, id);
			id, pci_func);
	qlcnic_free_mbx_args(&cmd);
	qlcnic_free_mbx_args(&cmd);


	return err;
	return err;
@@ -1122,14 +1121,13 @@ int qlcnic_clear_esw_stats(struct qlcnic_adapter *adapter, const u8 func_esw,
	return -EIO;
	return -EIO;
}
}


static int
static int __qlcnic_get_eswitch_port_config(struct qlcnic_adapter *adapter,
__qlcnic_get_eswitch_port_config(struct qlcnic_adapter *adapter,
					    u32 *arg1, u32 *arg2)
					    u32 *arg1, u32 *arg2)
{
{
	int err = -EIO;
	struct device *dev = &adapter->pdev->dev;
	struct qlcnic_cmd_args cmd;
	struct qlcnic_cmd_args cmd;
	u8 pci_func;
	u8 pci_func = *arg1 >> 8;
	pci_func = (*arg1 >> 8);
	int err = -EIO;


	qlcnic_alloc_mbx_args(&cmd, adapter,
	qlcnic_alloc_mbx_args(&cmd, adapter,
			      QLCNIC_CMD_GET_ESWITCH_PORT_CONFIG);
			      QLCNIC_CMD_GET_ESWITCH_PORT_CONFIG);
@@ -1140,11 +1138,10 @@ __qlcnic_get_eswitch_port_config(struct qlcnic_adapter *adapter,
	qlcnic_free_mbx_args(&cmd);
	qlcnic_free_mbx_args(&cmd);


	if (err == QLCNIC_RCODE_SUCCESS)
	if (err == QLCNIC_RCODE_SUCCESS)
		dev_info(&adapter->pdev->dev,
		dev_info(dev, "Get eSwitch port config for vNIC function %d\n",
			 "eSwitch port config for pci func %d\n", pci_func);
			 pci_func);
	else
	else
		dev_err(&adapter->pdev->dev,
		dev_err(dev, "Failed to get eswitch port config for vNIC function %d\n",
			"Failed to get eswitch port config for pci func %d\n",
			pci_func);
			pci_func);
	return err;
	return err;
}
}
@@ -1158,9 +1155,10 @@ op_type = 1 for port vlan_id
int qlcnic_config_switch_port(struct qlcnic_adapter *adapter,
int qlcnic_config_switch_port(struct qlcnic_adapter *adapter,
		struct qlcnic_esw_func_cfg *esw_cfg)
		struct qlcnic_esw_func_cfg *esw_cfg)
{
{
	struct device *dev = &adapter->pdev->dev;
	struct qlcnic_cmd_args cmd;
	int err = -EIO, index;
	int err = -EIO, index;
	u32 arg1, arg2 = 0;
	u32 arg1, arg2 = 0;
	struct qlcnic_cmd_args cmd;
	u8 pci_func;
	u8 pci_func;


	if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC)
	if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC)
@@ -1217,11 +1215,11 @@ int qlcnic_config_switch_port(struct qlcnic_adapter *adapter,
	qlcnic_free_mbx_args(&cmd);
	qlcnic_free_mbx_args(&cmd);


	if (err != QLCNIC_RCODE_SUCCESS)
	if (err != QLCNIC_RCODE_SUCCESS)
		dev_err(&adapter->pdev->dev,
		dev_err(dev, "Failed to configure eswitch for vNIC function %d\n",
			"Failed to configure eswitch pci func %d\n", pci_func);
			pci_func);
	else
	else
		dev_info(&adapter->pdev->dev,
		dev_info(dev, "Configured eSwitch for vNIC function %d\n",
			 "Configured eSwitch for pci func %d\n", pci_func);
			 pci_func);


	return err;
	return err;
}
}