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

qlcnic: Enhance virtual NIC logging

Signed-off-by: default avatarManish Chopra <manish.chopra@qlogic.com>
Signed-off-by: default avatarShahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2343f06a
...@@ -442,6 +442,7 @@ struct qlcnic_hardware_context { ...@@ -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;
......
...@@ -2134,26 +2134,25 @@ int qlcnic_83xx_get_nic_info(struct qlcnic_adapter *adapter, ...@@ -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, ...@@ -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", pci_info->id,
"\tmac_addr = %pM\n", __func__, pci_info->active, pci_info->type,
pci_info->id, pci_info->active, pci_info->type, pci_info->default_port,
pci_info->default_port, pci_info->tx_min_bw, 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;
} }
......
...@@ -883,11 +883,12 @@ int qlcnic_82xx_get_pci_info(struct qlcnic_adapter *adapter, ...@@ -883,11 +883,12 @@ int qlcnic_82xx_get_pci_info(struct qlcnic_adapter *adapter,
/* Configure eSwitch for port mirroring */ /* Configure eSwitch for port mirroring */
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, ...@@ -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, ...@@ -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,12 +1138,11 @@ __qlcnic_get_eswitch_port_config(struct qlcnic_adapter *adapter, ...@@ -1140,12 +1138,11 @@ __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;
} }
/* Configure eSwitch port /* Configure eSwitch port
...@@ -1158,9 +1155,10 @@ op_type = 1 for port vlan_id ...@@ -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, ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment