aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qlogic
diff options
context:
space:
mode:
authorManish Chopra <manish.chopra@qlogic.com>2013-05-23 17:04:35 -0400
committerDavid S. Miller <davem@davemloft.net>2013-05-25 02:05:05 -0400
commitee9e8b6c6e167e2400efd26b92b300ff1d3f8e8b (patch)
tree3d2258659a5ff28b87f5184c96503e3e2b1e3616 /drivers/net/ethernet/qlogic
parent2343f06a8c9549af27b885d36e26c59771d697f1 (diff)
qlcnic: Enhance virtual NIC logging
Signed-off-by: Manish Chopra <manish.chopra@qlogic.com> Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic')
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic.h1
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c36
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c44
3 files changed, 41 insertions, 40 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
index e6f8beccbf3e..00a09573faab 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
@@ -442,6 +442,7 @@ struct qlcnic_hardware_context {
442 u16 max_mtu; 442 u16 max_mtu;
443 u32 msg_enable; 443 u32 msg_enable;
444 u16 act_pci_func; 444 u16 act_pci_func;
445 u16 max_pci_func;
445 446
446 u32 capabilities; 447 u32 capabilities;
447 u32 capabilities2; 448 u32 capabilities2;
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
index 1e699e6f29c8..f63a69570256 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
@@ -2134,26 +2134,25 @@ out:
2134int qlcnic_83xx_get_pci_info(struct qlcnic_adapter *adapter, 2134int qlcnic_83xx_get_pci_info(struct qlcnic_adapter *adapter,
2135 struct qlcnic_pci_info *pci_info) 2135 struct qlcnic_pci_info *pci_info)
2136{ 2136{
2137 struct qlcnic_hardware_context *ahw = adapter->ahw;
2138 struct device *dev = &adapter->pdev->dev;
2139 struct qlcnic_cmd_args cmd;
2137 int i, err = 0, j = 0; 2140 int i, err = 0, j = 0;
2138 u32 temp; 2141 u32 temp;
2139 struct qlcnic_cmd_args cmd;
2140 2142
2141 qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO); 2143 qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_PCI_INFO);
2142 err = qlcnic_issue_cmd(adapter, &cmd); 2144 err = qlcnic_issue_cmd(adapter, &cmd);
2143 2145
2144 adapter->ahw->act_pci_func = 0; 2146 ahw->act_pci_func = 0;
2145 if (err == QLCNIC_RCODE_SUCCESS) { 2147 if (err == QLCNIC_RCODE_SUCCESS) {
2146 pci_info->func_count = cmd.rsp.arg[1] & 0xFF; 2148 ahw->max_pci_func = cmd.rsp.arg[1] & 0xFF;
2147 dev_info(&adapter->pdev->dev,
2148 "%s: total functions = %d\n",
2149 __func__, pci_info->func_count);
2150 for (i = 2, j = 0; j < QLCNIC_MAX_PCI_FUNC; j++, pci_info++) { 2149 for (i = 2, j = 0; j < QLCNIC_MAX_PCI_FUNC; j++, pci_info++) {
2151 pci_info->id = cmd.rsp.arg[i] & 0xFFFF; 2150 pci_info->id = cmd.rsp.arg[i] & 0xFFFF;
2152 pci_info->active = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; 2151 pci_info->active = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16;
2153 i++; 2152 i++;
2154 pci_info->type = cmd.rsp.arg[i] & 0xFFFF; 2153 pci_info->type = cmd.rsp.arg[i] & 0xFFFF;
2155 if (pci_info->type == QLCNIC_TYPE_NIC) 2154 if (pci_info->type == QLCNIC_TYPE_NIC)
2156 adapter->ahw->act_pci_func++; 2155 ahw->act_pci_func++;
2157 temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16; 2156 temp = (cmd.rsp.arg[i] & 0xFFFF0000) >> 16;
2158 pci_info->default_port = temp; 2157 pci_info->default_port = temp;
2159 i++; 2158 i++;
@@ -2165,18 +2164,21 @@ int qlcnic_83xx_get_pci_info(struct qlcnic_adapter *adapter,
2165 i++; 2164 i++;
2166 memcpy(pci_info->mac + sizeof(u32), &cmd.rsp.arg[i], 2); 2165 memcpy(pci_info->mac + sizeof(u32), &cmd.rsp.arg[i], 2);
2167 i = i + 3; 2166 i = i + 3;
2168 2167 if (ahw->op_mode == QLCNIC_MGMT_FUNC)
2169 dev_info(&adapter->pdev->dev, "%s:\n" 2168 dev_info(dev, "id = %d active = %d type = %d\n"
2170 "\tid = %d active = %d type = %d\n" 2169 "\tport = %d min bw = %d max bw = %d\n"
2171 "\tport = %d min bw = %d max bw = %d\n" 2170 "\tmac_addr = %pM\n", pci_info->id,
2172 "\tmac_addr = %pM\n", __func__, 2171 pci_info->active, pci_info->type,
2173 pci_info->id, pci_info->active, pci_info->type, 2172 pci_info->default_port,
2174 pci_info->default_port, pci_info->tx_min_bw, 2173 pci_info->tx_min_bw,
2175 pci_info->tx_max_bw, pci_info->mac); 2174 pci_info->tx_max_bw, pci_info->mac);
2176 } 2175 }
2176 if (ahw->op_mode == QLCNIC_MGMT_FUNC)
2177 dev_info(dev, "Max vNIC functions = %d, active vNIC functions = %d\n",
2178 ahw->max_pci_func, ahw->act_pci_func);
2179
2177 } else { 2180 } else {
2178 dev_err(&adapter->pdev->dev, "Failed to get PCI Info%d\n", 2181 dev_err(dev, "Failed to get PCI Info, error = %d\n", err);
2179 err);
2180 err = -EIO; 2182 err = -EIO;
2181 } 2183 }
2182 2184
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c
index d63b5f728d75..9d0ae11589ce 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ctx.c
@@ -883,11 +883,12 @@ int qlcnic_82xx_get_pci_info(struct qlcnic_adapter *adapter,
883 883
884/* Configure eSwitch for port mirroring */ 884/* Configure eSwitch for port mirroring */
885int qlcnic_config_port_mirroring(struct qlcnic_adapter *adapter, u8 id, 885int qlcnic_config_port_mirroring(struct qlcnic_adapter *adapter, u8 id,
886 u8 enable_mirroring, u8 pci_func) 886 u8 enable_mirroring, u8 pci_func)
887{ 887{
888 struct device *dev = &adapter->pdev->dev;
889 struct qlcnic_cmd_args cmd;
888 int err = -EIO; 890 int err = -EIO;
889 u32 arg1; 891 u32 arg1;
890 struct qlcnic_cmd_args cmd;
891 892
892 if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC || 893 if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC ||
893 !(adapter->eswitch[id].flags & QLCNIC_SWITCH_ENABLE)) 894 !(adapter->eswitch[id].flags & QLCNIC_SWITCH_ENABLE))
@@ -901,13 +902,11 @@ int qlcnic_config_port_mirroring(struct qlcnic_adapter *adapter, u8 id,
901 err = qlcnic_issue_cmd(adapter, &cmd); 902 err = qlcnic_issue_cmd(adapter, &cmd);
902 903
903 if (err != QLCNIC_RCODE_SUCCESS) 904 if (err != QLCNIC_RCODE_SUCCESS)
904 dev_err(&adapter->pdev->dev, 905 dev_err(dev, "Failed to configure port mirroring for vNIC function %d on eSwitch %d\n",
905 "Failed to configure port mirroring%d on eswitch:%d\n",
906 pci_func, id); 906 pci_func, id);
907 else 907 else
908 dev_info(&adapter->pdev->dev, 908 dev_info(dev, "Configured port mirroring for vNIC function %d on eSwitch %d\n",
909 "Configured eSwitch %d for port mirroring:%d\n", 909 pci_func, id);
910 id, pci_func);
911 qlcnic_free_mbx_args(&cmd); 910 qlcnic_free_mbx_args(&cmd);
912 911
913 return err; 912 return err;
@@ -1122,14 +1121,13 @@ err_ret:
1122 return -EIO; 1121 return -EIO;
1123} 1122}
1124 1123
1125static int 1124static int __qlcnic_get_eswitch_port_config(struct qlcnic_adapter *adapter,
1126__qlcnic_get_eswitch_port_config(struct qlcnic_adapter *adapter, 1125 u32 *arg1, u32 *arg2)
1127 u32 *arg1, u32 *arg2)
1128{ 1126{
1129 int err = -EIO; 1127 struct device *dev = &adapter->pdev->dev;
1130 struct qlcnic_cmd_args cmd; 1128 struct qlcnic_cmd_args cmd;
1131 u8 pci_func; 1129 u8 pci_func = *arg1 >> 8;
1132 pci_func = (*arg1 >> 8); 1130 int err = -EIO;
1133 1131
1134 qlcnic_alloc_mbx_args(&cmd, adapter, 1132 qlcnic_alloc_mbx_args(&cmd, adapter,
1135 QLCNIC_CMD_GET_ESWITCH_PORT_CONFIG); 1133 QLCNIC_CMD_GET_ESWITCH_PORT_CONFIG);
@@ -1140,12 +1138,11 @@ __qlcnic_get_eswitch_port_config(struct qlcnic_adapter *adapter,
1140 qlcnic_free_mbx_args(&cmd); 1138 qlcnic_free_mbx_args(&cmd);
1141 1139
1142 if (err == QLCNIC_RCODE_SUCCESS) 1140 if (err == QLCNIC_RCODE_SUCCESS)
1143 dev_info(&adapter->pdev->dev, 1141 dev_info(dev, "Get eSwitch port config for vNIC function %d\n",
1144 "eSwitch port config for pci func %d\n", pci_func); 1142 pci_func);
1145 else 1143 else
1146 dev_err(&adapter->pdev->dev, 1144 dev_err(dev, "Failed to get eswitch port config for vNIC function %d\n",
1147 "Failed to get eswitch port config for pci func %d\n", 1145 pci_func);
1148 pci_func);
1149 return err; 1146 return err;
1150} 1147}
1151/* Configure eSwitch port 1148/* Configure eSwitch port
@@ -1158,9 +1155,10 @@ op_type = 1 for port vlan_id
1158int qlcnic_config_switch_port(struct qlcnic_adapter *adapter, 1155int qlcnic_config_switch_port(struct qlcnic_adapter *adapter,
1159 struct qlcnic_esw_func_cfg *esw_cfg) 1156 struct qlcnic_esw_func_cfg *esw_cfg)
1160{ 1157{
1158 struct device *dev = &adapter->pdev->dev;
1159 struct qlcnic_cmd_args cmd;
1161 int err = -EIO, index; 1160 int err = -EIO, index;
1162 u32 arg1, arg2 = 0; 1161 u32 arg1, arg2 = 0;
1163 struct qlcnic_cmd_args cmd;
1164 u8 pci_func; 1162 u8 pci_func;
1165 1163
1166 if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC) 1164 if (adapter->ahw->op_mode != QLCNIC_MGMT_FUNC)
@@ -1217,11 +1215,11 @@ int qlcnic_config_switch_port(struct qlcnic_adapter *adapter,
1217 qlcnic_free_mbx_args(&cmd); 1215 qlcnic_free_mbx_args(&cmd);
1218 1216
1219 if (err != QLCNIC_RCODE_SUCCESS) 1217 if (err != QLCNIC_RCODE_SUCCESS)
1220 dev_err(&adapter->pdev->dev, 1218 dev_err(dev, "Failed to configure eswitch for vNIC function %d\n",
1221 "Failed to configure eswitch pci func %d\n", pci_func); 1219 pci_func);
1222 else 1220 else
1223 dev_info(&adapter->pdev->dev, 1221 dev_info(dev, "Configured eSwitch for vNIC function %d\n",
1224 "Configured eSwitch for pci func %d\n", pci_func); 1222 pci_func);
1225 1223
1226 return err; 1224 return err;
1227} 1225}