aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/emulex
diff options
context:
space:
mode:
authorVasundhara Volam <vasundhara.volam@emulex.com>2014-01-15 02:53:34 -0500
committerDavid S. Miller <davem@davemloft.net>2014-01-15 18:52:02 -0500
commitbaaa08d148ac2d02567126e85213e82675ca55c0 (patch)
tree220be875e29c7497a82972e093497665386420f0 /drivers/net/ethernet/emulex
parent542963b7d7e9acadde5e2f3ce85f4919e7c4a24a (diff)
be2net: do not call be_set/get_fw_log_level() on Skyhawk-R
Skyhawk-R FW does not support SET/GET_EXT_FAT_CAPABILITIES cmds via which FW logging level can be controlled. Also, the hack used in BE3 to control FW logging level via the ethtool interface is not needed in Skyhawk-R. This patch also cleans up this code by moving be_set/get_fw_log_level() routines to be_cmds.c where they belong. Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com> remove new line Signed-off-by: Sathya Perla <sathya.perla@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/emulex')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_cmds.c70
-rw-r--r--drivers/net/ethernet/emulex/benet/be_cmds.h2
-rw-r--r--drivers/net/ethernet/emulex/benet/be_ethtool.c60
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c47
4 files changed, 82 insertions, 97 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index 1c626e1c3847..b0a2fd6d2210 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -3084,6 +3084,76 @@ err:
3084 return status; 3084 return status;
3085 3085
3086} 3086}
3087
3088int be_cmd_set_fw_log_level(struct be_adapter *adapter, u32 level)
3089{
3090 struct be_dma_mem extfat_cmd;
3091 struct be_fat_conf_params *cfgs;
3092 int status;
3093 int i, j;
3094
3095 memset(&extfat_cmd, 0, sizeof(struct be_dma_mem));
3096 extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps);
3097 extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size,
3098 &extfat_cmd.dma);
3099 if (!extfat_cmd.va)
3100 return -ENOMEM;
3101
3102 status = be_cmd_get_ext_fat_capabilites(adapter, &extfat_cmd);
3103 if (status)
3104 goto err;
3105
3106 cfgs = (struct be_fat_conf_params *)
3107 (extfat_cmd.va + sizeof(struct be_cmd_resp_hdr));
3108 for (i = 0; i < le32_to_cpu(cfgs->num_modules); i++) {
3109 u32 num_modes = le32_to_cpu(cfgs->module[i].num_modes);
3110 for (j = 0; j < num_modes; j++) {
3111 if (cfgs->module[i].trace_lvl[j].mode == MODE_UART)
3112 cfgs->module[i].trace_lvl[j].dbg_lvl =
3113 cpu_to_le32(level);
3114 }
3115 }
3116
3117 status = be_cmd_set_ext_fat_capabilites(adapter, &extfat_cmd, cfgs);
3118err:
3119 pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va,
3120 extfat_cmd.dma);
3121 return status;
3122}
3123
3124int be_cmd_get_fw_log_level(struct be_adapter *adapter)
3125{
3126 struct be_dma_mem extfat_cmd;
3127 struct be_fat_conf_params *cfgs;
3128 int status, j;
3129 int level = 0;
3130
3131 memset(&extfat_cmd, 0, sizeof(struct be_dma_mem));
3132 extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps);
3133 extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size,
3134 &extfat_cmd.dma);
3135
3136 if (!extfat_cmd.va) {
3137 dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n",
3138 __func__);
3139 goto err;
3140 }
3141
3142 status = be_cmd_get_ext_fat_capabilites(adapter, &extfat_cmd);
3143 if (!status) {
3144 cfgs = (struct be_fat_conf_params *)(extfat_cmd.va +
3145 sizeof(struct be_cmd_resp_hdr));
3146 for (j = 0; j < le32_to_cpu(cfgs->module[0].num_modes); j++) {
3147 if (cfgs->module[0].trace_lvl[j].mode == MODE_UART)
3148 level = cfgs->module[0].trace_lvl[j].dbg_lvl;
3149 }
3150 }
3151 pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va,
3152 extfat_cmd.dma);
3153err:
3154 return level;
3155}
3156
3087int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter, 3157int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter,
3088 struct be_dma_mem *cmd) 3158 struct be_dma_mem *cmd)
3089{ 3159{
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.h b/drivers/net/ethernet/emulex/benet/be_cmds.h
index 8054b84d9bf3..39b99f2f7113 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.h
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.h
@@ -2060,6 +2060,8 @@ int be_cmd_set_hsw_config(struct be_adapter *adapter, u16 pvid, u32 domain,
2060int be_cmd_get_hsw_config(struct be_adapter *adapter, u16 *pvid, u32 domain, 2060int be_cmd_get_hsw_config(struct be_adapter *adapter, u16 *pvid, u32 domain,
2061 u16 intf_id, u8 *mode); 2061 u16 intf_id, u8 *mode);
2062int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter); 2062int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter);
2063int be_cmd_set_fw_log_level(struct be_adapter *adapter, u32 level);
2064int be_cmd_get_fw_log_level(struct be_adapter *adapter);
2063int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter, 2065int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter,
2064 struct be_dma_mem *cmd); 2066 struct be_dma_mem *cmd);
2065int be_cmd_set_ext_fat_capabilites(struct be_adapter *adapter, 2067int be_cmd_set_ext_fat_capabilites(struct be_adapter *adapter,
diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
index 08330034d9ef..a7b5aa78ae07 100644
--- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
+++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
@@ -904,73 +904,21 @@ static u32 be_get_msg_level(struct net_device *netdev)
904{ 904{
905 struct be_adapter *adapter = netdev_priv(netdev); 905 struct be_adapter *adapter = netdev_priv(netdev);
906 906
907 if (lancer_chip(adapter)) {
908 dev_err(&adapter->pdev->dev, "Operation not supported\n");
909 return -EOPNOTSUPP;
910 }
911
912 return adapter->msg_enable; 907 return adapter->msg_enable;
913} 908}
914 909
915static void be_set_fw_log_level(struct be_adapter *adapter, u32 level)
916{
917 struct be_dma_mem extfat_cmd;
918 struct be_fat_conf_params *cfgs;
919 int status;
920 int i, j;
921
922 memset(&extfat_cmd, 0, sizeof(struct be_dma_mem));
923 extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps);
924 extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size,
925 &extfat_cmd.dma);
926 if (!extfat_cmd.va) {
927 dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n",
928 __func__);
929 goto err;
930 }
931 status = be_cmd_get_ext_fat_capabilites(adapter, &extfat_cmd);
932 if (!status) {
933 cfgs = (struct be_fat_conf_params *)(extfat_cmd.va +
934 sizeof(struct be_cmd_resp_hdr));
935 for (i = 0; i < le32_to_cpu(cfgs->num_modules); i++) {
936 u32 num_modes = le32_to_cpu(cfgs->module[i].num_modes);
937 for (j = 0; j < num_modes; j++) {
938 if (cfgs->module[i].trace_lvl[j].mode ==
939 MODE_UART)
940 cfgs->module[i].trace_lvl[j].dbg_lvl =
941 cpu_to_le32(level);
942 }
943 }
944 status = be_cmd_set_ext_fat_capabilites(adapter, &extfat_cmd,
945 cfgs);
946 if (status)
947 dev_err(&adapter->pdev->dev,
948 "Message level set failed\n");
949 } else {
950 dev_err(&adapter->pdev->dev, "Message level get failed\n");
951 }
952
953 pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va,
954 extfat_cmd.dma);
955err:
956 return;
957}
958
959static void be_set_msg_level(struct net_device *netdev, u32 level) 910static void be_set_msg_level(struct net_device *netdev, u32 level)
960{ 911{
961 struct be_adapter *adapter = netdev_priv(netdev); 912 struct be_adapter *adapter = netdev_priv(netdev);
962 913
963 if (lancer_chip(adapter)) {
964 dev_err(&adapter->pdev->dev, "Operation not supported\n");
965 return;
966 }
967
968 if (adapter->msg_enable == level) 914 if (adapter->msg_enable == level)
969 return; 915 return;
970 916
971 if ((level & NETIF_MSG_HW) != (adapter->msg_enable & NETIF_MSG_HW)) 917 if ((level & NETIF_MSG_HW) != (adapter->msg_enable & NETIF_MSG_HW))
972 be_set_fw_log_level(adapter, level & NETIF_MSG_HW ? 918 if (BEx_chip(adapter))
973 FW_LOG_LEVEL_DEFAULT : FW_LOG_LEVEL_FATAL); 919 be_cmd_set_fw_log_level(adapter, level & NETIF_MSG_HW ?
920 FW_LOG_LEVEL_DEFAULT :
921 FW_LOG_LEVEL_FATAL);
974 adapter->msg_enable = level; 922 adapter->msg_enable = level;
975 923
976 return; 924 return;
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 1f670d3f77e5..0710f9a84de3 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -4302,47 +4302,9 @@ bool be_is_wol_supported(struct be_adapter *adapter)
4302 !be_is_wol_excluded(adapter)) ? true : false; 4302 !be_is_wol_excluded(adapter)) ? true : false;
4303} 4303}
4304 4304
4305u32 be_get_fw_log_level(struct be_adapter *adapter)
4306{
4307 struct be_dma_mem extfat_cmd;
4308 struct be_fat_conf_params *cfgs;
4309 int status;
4310 u32 level = 0;
4311 int j;
4312
4313 if (lancer_chip(adapter))
4314 return 0;
4315
4316 memset(&extfat_cmd, 0, sizeof(struct be_dma_mem));
4317 extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps);
4318 extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size,
4319 &extfat_cmd.dma);
4320
4321 if (!extfat_cmd.va) {
4322 dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n",
4323 __func__);
4324 goto err;
4325 }
4326
4327 status = be_cmd_get_ext_fat_capabilites(adapter, &extfat_cmd);
4328 if (!status) {
4329 cfgs = (struct be_fat_conf_params *)(extfat_cmd.va +
4330 sizeof(struct be_cmd_resp_hdr));
4331 for (j = 0; j < le32_to_cpu(cfgs->module[0].num_modes); j++) {
4332 if (cfgs->module[0].trace_lvl[j].mode == MODE_UART)
4333 level = cfgs->module[0].trace_lvl[j].dbg_lvl;
4334 }
4335 }
4336 pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va,
4337 extfat_cmd.dma);
4338err:
4339 return level;
4340}
4341
4342static int be_get_initial_config(struct be_adapter *adapter) 4305static int be_get_initial_config(struct be_adapter *adapter)
4343{ 4306{
4344 int status; 4307 int status, level;
4345 u32 level;
4346 4308
4347 status = be_cmd_get_cntl_attributes(adapter); 4309 status = be_cmd_get_cntl_attributes(adapter);
4348 if (status) 4310 if (status)
@@ -4362,8 +4324,11 @@ static int be_get_initial_config(struct be_adapter *adapter)
4362 /* Must be a power of 2 or else MODULO will BUG_ON */ 4324 /* Must be a power of 2 or else MODULO will BUG_ON */
4363 adapter->be_get_temp_freq = 64; 4325 adapter->be_get_temp_freq = 64;
4364 4326
4365 level = be_get_fw_log_level(adapter); 4327 if (BEx_chip(adapter)) {
4366 adapter->msg_enable = level <= FW_LOG_LEVEL_DEFAULT ? NETIF_MSG_HW : 0; 4328 level = be_cmd_get_fw_log_level(adapter);
4329 adapter->msg_enable =
4330 level <= FW_LOG_LEVEL_DEFAULT ? NETIF_MSG_HW : 0;
4331 }
4367 4332
4368 adapter->cfg_num_qs = netif_get_num_default_rss_queues(); 4333 adapter->cfg_num_qs = netif_get_num_default_rss_queues();
4369 return 0; 4334 return 0;