* [PATCH net-next 01/14] be2net: use -ENETDOWN error status when interface is down
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 02/14] be2net: fix error status for FW-download Sathya Perla
` (13 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
Updating VF's tx-rate and FW-download are not allowed when the interface is
down. In such cases return -ENETDOWN to the stack.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 6297e72..db5fb51 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -1372,7 +1372,7 @@ static int be_set_vf_tx_rate(struct net_device *netdev, int vf,
if (!link_status) {
dev_err(dev, "TX-rate setting not allowed when link is down\n");
- status = -EPERM;
+ status = -ENETDOWN;
goto err;
}
@@ -4221,7 +4221,7 @@ int be_load_fw(struct be_adapter *adapter, u8 *fw_file)
if (!netif_running(adapter->netdev)) {
dev_err(&adapter->pdev->dev,
"Firmware load not allowed (interface is down)\n");
- return -1;
+ return -ENETDOWN;
}
status = request_firmware(&fw, fw_file, &adapter->pdev->dev);
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 02/14] be2net: fix error status for FW-download
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 01/14] be2net: use -ENETDOWN error status when interface is down Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 03/14] be2net: return -ETIMEDOUT when a FW-cmd times out Sathya Perla
` (12 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
For FW download ethtool cmd, if the user provides an FW-image incompatible
with the chip, return -EINVAL instead of -1.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index db5fb51..61632f8 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3956,7 +3956,7 @@ static int be_flash_skyhawk(struct be_adapter *adapter,
fsec = get_fsec_info(adapter, filehdr_size + img_hdrs_size, fw);
if (!fsec) {
dev_err(dev, "Invalid Cookie. FW image may be corrupted\n");
- return -1;
+ return -EINVAL;
}
for (i = 0; i < le32_to_cpu(fsec->fsec_hdr.num_images); i++) {
@@ -4187,7 +4187,7 @@ static int be_fw_download(struct be_adapter *adapter, const struct firmware* fw)
&flash_cmd,
num_imgs);
else {
- status = -1;
+ status = -EINVAL;
dev_err(&adapter->pdev->dev,
"Can't load BE3 UFI on BE3R\n");
}
@@ -4198,7 +4198,7 @@ static int be_fw_download(struct be_adapter *adapter, const struct firmware* fw)
if (ufi_type == UFI_TYPE2)
status = be_flash_BEx(adapter, fw, &flash_cmd, 0);
else if (ufi_type == -1)
- status = -1;
+ status = -EINVAL;
dma_free_coherent(&adapter->pdev->dev, flash_cmd.size, flash_cmd.va,
flash_cmd.dma);
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 03/14] be2net: return -ETIMEDOUT when a FW-cmd times out
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 01/14] be2net: use -ENETDOWN error status when interface is down Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 02/14] be2net: fix error status for FW-download Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 04/14] be2net: return -ENOMEM for memory allocation failures Sathya Perla
` (11 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
When the FW stops responding with completions, return -ETIMEDOUT error
(instead of -1) to the stack.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_cmds.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index 9904bbf..e632bd2 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -2224,7 +2224,7 @@ int lancer_cmd_write_object(struct be_adapter *adapter, struct be_dma_mem *cmd,
if (!wait_for_completion_timeout(&adapter->et_cmd_compl,
msecs_to_jiffies(60000)))
- status = -1;
+ status = -ETIMEDOUT;
else
status = adapter->flash_status;
@@ -2320,7 +2320,7 @@ int be_cmd_write_flashrom(struct be_adapter *adapter, struct be_dma_mem *cmd,
if (!wait_for_completion_timeout(&adapter->et_cmd_compl,
msecs_to_jiffies(40000)))
- status = -1;
+ status = -ETIMEDOUT;
else
status = adapter->flash_status;
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 04/14] be2net: return -ENOMEM for memory allocation failures
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (2 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 03/14] be2net: return -ETIMEDOUT when a FW-cmd times out Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 05/14] be2net: fix return status of some ethtool methods Sathya Perla
` (10 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 61632f8..bd0cadc 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2931,7 +2931,7 @@ static int be_setup_wol(struct be_adapter *adapter, bool enable)
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
GFP_KERNEL);
if (cmd.va == NULL)
- return -1;
+ return -ENOMEM;
if (enable) {
status = pci_write_config_dword(adapter->pdev,
@@ -4586,7 +4586,7 @@ static int be_stats_init(struct be_adapter *adapter)
cmd->va = dma_zalloc_coherent(&adapter->pdev->dev, cmd->size, &cmd->dma,
GFP_KERNEL);
if (cmd->va == NULL)
- return -1;
+ return -ENOMEM;
return 0;
}
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 05/14] be2net: fix return status of some ethtool methods
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (3 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 04/14] be2net: return -ENOMEM for memory allocation failures Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 06/14] be2net: fix return status of some ndo methods Sathya Perla
` (9 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
ethtool expects a -ve status value to be returned when a driver method
encounters an error. The driver was directly passing the
error status returned by FW (a positive value) to ethtool.
This patch fixes this by returning -EIO status in cases where FW returns
an error.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be.h | 2 ++
drivers/net/ethernet/emulex/benet/be_ethtool.c | 12 +++++++-----
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index d3d871b..3e639e8 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -672,6 +672,8 @@ static inline void swap_dws(void *wrb, int len)
#endif /* __BIG_ENDIAN */
}
+#define be_cmd_status(status) (status > 0 ? -EIO : status)
+
static inline u8 is_tcp_pkt(struct sk_buff *skb)
{
u8 val = 0;
diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
index e2da4d2..25f516d 100644
--- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
+++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
@@ -643,7 +643,7 @@ be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
if (status)
dev_warn(&adapter->pdev->dev, "Pause param set failed.\n");
- return status;
+ return be_cmd_status(status);
}
static int be_set_phys_id(struct net_device *netdev,
@@ -762,7 +762,7 @@ static int be_test_ddr_dma(struct be_adapter *adapter)
err:
dma_free_coherent(&adapter->pdev->dev, ddrdma_cmd.size, ddrdma_cmd.va,
ddrdma_cmd.dma);
- return ret;
+ return be_cmd_status(ret);
}
static u64 be_loopback_test(struct be_adapter *adapter, u8 loopback_type,
@@ -885,7 +885,7 @@ static int be_read_eeprom(struct net_device *netdev,
dma_free_coherent(&adapter->pdev->dev, eeprom_cmd.size, eeprom_cmd.va,
eeprom_cmd.dma);
- return status;
+ return be_cmd_status(status);
}
static u32 be_get_msg_level(struct net_device *netdev)
@@ -1042,7 +1042,7 @@ static int be_set_rss_hash_opts(struct be_adapter *adapter,
if (!status)
adapter->rss_info.rss_flags = rss_flags;
- return status;
+ return be_cmd_status(status);
}
static int be_set_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd)
@@ -1080,6 +1080,7 @@ static int be_set_channels(struct net_device *netdev,
struct ethtool_channels *ch)
{
struct be_adapter *adapter = netdev_priv(netdev);
+ int status;
if (ch->rx_count || ch->tx_count || ch->other_count ||
!ch->combined_count || ch->combined_count > be_max_qs(adapter))
@@ -1087,7 +1088,8 @@ static int be_set_channels(struct net_device *netdev,
adapter->cfg_num_qs = ch->combined_count;
- return be_update_queues(adapter);
+ status = be_update_queues(adapter);
+ return be_cmd_status(status);
}
static u32 be_get_rxfh_indir_size(struct net_device *netdev)
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 06/14] be2net: fix return status of some ndo methods
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (4 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 05/14] be2net: fix return status of some ethtool methods Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 07/14] be2net: update UE bit description strings Sathya Perla
` (8 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
The netlink layer expects a -ve status value to be returned when a driver
ndo method encounters an error. The driver was directly passing the
error status returned by FW (a positive value) to the stack.
This patch fixes this by returning -EIO status when a FW-cmd reports an error.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 43 +++++++++++++++++----------
1 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index bd0cadc..46cdcba 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -1281,13 +1281,15 @@ static int be_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
vf + 1);
}
- if (status)
- dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed\n",
- mac, vf);
- else
- memcpy(vf_cfg->mac_addr, mac, ETH_ALEN);
+ if (status) {
+ dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed: %#x",
+ mac, vf, status);
+ return be_cmd_status(status);
+ }
- return status;
+ ether_addr_copy(vf_cfg->mac_addr, mac);
+
+ return 0;
}
static int be_get_vf_config(struct net_device *netdev, int vf,
@@ -1336,12 +1338,16 @@ static int be_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos)
vf + 1, vf_cfg->if_handle, 0);
}
- if (!status)
- vf_cfg->vlan_tag = vlan;
- else
- dev_info(&adapter->pdev->dev,
- "VLAN %d config on VF %d failed\n", vlan, vf);
- return status;
+ if (status) {
+ dev_err(&adapter->pdev->dev,
+ "VLAN %d config on VF %d failed : %#x\n", vlan,
+ vf, status);
+ return be_cmd_status(status);
+ }
+
+ vf_cfg->vlan_tag = vlan;
+
+ return 0;
}
static int be_set_vf_tx_rate(struct net_device *netdev, int vf,
@@ -1403,7 +1409,7 @@ config_qos:
err:
dev_err(dev, "TX-rate setting of %dMbps on VF%d failed\n",
max_tx_rate, vf);
- return status;
+ return be_cmd_status(status);
}
static int be_set_vf_link_state(struct net_device *netdev, int vf,
int link_state)
@@ -1418,10 +1424,15 @@ static int be_set_vf_link_state(struct net_device *netdev, int vf,
return -EINVAL;
status = be_cmd_set_logical_link_config(adapter, link_state, vf+1);
- if (!status)
- adapter->vf_cfg[vf].plink_tracking = link_state;
+ if (status) {
+ dev_err(&adapter->pdev->dev,
+ "Link state change on VF %d failed: %#x\n", vf, status);
+ return be_cmd_status(status);
+ }
- return status;
+ adapter->vf_cfg[vf].plink_tracking = link_state;
+
+ return 0;
}
static void be_aic_update(struct be_aic_obj *aic, u64 rx_pkts, u64 tx_pkts,
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 07/14] be2net: update UE bit description strings
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (5 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 06/14] be2net: fix return status of some ndo methods Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 08/14] be2net: reduce arguments passed to FW-cmd routines Sathya Perla
` (7 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Vasundhara Volam <vasundhara.volam@emulex.com>
This patch updates some description strings for BEx/Skyhawk-R
UE (unrecoverable error) status register bits. The appropriate strings
are logged when a UE is detected in the adapter.
Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 46cdcba..e50cf03 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -81,10 +81,10 @@ static const char * const ue_status_low_desc[] = {
"P1_OB_LINK ",
"HOST_GPIO ",
"MBOX ",
- "AXGMAC0",
- "AXGMAC1",
- "JTAG",
- "MPU_INTPEND"
+ "ERX2 ",
+ "SPARE ",
+ "JTAG ",
+ "MPU_INTPEND "
};
/* UE Status High CSR */
static const char * const ue_status_hi_desc[] = {
@@ -109,16 +109,16 @@ static const char * const ue_status_hi_desc[] = {
"HOST5",
"HOST6",
"HOST7",
- "HOST8",
- "HOST9",
+ "ECRC",
+ "Poison TLP",
"NETC",
- "Unknown",
- "Unknown",
- "Unknown",
- "Unknown",
- "Unknown",
- "Unknown",
- "Unknown",
+ "PERIPH",
+ "LLTXULP",
+ "D2P",
+ "RCON",
+ "LDMA",
+ "LLTXP",
+ "LLTXPB",
"Unknown"
};
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 08/14] be2net: reduce arguments passed to FW-cmd routines
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (6 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 07/14] be2net: update UE bit description strings Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 09/14] be2net: remove unused structures in be_cmds.h Sathya Perla
` (6 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
A pointer to adapter struct is passed anyway to all of the FW-cmd routines
in be_cmds.c. For routines which query data from FW, the adapter pointer
is enough to return the queried fields.
There is no need to separately pass pointers to individual members of
the adapter structure. This patch fixes this for be_cmd_get_fw_ver()
and be_cmd_get_fw_cfg() routines.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_cmds.c | 19 ++++++++-----------
drivers/net/ethernet/emulex/benet/be_cmds.h | 6 ++----
drivers/net/ethernet/emulex/benet/be_main.c | 10 +++-------
3 files changed, 13 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index e632bd2..791094c 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -1749,8 +1749,7 @@ err:
}
/* Uses synchronous mcc */
-int be_cmd_get_fw_ver(struct be_adapter *adapter, char *fw_ver,
- char *fw_on_flash)
+int be_cmd_get_fw_ver(struct be_adapter *adapter)
{
struct be_mcc_wrb *wrb;
struct be_cmd_req_get_fw_version *req;
@@ -1772,9 +1771,8 @@ int be_cmd_get_fw_ver(struct be_adapter *adapter, char *fw_ver,
status = be_mcc_notify_wait(adapter);
if (!status) {
struct be_cmd_resp_get_fw_version *resp = embedded_payload(wrb);
- strcpy(fw_ver, resp->firmware_version_string);
- if (fw_on_flash)
- strcpy(fw_on_flash, resp->fw_on_flash_version_string);
+ strcpy(adapter->fw_ver, resp->firmware_version_string);
+ strcpy(adapter->fw_on_flash, resp->fw_on_flash_version_string);
}
err:
spin_unlock_bh(&adapter->mcc_lock);
@@ -1997,8 +1995,7 @@ err:
}
/* Uses mbox */
-int be_cmd_query_fw_cfg(struct be_adapter *adapter, u32 *port_num,
- u32 *mode, u32 *caps, u16 *asic_rev)
+int be_cmd_query_fw_cfg(struct be_adapter *adapter)
{
struct be_mcc_wrb *wrb;
struct be_cmd_req_query_fw_cfg *req;
@@ -2017,10 +2014,10 @@ int be_cmd_query_fw_cfg(struct be_adapter *adapter, u32 *port_num,
status = be_mbox_notify_wait(adapter);
if (!status) {
struct be_cmd_resp_query_fw_cfg *resp = embedded_payload(wrb);
- *port_num = le32_to_cpu(resp->phys_port);
- *mode = le32_to_cpu(resp->function_mode);
- *caps = le32_to_cpu(resp->function_caps);
- *asic_rev = le32_to_cpu(resp->asic_revision) & 0xFF;
+ adapter->port_num = le32_to_cpu(resp->phys_port);
+ adapter->function_mode = le32_to_cpu(resp->function_mode);
+ adapter->function_caps = le32_to_cpu(resp->function_caps);
+ adapter->asic_rev = le32_to_cpu(resp->asic_revision) & 0xFF;
}
mutex_unlock(&adapter->mbox_lock);
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.h b/drivers/net/ethernet/emulex/benet/be_cmds.h
index c0f7167..a9219a9 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.h
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.h
@@ -2071,16 +2071,14 @@ int be_cmd_reset(struct be_adapter *adapter);
int be_cmd_get_stats(struct be_adapter *adapter, struct be_dma_mem *nonemb_cmd);
int lancer_cmd_get_pport_stats(struct be_adapter *adapter,
struct be_dma_mem *nonemb_cmd);
-int be_cmd_get_fw_ver(struct be_adapter *adapter, char *fw_ver,
- char *fw_on_flash);
+int be_cmd_get_fw_ver(struct be_adapter *adapter);
int be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *, int num);
int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array,
u32 num);
int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 status);
int be_cmd_set_flow_control(struct be_adapter *adapter, u32 tx_fc, u32 rx_fc);
int be_cmd_get_flow_control(struct be_adapter *adapter, u32 *tx_fc, u32 *rx_fc);
-int be_cmd_query_fw_cfg(struct be_adapter *adapter, u32 *port_num,
- u32 *function_mode, u32 *function_caps, u16 *asic_rev);
+int be_cmd_query_fw_cfg(struct be_adapter *adapter);
int be_cmd_reset_function(struct be_adapter *adapter);
int be_cmd_rss_config(struct be_adapter *adapter, u8 *rsstable,
u32 rss_hash_opts, u16 table_size, const u8 *rss_hkey);
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index e50cf03..1abca8b 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3425,10 +3425,7 @@ static int be_get_config(struct be_adapter *adapter)
u16 profile_id;
int status;
- status = be_cmd_query_fw_cfg(adapter, &adapter->port_num,
- &adapter->function_mode,
- &adapter->function_caps,
- &adapter->asic_rev);
+ status = be_cmd_query_fw_cfg(adapter);
if (status)
return status;
@@ -3617,7 +3614,7 @@ static int be_setup(struct be_adapter *adapter)
if (status)
goto err;
- be_cmd_get_fw_ver(adapter, adapter->fw_ver, adapter->fw_on_flash);
+ be_cmd_get_fw_ver(adapter);
if (BE2_chip(adapter) && fw_major_num(adapter->fw_ver) < 4) {
dev_err(dev, "Firmware on card is old(%s), IRQs may not work.",
@@ -4247,8 +4244,7 @@ int be_load_fw(struct be_adapter *adapter, u8 *fw_file)
status = be_fw_download(adapter, fw);
if (!status)
- be_cmd_get_fw_ver(adapter, adapter->fw_ver,
- adapter->fw_on_flash);
+ be_cmd_get_fw_ver(adapter);
fw_exit:
release_firmware(fw);
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 09/14] be2net: remove unused structures in be_cmds.h
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (7 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 08/14] be2net: reduce arguments passed to FW-cmd routines Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 10/14] be2net: use "if (!foo)" test style Sathya Perla
` (5 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_cmds.h | 29 ---------------------------
1 files changed, 0 insertions(+), 29 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.h b/drivers/net/ethernet/emulex/benet/be_cmds.h
index a9219a9..03e8a15 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.h
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.h
@@ -1081,11 +1081,6 @@ struct be_cmd_req_modify_eq_delay {
struct be_set_eqd set_eqd[MAX_EVT_QS];
} __packed;
-struct be_cmd_resp_modify_eq_delay {
- struct be_cmd_resp_hdr hdr;
- u32 rsvd0;
-} __packed;
-
/******************** Get FW Config *******************/
/* The HW can come up in either of the following multi-channel modes
* based on the skew/IPL.
@@ -1156,11 +1151,6 @@ struct be_cmd_req_enable_disable_beacon {
u8 status_duration;
} __packed;
-struct be_cmd_resp_enable_disable_beacon {
- struct be_cmd_resp_hdr resp_hdr;
- u32 rsvd0;
-} __packed;
-
struct be_cmd_req_get_beacon_state {
struct be_cmd_req_hdr hdr;
u8 port_num;
@@ -1326,11 +1316,6 @@ struct be_cmd_req_set_lmode {
u8 loopback_state;
};
-struct be_cmd_resp_set_lmode {
- struct be_cmd_resp_hdr resp_hdr;
- u8 rsvd0[4];
-};
-
/********************** DDR DMA test *********************/
struct be_cmd_req_ddrdma_test {
struct be_cmd_req_hdr hdr;
@@ -1434,11 +1419,6 @@ struct be_cmd_req_set_qos {
u32 rsvd[7];
};
-struct be_cmd_resp_set_qos {
- struct be_cmd_resp_hdr hdr;
- u32 rsvd;
-};
-
/*********************** Controller Attributes ***********************/
struct be_cmd_req_cntl_attribs {
struct be_cmd_req_hdr hdr;
@@ -1572,11 +1552,6 @@ struct be_cmd_req_set_hsw_config {
u8 context[sizeof(struct amap_set_hsw_context) / 8];
} __packed;
-struct be_cmd_resp_set_hsw_config {
- struct be_cmd_resp_hdr hdr;
- u32 rsvd;
-};
-
struct amap_get_hsw_req_context {
u8 interface_id[16];
u8 rsvd0[14];
@@ -1966,10 +1941,6 @@ struct be_cmd_req_set_profile_config {
u8 desc[2 * RESOURCE_DESC_SIZE_V1];
} __packed;
-struct be_cmd_resp_set_profile_config {
- struct be_cmd_resp_hdr hdr;
-};
-
struct be_cmd_req_get_active_profile {
struct be_cmd_req_hdr hdr;
u32 rsvd;
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 10/14] be2net: use "if (!foo)" test style
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (8 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 09/14] be2net: remove unused structures in be_cmds.h Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 11/14] be2net: use be_max_vfs() macro to access max-vfs Sathya Perla
` (4 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Kalesh AP <kalesh.purayil@emulex.com>
Replace "if (foo == NULL)" statements with "if (!foo)" to be consistent
across the driver.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 1abca8b..b354b28 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2034,7 +2034,7 @@ static void be_rx_cq_clean(struct be_rx_obj *rxo)
*/
for (;;) {
rxcp = be_rx_compl_get(rxo);
- if (rxcp == NULL) {
+ if (!rxcp) {
if (lancer_chip(adapter))
break;
@@ -2941,7 +2941,7 @@ static int be_setup_wol(struct be_adapter *adapter, bool enable)
cmd.size = sizeof(struct be_cmd_req_acpi_wol_magic_config);
cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
GFP_KERNEL);
- if (cmd.va == NULL)
+ if (!cmd.va)
return -ENOMEM;
if (enable) {
@@ -4133,7 +4133,7 @@ lancer_fw_exit:
static int be_get_ufi_type(struct be_adapter *adapter,
struct flash_file_hdr_g3 *fhdr)
{
- if (fhdr == NULL)
+ if (!fhdr)
goto be_get_ufi_exit;
if (skyhawk_chip(adapter) && fhdr->build[0] == '4')
@@ -4475,12 +4475,12 @@ static int be_map_pci_bars(struct be_adapter *adapter)
if (BEx_chip(adapter) && be_physfn(adapter)) {
adapter->csr = pci_iomap(adapter->pdev, 2, 0);
- if (adapter->csr == NULL)
+ if (!adapter->csr)
return -ENOMEM;
}
addr = pci_iomap(adapter->pdev, db_bar(adapter), 0);
- if (addr == NULL)
+ if (!addr)
goto pci_map_err;
adapter->db = addr;
@@ -4543,7 +4543,7 @@ static int be_ctrl_init(struct be_adapter *adapter)
rx_filter->va = dma_zalloc_coherent(&adapter->pdev->dev,
rx_filter->size, &rx_filter->dma,
GFP_KERNEL);
- if (rx_filter->va == NULL) {
+ if (!rx_filter->va) {
status = -ENOMEM;
goto free_mbox;
}
@@ -4592,7 +4592,7 @@ static int be_stats_init(struct be_adapter *adapter)
cmd->va = dma_zalloc_coherent(&adapter->pdev->dev, cmd->size, &cmd->dma,
GFP_KERNEL);
- if (cmd->va == NULL)
+ if (!cmd->va)
return -ENOMEM;
return 0;
}
@@ -4814,7 +4814,7 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
pci_set_master(pdev);
netdev = alloc_etherdev_mqs(sizeof(*adapter), MAX_TX_QS, MAX_RX_QS);
- if (netdev == NULL) {
+ if (!netdev) {
status = -ENOMEM;
goto rel_reg;
}
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 11/14] be2net: use be_max_vfs() macro to access max-vfs
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (9 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 10/14] be2net: use "if (!foo)" test style Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 12/14] be2net: avoid SRIOV config for BE2 chip Sathya Perla
` (3 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Vasundhara Volam <vasundhara.volam@emulex.com>
max-vfs value must be accessed via the macro be_max_vfs(adapter).
The earlier patch "create optimal number of queues on SR-IOV config"
by mistake, did not use this macro. This patch fixes it.
fixes: bec84e6b ("be2net: create optimal number of queues on SR-IOV config")
Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index b354b28..c622e42 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3312,7 +3312,7 @@ static void BEx_get_resources(struct be_adapter *adapter,
res->max_rx_qs = res->max_rss_qs + 1;
if (be_physfn(adapter))
- res->max_evt_qs = (res->max_vfs > 0) ?
+ res->max_evt_qs = (be_max_vfs(adapter) > 0) ?
BE3_SRIOV_MAX_EVT_QS : BE3_MAX_EVT_QS;
else
res->max_evt_qs = 1;
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 12/14] be2net: avoid SRIOV config for BE2 chip
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (10 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 11/14] be2net: use be_max_vfs() macro to access max-vfs Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 13/14] be2net: use adapter->flags to track SRIOV state Sathya Perla
` (2 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Vasundhara Volam <vasundhara.volam@emulex.com>
As SRIOV is not supported on BE2 chip, avoid calling be_get/set_sriov_config()
for BE2 chip.
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index c622e42..427e0d7 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3434,7 +3434,9 @@ static int be_get_config(struct be_adapter *adapter)
if (!status)
dev_info(&adapter->pdev->dev,
"Using profile 0x%x\n", profile_id);
+ }
+ if (!BE2_chip(adapter) && be_physfn(adapter)) {
status = be_get_sriov_config(adapter);
if (status)
return status;
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 13/14] be2net: use adapter->flags to track SRIOV state
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (11 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 12/14] be2net: avoid SRIOV config for BE2 chip Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 10:50 ` [PATCH net-next 14/14] be2net: update driver version to 10.4 Sathya Perla
2014-07-17 23:38 ` [PATCH net-next 00/14] be2net: patch set David Miller
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
From: Vasundhara Volam <vasundhara.volam@emulex.com>
The driver so far used adapter->num_vfs value to check if SR-IOV is enabled
or not. But, the patch bec84e6("create optimal number of queues on SR-IOV
config") changed this logic. The adapter->num_vfs value is validated and set
much before SR-IOV is enabled. So, we now use an explicit flag to track
SR-IOV enabled state.
Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be.h | 4 +++-
drivers/net/ethernet/emulex/benet/be_main.c | 3 +++
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 3e639e8..25cd3c9 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -372,6 +372,7 @@ enum vf_state {
};
#define BE_FLAGS_LINK_STATUS_INIT 1
+#define BE_FLAGS_SRIOV_ENABLED (1 << 2)
#define BE_FLAGS_WORKER_SCHEDULED (1 << 3)
#define BE_FLAGS_VLAN_PROMISC (1 << 4)
#define BE_FLAGS_MCAST_PROMISC (1 << 5)
@@ -525,7 +526,8 @@ struct be_adapter {
#define be_physfn(adapter) (!adapter->virtfn)
#define be_virtfn(adapter) (adapter->virtfn)
-#define sriov_enabled(adapter) (adapter->num_vfs > 0)
+#define sriov_enabled(adapter) (adapter->flags & \
+ BE_FLAGS_SRIOV_ENABLED)
#define for_all_vfs(adapter, vf_cfg, i) \
for (i = 0, vf_cfg = &adapter->vf_cfg[i]; i < adapter->num_vfs; \
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 427e0d7..9f82c01 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3049,6 +3049,7 @@ static void be_vf_clear(struct be_adapter *adapter)
done:
kfree(adapter->vf_cfg);
adapter->num_vfs = 0;
+ adapter->flags &= ~BE_FLAGS_SRIOV_ENABLED;
}
static void be_clear_queues(struct be_adapter *adapter)
@@ -3241,6 +3242,8 @@ static int be_vf_setup(struct be_adapter *adapter)
goto err;
}
}
+
+ adapter->flags |= BE_FLAGS_SRIOV_ENABLED;
return 0;
err:
dev_err(dev, "VF setup failed\n");
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 14/14] be2net: update driver version to 10.4
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (12 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 13/14] be2net: use adapter->flags to track SRIOV state Sathya Perla
@ 2014-07-17 10:50 ` Sathya Perla
2014-07-17 23:38 ` [PATCH net-next 00/14] be2net: patch set David Miller
14 siblings, 0 replies; 16+ messages in thread
From: Sathya Perla @ 2014-07-17 10:50 UTC (permalink / raw)
To: netdev
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
drivers/net/ethernet/emulex/benet/be.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 25cd3c9..0048ef8 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -34,7 +34,7 @@
#include "be_hw.h"
#include "be_roce.h"
-#define DRV_VER "10.2u"
+#define DRV_VER "10.4u"
#define DRV_NAME "be2net"
#define BE_NAME "Emulex BladeEngine2"
#define BE3_NAME "Emulex BladeEngine3"
--
1.7.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 00/14] be2net: patch set
2014-07-17 10:50 [PATCH net-next 00/14] be2net: patch set Sathya Perla
` (13 preceding siblings ...)
2014-07-17 10:50 ` [PATCH net-next 14/14] be2net: update driver version to 10.4 Sathya Perla
@ 2014-07-17 23:38 ` David Miller
14 siblings, 0 replies; 16+ messages in thread
From: David Miller @ 2014-07-17 23:38 UTC (permalink / raw)
To: sathya.perla; +Cc: netdev
From: Sathya Perla <sathya.perla@emulex.com>
Date: Thu, 17 Jul 2014 16:20:18 +0530
> Patches 1 to 6 address issues with return values of some ndo/ethtool
> driver methods. In error scenarios, either an inappropriate error or
> a +ve return value (where the stack expects a -ve value) was being returned.
>
> Patch 7 updates description strings for certain UE bits.
>
> Patch 8 cleans up (reduces) argument passing for a few routines in be_cmds.c.
>
> Patch 9 removes some unused code (unused definitions.)
>
> Patch 10 updates NULL check in the driver to a consistent "if (!foo)" style.
>
> Patchs 11 to 13 fix a few minor issues with the earlier patch bec84e6
> ("create optimal number of queues on SR-IOV config"):
> - patch 11 fixes BEx_get_resources() code to use be_max_vfs() macro
> - patch 12 skips SR-IOV config code for BE2 that doesn't support SRIOV
> - patch 13 uses adapter->flags to track SRIOV enabled state
>
> Patch 14 updates the driver version.
>
> Please consider applying to the net-next tree. Thanks.
Series applied, thanks.
^ permalink raw reply [flat|nested] 16+ messages in thread