bnx2x: prevent FW assert on low mem during unload
Buffers for FW statistics were allocated at an inappropriate time; In a machine where the driver encounters problems allocating all of its queues, the driver would still create FW requests for the statistics of the non-existing queues. The wrong order of memory allocation could lead to zeroed statistics messages being sent, leading to fw assert in case function 0 was down. This changes the order of allocations, guaranteeing that statistic requests will only be generated for actual queues. Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Ariel Elior <ariele@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0d08c42cf9
commit
e3ed4eaef4
@ -2545,10 +2545,6 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocated memory for FW statistics */
|
|
||||||
if (bnx2x_alloc_fw_stats_mem(bp))
|
|
||||||
LOAD_ERROR_EXIT(bp, load_error0);
|
|
||||||
|
|
||||||
/* need to be done after alloc mem, since it's self adjusting to amount
|
/* need to be done after alloc mem, since it's self adjusting to amount
|
||||||
* of memory available for RSS queues
|
* of memory available for RSS queues
|
||||||
*/
|
*/
|
||||||
@ -2558,6 +2554,10 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
|
|||||||
LOAD_ERROR_EXIT(bp, load_error0);
|
LOAD_ERROR_EXIT(bp, load_error0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Allocated memory for FW statistics */
|
||||||
|
if (bnx2x_alloc_fw_stats_mem(bp))
|
||||||
|
LOAD_ERROR_EXIT(bp, load_error0);
|
||||||
|
|
||||||
/* request pf to initialize status blocks */
|
/* request pf to initialize status blocks */
|
||||||
if (IS_VF(bp)) {
|
if (IS_VF(bp)) {
|
||||||
rc = bnx2x_vfpf_init(bp);
|
rc = bnx2x_vfpf_init(bp);
|
||||||
@ -2812,8 +2812,8 @@ load_error1:
|
|||||||
if (IS_PF(bp))
|
if (IS_PF(bp))
|
||||||
bnx2x_clear_pf_load(bp);
|
bnx2x_clear_pf_load(bp);
|
||||||
load_error0:
|
load_error0:
|
||||||
bnx2x_free_fp_mem(bp);
|
|
||||||
bnx2x_free_fw_stats_mem(bp);
|
bnx2x_free_fw_stats_mem(bp);
|
||||||
|
bnx2x_free_fp_mem(bp);
|
||||||
bnx2x_free_mem(bp);
|
bnx2x_free_mem(bp);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
Loading…
Reference in New Issue
Block a user