* [PATCH net 0/4] bnxt_en: Misc. small fixes.
@ 2017-03-08 23:44 Michael Chan
2017-03-08 23:44 ` [PATCH net 1/4] bnxt_en: Perform function reset earlier during probe Michael Chan
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Michael Chan @ 2017-03-08 23:44 UTC (permalink / raw)
To: davem; +Cc: netdev
Fixes include moving the initial function reset, notifying the RDMA driver
during tx timeout, setting dcbx_cap properly depending on whether the
firmware agent is running or not, and an autoneg related improvement.
Michael Chan (4):
bnxt_en: Perform function reset earlier during probe.
bnxt_en: Call bnxt_ulp_stop() during tx timeout.
bnxt_en: Check if firmware LLDP agent is running.
bnxt_en: Ignore 0 value in autoneg supported speed from firmware.
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 25 ++++++++++++++++++-------
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c | 2 +-
3 files changed, 20 insertions(+), 8 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH net 1/4] bnxt_en: Perform function reset earlier during probe.
2017-03-08 23:44 [PATCH net 0/4] bnxt_en: Misc. small fixes Michael Chan
@ 2017-03-08 23:44 ` Michael Chan
2017-03-08 23:44 ` [PATCH net 2/4] bnxt_en: Call bnxt_ulp_stop() during tx timeout Michael Chan
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Michael Chan @ 2017-03-08 23:44 UTC (permalink / raw)
To: davem; +Cc: netdev
The firmware call to do function reset is done too late. It is causing
the rings that have been reserved to be freed. In NPAR mode, this bug
is causing us to run out of rings.
Fixes: 391be5c27364 ("bnxt_en: Implement new scheme to reserve tx rings.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 235733e..33293ac 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -7444,6 +7444,10 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
if (rc)
goto init_err_pci_clean;
+ rc = bnxt_hwrm_func_reset(bp);
+ if (rc)
+ goto init_err_pci_clean;
+
bnxt_hwrm_fw_set_time(bp);
dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_SG |
@@ -7554,10 +7558,6 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
if (rc)
goto init_err_pci_clean;
- rc = bnxt_hwrm_func_reset(bp);
- if (rc)
- goto init_err_pci_clean;
-
rc = bnxt_init_int_mode(bp);
if (rc)
goto init_err_pci_clean;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net 2/4] bnxt_en: Call bnxt_ulp_stop() during tx timeout.
2017-03-08 23:44 [PATCH net 0/4] bnxt_en: Misc. small fixes Michael Chan
2017-03-08 23:44 ` [PATCH net 1/4] bnxt_en: Perform function reset earlier during probe Michael Chan
@ 2017-03-08 23:44 ` Michael Chan
2017-03-08 23:44 ` [PATCH net 3/4] bnxt_en: Check if firmware LLDP agent is running Michael Chan
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Michael Chan @ 2017-03-08 23:44 UTC (permalink / raw)
To: davem; +Cc: netdev
If we call bnxt_reset_task() due to tx timeout, we should call
bnxt_ulp_stop() to inform the RDMA driver about the error and the
impending reset.
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 33293ac..bbe9371 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -6495,8 +6495,14 @@ static void bnxt_reset_task(struct bnxt *bp, bool silent)
if (!silent)
bnxt_dbg_dump_states(bp);
if (netif_running(bp->dev)) {
+ int rc;
+
+ if (!silent)
+ bnxt_ulp_stop(bp);
bnxt_close_nic(bp, false, false);
- bnxt_open_nic(bp, false, false);
+ rc = bnxt_open_nic(bp, false, false);
+ if (!silent && !rc)
+ bnxt_ulp_start(bp);
}
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net 3/4] bnxt_en: Check if firmware LLDP agent is running.
2017-03-08 23:44 [PATCH net 0/4] bnxt_en: Misc. small fixes Michael Chan
2017-03-08 23:44 ` [PATCH net 1/4] bnxt_en: Perform function reset earlier during probe Michael Chan
2017-03-08 23:44 ` [PATCH net 2/4] bnxt_en: Call bnxt_ulp_stop() during tx timeout Michael Chan
@ 2017-03-08 23:44 ` Michael Chan
2017-03-08 23:44 ` [PATCH net 4/4] bnxt_en: Ignore 0 value in autoneg supported speed from firmware Michael Chan
2017-03-10 1:38 ` [PATCH net 0/4] bnxt_en: Misc. small fixes David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Michael Chan @ 2017-03-08 23:44 UTC (permalink / raw)
To: davem; +Cc: netdev
Set DCB_CAP_DCBX_HOST capability flag only if the firmware LLDP agent
is not running.
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 ++++
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c | 2 +-
3 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index bbe9371..869d4c9 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -4465,6 +4465,10 @@ static int bnxt_hwrm_func_qcfg(struct bnxt *bp)
vf->vlan = le16_to_cpu(resp->vlan) & VLAN_VID_MASK;
}
#endif
+ if (BNXT_PF(bp) && (le16_to_cpu(resp->flags) &
+ FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED))
+ bp->flags |= BNXT_FLAG_FW_LLDP_AGENT;
+
switch (resp->port_partition_type) {
case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0:
case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5:
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index faf26a2..c7a5b84 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -993,6 +993,7 @@ struct bnxt {
BNXT_FLAG_ROCEV2_CAP)
#define BNXT_FLAG_NO_AGG_RINGS 0x20000
#define BNXT_FLAG_RX_PAGE_MODE 0x40000
+ #define BNXT_FLAG_FW_LLDP_AGENT 0x80000
#define BNXT_FLAG_CHIP_NITRO_A0 0x1000000
#define BNXT_FLAG_ALL_CONFIG_FEATS (BNXT_FLAG_TPA | \
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
index fdf2d8c..03532061 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
@@ -474,7 +474,7 @@ void bnxt_dcb_init(struct bnxt *bp)
return;
bp->dcbx_cap = DCB_CAP_DCBX_VER_IEEE;
- if (BNXT_PF(bp))
+ if (BNXT_PF(bp) && !(bp->flags & BNXT_FLAG_FW_LLDP_AGENT))
bp->dcbx_cap |= DCB_CAP_DCBX_HOST;
else
bp->dcbx_cap |= DCB_CAP_DCBX_LLD_MANAGED;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net 4/4] bnxt_en: Ignore 0 value in autoneg supported speed from firmware.
2017-03-08 23:44 [PATCH net 0/4] bnxt_en: Misc. small fixes Michael Chan
` (2 preceding siblings ...)
2017-03-08 23:44 ` [PATCH net 3/4] bnxt_en: Check if firmware LLDP agent is running Michael Chan
@ 2017-03-08 23:44 ` Michael Chan
2017-03-10 1:38 ` [PATCH net 0/4] bnxt_en: Misc. small fixes David Miller
4 siblings, 0 replies; 6+ messages in thread
From: Michael Chan @ 2017-03-08 23:44 UTC (permalink / raw)
To: davem; +Cc: netdev
In some situations, the firmware will return 0 for autoneg supported
speed. This may happen if the firmware detects no SFP module, for
example. The driver should ignore this so that we don't end up with
an invalid autoneg setting with nothing advertised. When SFP module
is inserted, we'll get the updated settings from firmware at that time.
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 869d4c9..32de458 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -5511,8 +5511,9 @@ static int bnxt_hwrm_phy_qcaps(struct bnxt *bp)
bp->lpi_tmr_hi = le32_to_cpu(resp->valid_tx_lpi_timer_high) &
PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_MASK;
}
- link_info->support_auto_speeds =
- le16_to_cpu(resp->supported_speeds_auto_mode);
+ if (resp->supported_speeds_auto_mode)
+ link_info->support_auto_speeds =
+ le16_to_cpu(resp->supported_speeds_auto_mode);
hwrm_phy_qcaps_exit:
mutex_unlock(&bp->hwrm_cmd_lock);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH net 0/4] bnxt_en: Misc. small fixes.
2017-03-08 23:44 [PATCH net 0/4] bnxt_en: Misc. small fixes Michael Chan
` (3 preceding siblings ...)
2017-03-08 23:44 ` [PATCH net 4/4] bnxt_en: Ignore 0 value in autoneg supported speed from firmware Michael Chan
@ 2017-03-10 1:38 ` David Miller
4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2017-03-10 1:38 UTC (permalink / raw)
To: michael.chan; +Cc: netdev
From: Michael Chan <michael.chan@broadcom.com>
Date: Wed, 8 Mar 2017 18:44:31 -0500
> Fixes include moving the initial function reset, notifying the RDMA driver
> during tx timeout, setting dcbx_cap properly depending on whether the
> firmware agent is running or not, and an autoneg related improvement.
Series applied, thanks Michael.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-03-10 1:40 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-08 23:44 [PATCH net 0/4] bnxt_en: Misc. small fixes Michael Chan
2017-03-08 23:44 ` [PATCH net 1/4] bnxt_en: Perform function reset earlier during probe Michael Chan
2017-03-08 23:44 ` [PATCH net 2/4] bnxt_en: Call bnxt_ulp_stop() during tx timeout Michael Chan
2017-03-08 23:44 ` [PATCH net 3/4] bnxt_en: Check if firmware LLDP agent is running Michael Chan
2017-03-08 23:44 ` [PATCH net 4/4] bnxt_en: Ignore 0 value in autoneg supported speed from firmware Michael Chan
2017-03-10 1:38 ` [PATCH net 0/4] bnxt_en: Misc. small fixes David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).