* [PATCH net 0/6] bnx2x: fixes
@ 2013-07-16 15:21 Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 1/6] bnx2x: properly initialize statistic counters Dmitry Kravkov
` (5 more replies)
0 siblings, 6 replies; 12+ messages in thread
From: Dmitry Kravkov @ 2013-07-16 15:21 UTC (permalink / raw)
To: davem, netdev
Hello Dave
Please consider applying the series of bnx2x fixes to net:
* statistics may cause FW assert
* missing fairness configuration in DCB flow
* memory leak in sriov releated part
* Illegal PTE access
* Pagefault crash in shutdown flow with cnic
Thanks
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH net 1/6] bnx2x: properly initialize statistic counters
2013-07-16 15:21 [PATCH net 0/6] bnx2x: fixes Dmitry Kravkov
@ 2013-07-16 15:21 ` Dmitry Kravkov
2013-07-16 16:24 ` Joe Perches
2013-07-16 15:21 ` [PATCH net 2/6] bnx2x: prevent statistics update flow to act before statistics are started Dmitry Kravkov
` (4 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Dmitry Kravkov @ 2013-07-16 15:21 UTC (permalink / raw)
To: davem, netdev
This prevent second statistics query be sent before first one is complete.
This is required since two outstanding queries may cause FW assert.
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Ariel Elior <ariele@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c
index 98366ab..69c4cb6 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c
@@ -1591,10 +1591,16 @@ void bnx2x_stats_init(struct bnx2x *bp)
{
int /*abs*/port = BP_PORT(bp);
int mb_idx = BP_FW_MB_IDX(bp);
+ __le16 init_fw_counter = le16_to_cpu(0xFFFF);
+ struct stats_counter *counters = &bp->fw_stats_data->storm_counters;
bp->stats_pending = 0;
bp->executer_idx = 0;
bp->stats_counter = 0;
+ counters->xstats_counter = init_fw_counter;
+ counters->tstats_counter = init_fw_counter;
+ counters->ustats_counter = init_fw_counter;
+ counters->cstats_counter = init_fw_counter;
/* port and func stats for management */
if (!BP_NOMCP(bp)) {
--
1.8.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net 2/6] bnx2x: prevent statistics update flow to act before statistics are started
2013-07-16 15:21 [PATCH net 0/6] bnx2x: fixes Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 1/6] bnx2x: properly initialize statistic counters Dmitry Kravkov
@ 2013-07-16 15:21 ` Dmitry Kravkov
2013-07-16 18:14 ` Sergei Shtylyov
2013-07-16 15:21 ` [PATCH net 3/6] bnx2x: update fairness parameters following DCB negotiation Dmitry Kravkov
` (3 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Dmitry Kravkov @ 2013-07-16 15:21 UTC (permalink / raw)
To: davem, netdev
This in order to serialize statistics requests sent to FW,
otherwise two outstanding queries may cause FW assert.
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Ariel Elior <ariele@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 1 +
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 1 +
drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c | 6 +++++-
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
index dedbd76..bdbd87e 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
@@ -1830,6 +1830,7 @@ struct bnx2x {
int fp_array_size;
u32 dump_preset_idx;
+ atomic_t stats_started;
};
/* Tx queues may be less or equal to Rx queues */
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index e5da078..7e9681f 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -11524,6 +11524,7 @@ static int bnx2x_init_bp(struct bnx2x *bp)
mutex_init(&bp->port.phy_mutex);
mutex_init(&bp->fw_mb_mutex);
spin_lock_init(&bp->stats_lock);
+ atomic_set(&bp->stats_started, 0);
INIT_DELAYED_WORK(&bp->sp_task, bnx2x_sp_task);
INIT_DELAYED_WORK(&bp->sp_rtnl_task, bnx2x_sp_rtnl_task);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c
index 69c4cb6..79d2d5f 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c
@@ -534,6 +534,8 @@ static void bnx2x_stats_start(struct bnx2x *bp)
bnx2x_hw_stats_post(bp);
bnx2x_storm_stats_post(bp);
+
+ atomic_set(&bp->stats_started, 1);
}
static void bnx2x_stats_pmf_start(struct bnx2x *bp)
@@ -1227,7 +1229,7 @@ static void bnx2x_stats_update(struct bnx2x *bp)
{
u32 *stats_comp = bnx2x_sp(bp, stats_comp);
- if (bnx2x_edebug_stats_stopped(bp))
+ if (bnx2x_edebug_stats_stopped(bp) || !atomic_read(&bp->stats_started))
return;
if (IS_PF(bp)) {
@@ -1332,6 +1334,8 @@ static void bnx2x_stats_stop(struct bnx2x *bp)
{
int update = 0;
+ atomic_set(&bp->stats_started, 0);
+
bnx2x_stats_comp(bp);
if (bp->port.pmf)
--
1.8.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net 3/6] bnx2x: update fairness parameters following DCB negotiation
2013-07-16 15:21 [PATCH net 0/6] bnx2x: fixes Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 1/6] bnx2x: properly initialize statistic counters Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 2/6] bnx2x: prevent statistics update flow to act before statistics are started Dmitry Kravkov
@ 2013-07-16 15:21 ` Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 4/6] bnx2x: fix memory leak in VF Dmitry Kravkov
` (2 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: Dmitry Kravkov @ 2013-07-16 15:21 UTC (permalink / raw)
To: davem, netdev
ETS can be enabled as a result of DCB negotiation, then
fairness must be recalculated after each negotiation.
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Ariel Elior <ariele@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 2 ++
drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c | 4 ++++
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 30 ++++++++++++++----------
3 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
index bdbd87e..02f914d 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
@@ -2452,4 +2452,6 @@ enum bnx2x_pci_bus_speed {
BNX2X_PCI_LINK_SPEED_5000 = 5000,
BNX2X_PCI_LINK_SPEED_8000 = 8000
};
+
+void bnx2x_set_local_cmng(struct bnx2x *bp);
#endif /* bnx2x.h */
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c
index 0c94df4..f9122f2 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_dcb.c
@@ -753,6 +753,10 @@ void bnx2x_dcbx_set_params(struct bnx2x *bp, u32 state)
bnx2x_pfc_set_pfc(bp);
bnx2x_dcbx_update_ets_params(bp);
+
+ /* ets may affect cmng configuration: reinit it in hw */
+ bnx2x_set_local_cmng(bp);
+
bnx2x_dcbx_resume_hw_tx(bp);
return;
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 7e9681f..0f3de02 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -2476,7 +2476,7 @@ static void bnx2x_cmng_fns_init(struct bnx2x *bp, u8 read_cfg, u8 cmng_type)
input.port_rate = bp->link_vars.line_speed;
- if (cmng_type == CMNG_FNS_MINMAX) {
+ if (cmng_type == CMNG_FNS_MINMAX && input.port_rate) {
int vn;
/* read mf conf from shmem */
@@ -2533,6 +2533,21 @@ static void storm_memset_cmng(struct bnx2x *bp,
}
}
+/* init cmng mode in HW according to local configuration */
+void bnx2x_set_local_cmng(struct bnx2x *bp)
+{
+ int cmng_fns = bnx2x_get_cmng_fns_mode(bp);
+
+ if (cmng_fns != CMNG_FNS_NONE) {
+ bnx2x_cmng_fns_init(bp, false, cmng_fns);
+ storm_memset_cmng(bp, &bp->cmng, BP_PORT(bp));
+ } else {
+ /* rate shaping and fairness are disabled */
+ DP(NETIF_MSG_IFUP,
+ "single function mode without fairness\n");
+ }
+}
+
/* This function is called upon link interrupt */
static void bnx2x_link_attn(struct bnx2x *bp)
{
@@ -2568,17 +2583,8 @@ static void bnx2x_link_attn(struct bnx2x *bp)
bnx2x_stats_handle(bp, STATS_EVENT_LINK_UP);
}
- if (bp->link_vars.link_up && bp->link_vars.line_speed) {
- int cmng_fns = bnx2x_get_cmng_fns_mode(bp);
-
- if (cmng_fns != CMNG_FNS_NONE) {
- bnx2x_cmng_fns_init(bp, false, cmng_fns);
- storm_memset_cmng(bp, &bp->cmng, BP_PORT(bp));
- } else
- /* rate shaping and fairness are disabled */
- DP(NETIF_MSG_IFUP,
- "single function mode without fairness\n");
- }
+ if (bp->link_vars.link_up && bp->link_vars.line_speed)
+ bnx2x_set_local_cmng(bp);
__bnx2x_link_report(bp);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net 4/6] bnx2x: fix memory leak in VF
2013-07-16 15:21 [PATCH net 0/6] bnx2x: fixes Dmitry Kravkov
` (2 preceding siblings ...)
2013-07-16 15:21 ` [PATCH net 3/6] bnx2x: update fairness parameters following DCB negotiation Dmitry Kravkov
@ 2013-07-16 15:21 ` Dmitry Kravkov
2013-07-16 18:12 ` Sergei Shtylyov
2013-07-16 15:21 ` [PATCH net 5/6] bnx2x: fix PTE write access error Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 6/6] bnx2x: prevent crash in shutdown flow with CNIC Dmitry Kravkov
5 siblings, 1 reply; 12+ messages in thread
From: Dmitry Kravkov @ 2013-07-16 15:21 UTC (permalink / raw)
To: davem, netdev
From: Ariel Elior <ariele@broadcom.com>
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
index 95861ef..44104fb 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
@@ -3463,7 +3463,7 @@ int bnx2x_vf_pci_alloc(struct bnx2x *bp)
alloc_mem_err:
BNX2X_PCI_FREE(bp->vf2pf_mbox, bp->vf2pf_mbox_mapping,
sizeof(struct bnx2x_vf_mbx_msg));
- BNX2X_PCI_FREE(bp->vf2pf_mbox, bp->vf2pf_mbox_mapping,
+ BNX2X_PCI_FREE(bp->vf2pf_mbox, bp->pf2vf_bulletin_mapping,
sizeof(union pf_vf_bulletin));
return -ENOMEM;
}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net 5/6] bnx2x: fix PTE write access error
2013-07-16 15:21 [PATCH net 0/6] bnx2x: fixes Dmitry Kravkov
` (3 preceding siblings ...)
2013-07-16 15:21 ` [PATCH net 4/6] bnx2x: fix memory leak in VF Dmitry Kravkov
@ 2013-07-16 15:21 ` Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 6/6] bnx2x: prevent crash in shutdown flow with CNIC Dmitry Kravkov
5 siblings, 0 replies; 12+ messages in thread
From: Dmitry Kravkov @ 2013-07-16 15:21 UTC (permalink / raw)
To: davem, netdev
From: Barak Witkowsky <barak@broadcom.com>
PTE write access error might occur in MF_ALLOWED mode when IOMMU
is active. The patch adds rmmod HSI indicating to MFW to stop
running queries which might trigger this failure.
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Ariel Elior <ariele@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 1 +
drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h | 5 +++++
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 9 +++++++++
3 files changed, 15 insertions(+)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
index 02f914d..906c7d9 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
@@ -1502,6 +1502,7 @@ struct bnx2x {
#define BC_SUPPORTS_DCBX_MSG_NON_PMF (1 << 21)
#define IS_VF_FLAG (1 << 22)
#define INTERRUPTS_ENABLED_FLAG (1 << 23)
+#define BC_SUPPORTS_RMMOD_CMD (1 << 24)
#define BP_NOMCP(bp) ((bp)->flags & NO_MCP_FLAG)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
index 5018e52..32767f6 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
@@ -1300,6 +1300,9 @@ struct drv_func_mb {
#define DRV_MSG_CODE_EEE_RESULTS_ACK 0xda000000
+ #define DRV_MSG_CODE_RMMOD 0xdb000000
+ #define REQ_BC_VER_4_RMMOD_CMD 0x0007080f
+
#define DRV_MSG_CODE_SET_MF_BW 0xe0000000
#define REQ_BC_VER_4_SET_MF_BW 0x00060202
#define DRV_MSG_CODE_SET_MF_BW_ACK 0xe1000000
@@ -1372,6 +1375,8 @@ struct drv_func_mb {
#define FW_MSG_CODE_EEE_RESULS_ACK 0xda100000
+ #define FW_MSG_CODE_RMMOD_ACK 0xdb100000
+
#define FW_MSG_CODE_SET_MF_BW_SENT 0xe0000000
#define FW_MSG_CODE_SET_MF_BW_DONE 0xe1000000
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 0f3de02..9394b7d 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -10368,6 +10368,10 @@ static void bnx2x_get_common_hwinfo(struct bnx2x *bp)
bp->flags |= (val >= REQ_BC_VER_4_DCBX_ADMIN_MSG_NON_PMF) ?
BC_SUPPORTS_DCBX_MSG_NON_PMF : 0;
+
+ bp->flags |= (val >= REQ_BC_VER_4_RMMOD_CMD) ?
+ BC_SUPPORTS_RMMOD_CMD : 0;
+
boot_mode = SHMEM_RD(bp,
dev_info.port_feature_config[BP_PORT(bp)].mba_config) &
PORT_FEATURE_MBA_BOOT_AGENT_TYPE_MASK;
@@ -12824,6 +12828,11 @@ static void __bnx2x_remove(struct pci_dev *pdev,
bnx2x_dcbnl_update_applist(bp, true);
#endif
+ if ((IS_PF(bp)) &&
+ (!BP_NOMCP(bp)) &&
+ (bp->flags & BC_SUPPORTS_RMMOD_CMD))
+ bnx2x_fw_command(bp, DRV_MSG_CODE_RMMOD, 0);
+
/* Close the interface - either directly or implicitly */
if (remove_netdev) {
unregister_netdev(dev);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net 6/6] bnx2x: prevent crash in shutdown flow with CNIC
2013-07-16 15:21 [PATCH net 0/6] bnx2x: fixes Dmitry Kravkov
` (4 preceding siblings ...)
2013-07-16 15:21 ` [PATCH net 5/6] bnx2x: fix PTE write access error Dmitry Kravkov
@ 2013-07-16 15:21 ` Dmitry Kravkov
5 siblings, 0 replies; 12+ messages in thread
From: Dmitry Kravkov @ 2013-07-16 15:21 UTC (permalink / raw)
To: davem, netdev
From: Yuval Mintz <yuvalmin@broadcom.com>
There might be a crash as during shutdown flow CNIC might try
to access resources already freed by bnx2x.
Change bnx2x_close() into dev_close() in __bnx2x_remove (shutdown flow)
to guarantee CNIC is notified of the device's change of status.
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Ariel Elior <ariele@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 9394b7d..2fdc8e6 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -12838,8 +12838,7 @@ static void __bnx2x_remove(struct pci_dev *pdev,
unregister_netdev(dev);
} else {
rtnl_lock();
- if (netif_running(dev))
- bnx2x_close(dev);
+ dev_close(dev);
rtnl_unlock();
}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH net 1/6] bnx2x: properly initialize statistic counters
2013-07-16 15:21 ` [PATCH net 1/6] bnx2x: properly initialize statistic counters Dmitry Kravkov
@ 2013-07-16 16:24 ` Joe Perches
2013-07-16 18:14 ` Dmitry Kravkov
0 siblings, 1 reply; 12+ messages in thread
From: Joe Perches @ 2013-07-16 16:24 UTC (permalink / raw)
To: Dmitry Kravkov; +Cc: davem, netdev
On Tue, 2013-07-16 at 18:21 +0300, Dmitry Kravkov wrote:
> This prevent second statistics query be sent before first one is complete.
> This is required since two outstanding queries may cause FW assert.
Please run sparse on your code before submitting patches.
> diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c
[]
> @@ -1591,10 +1591,16 @@ void bnx2x_stats_init(struct bnx2x *bp)
> {
> int /*abs*/port = BP_PORT(bp);
> int mb_idx = BP_FW_MB_IDX(bp);
> + __le16 init_fw_counter = le16_to_cpu(0xFFFF);
__le16 init_fw_counter = cpu_to_le16(0xffff);
> + struct stats_counter *counters = &bp->fw_stats_data->storm_counters;
>
> bp->stats_pending = 0;
> bp->executer_idx = 0;
> bp->stats_counter = 0;
> + counters->xstats_counter = init_fw_counter;
> + counters->tstats_counter = init_fw_counter;
> + counters->ustats_counter = init_fw_counter;
> + counters->cstats_counter = init_fw_counter;
It might be better to remove init_fw_counter from
stack and use a #define or just use cpu_to_le16(0xffff)
in each init.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net 4/6] bnx2x: fix memory leak in VF
2013-07-16 15:21 ` [PATCH net 4/6] bnx2x: fix memory leak in VF Dmitry Kravkov
@ 2013-07-16 18:12 ` Sergei Shtylyov
0 siblings, 0 replies; 12+ messages in thread
From: Sergei Shtylyov @ 2013-07-16 18:12 UTC (permalink / raw)
To: Dmitry Kravkov; +Cc: davem, netdev
Hello.
On 07/16/2013 07:21 PM, Dmitry Kravkov wrote:
> From: Ariel Elior <ariele@broadcom.com>
> Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
> Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Not signed off by the author?
WBR, Sergei
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net 2/6] bnx2x: prevent statistics update flow to act before statistics are started
2013-07-16 15:21 ` [PATCH net 2/6] bnx2x: prevent statistics update flow to act before statistics are started Dmitry Kravkov
@ 2013-07-16 18:14 ` Sergei Shtylyov
0 siblings, 0 replies; 12+ messages in thread
From: Sergei Shtylyov @ 2013-07-16 18:14 UTC (permalink / raw)
To: Dmitry Kravkov; +Cc: davem, netdev
Hello.
On 07/16/2013 07:21 PM, Dmitry Kravkov wrote:
> This in order to serialize statistics requests sent to FW,
> otherwise two outstanding queries may cause FW assert.
> Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
> Signed-off-by: Ariel Elior <ariele@broadcom.com>
> Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
> ---
> drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 1 +
> drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 1 +
> drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c | 6 +++++-
> 3 files changed, 7 insertions(+), 1 deletion(-)
> diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
> index dedbd76..bdbd87e 100644
> --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
> +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
> @@ -1830,6 +1830,7 @@ struct bnx2x {
>
> int fp_array_size;
> u32 dump_preset_idx;
> + atomic_t stats_started;
Why it's so wildly indented if its neighbors are not?
> };
>
> /* Tx queues may be less or equal to Rx queues */
WBR, Sergei
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net 1/6] bnx2x: properly initialize statistic counters
2013-07-16 16:24 ` Joe Perches
@ 2013-07-16 18:14 ` Dmitry Kravkov
2013-07-16 18:35 ` Joe Perches
0 siblings, 1 reply; 12+ messages in thread
From: Dmitry Kravkov @ 2013-07-16 18:14 UTC (permalink / raw)
To: Joe Perches; +Cc: Dmitry Kravkov, Dave Miller, netdev
On Tue, Jul 16, 2013 at 7:24 PM, Joe Perches <joe@perches.com> wrote:
> On Tue, 2013-07-16 at 18:21 +0300, Dmitry Kravkov wrote:
>> This prevent second statistics query be sent before first one is complete.
>> This is required since two outstanding queries may cause FW assert.
>
> Please run sparse on your code before submitting patches.
>
>> diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c
> []
>> @@ -1591,10 +1591,16 @@ void bnx2x_stats_init(struct bnx2x *bp)
>> {
>> int /*abs*/port = BP_PORT(bp);
>> int mb_idx = BP_FW_MB_IDX(bp);
>> + __le16 init_fw_counter = le16_to_cpu(0xFFFF);
>
> __le16 init_fw_counter = cpu_to_le16(0xffff);
>
Thanks Joe, for catching this
>> + struct stats_counter *counters = &bp->fw_stats_data->storm_counters;
>>
>> bp->stats_pending = 0;
>> bp->executer_idx = 0;
>> bp->stats_counter = 0;
>> + counters->xstats_counter = init_fw_counter;
>> + counters->tstats_counter = init_fw_counter;
>> + counters->ustats_counter = init_fw_counter;
>> + counters->cstats_counter = init_fw_counter;
>
> It might be better to remove init_fw_counter from
> stack and use a #define or just use cpu_to_le16(0xffff)
> in each init.
I'm not feel well for using same value in each init, probably is better to use
multiple assignment like this:
counters->xstats_counter =
counters->tstats_counter =
counters->ustats_counter =
counters->cstats_counter = cpu_to_le16(0xffff);
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net 1/6] bnx2x: properly initialize statistic counters
2013-07-16 18:14 ` Dmitry Kravkov
@ 2013-07-16 18:35 ` Joe Perches
0 siblings, 0 replies; 12+ messages in thread
From: Joe Perches @ 2013-07-16 18:35 UTC (permalink / raw)
To: Dmitry Kravkov; +Cc: Dmitry Kravkov, Dave Miller, netdev
On Tue, 2013-07-16 at 21:14 +0300, Dmitry Kravkov wrote:
> On Tue, Jul 16, 2013 at 7:24 PM, Joe Perches <joe@perches.com> wrote:
> > It might be better to remove init_fw_counter from
> > stack and use a #define or just use cpu_to_le16(0xffff)
> > in each init.
>
> I'm not feel well for using same value in each init, probably is better to use
> multiple assignment like this:
> counters->xstats_counter =
> counters->tstats_counter =
> counters->ustats_counter =
> counters->cstats_counter = cpu_to_le16(0xffff);
Your choice though maybe here's a couple of things
to consider:
I do think aligning all the counter variables useful
when reading so
count->xstats_counter =
count->tstats_counter =
count->ustats_counter =
count->cstats_counter = foo;
would be better. Unfortunately grep wouldn't show
that actual initialization where:
count->xstats_counter = foo;
count->tstats_counter = foo;
count->ustats_counter = foo;
count->cstats_counter = foo;
would and the compiler would do the same thing as
the a = b = c = d = foo; case.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2013-07-16 18:35 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-16 15:21 [PATCH net 0/6] bnx2x: fixes Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 1/6] bnx2x: properly initialize statistic counters Dmitry Kravkov
2013-07-16 16:24 ` Joe Perches
2013-07-16 18:14 ` Dmitry Kravkov
2013-07-16 18:35 ` Joe Perches
2013-07-16 15:21 ` [PATCH net 2/6] bnx2x: prevent statistics update flow to act before statistics are started Dmitry Kravkov
2013-07-16 18:14 ` Sergei Shtylyov
2013-07-16 15:21 ` [PATCH net 3/6] bnx2x: update fairness parameters following DCB negotiation Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 4/6] bnx2x: fix memory leak in VF Dmitry Kravkov
2013-07-16 18:12 ` Sergei Shtylyov
2013-07-16 15:21 ` [PATCH net 5/6] bnx2x: fix PTE write access error Dmitry Kravkov
2013-07-16 15:21 ` [PATCH net 6/6] bnx2x: prevent crash in shutdown flow with CNIC Dmitry Kravkov
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).