cxgb4: Allocate dynamic mem. for egress and ingress queue maps
authorHariprasad Shenai <hariprasad@chelsio.com>
Thu, 26 Mar 2015 04:34:25 +0000 (10:04 +0530)
committerDavid S. Miller <davem@davemloft.net>
Sun, 29 Mar 2015 19:24:42 +0000 (12:24 -0700)
commit4b8e27a86d209063d8aacfb918668bbb75e56019
tree36b896c22a4259766c37f7e64a452c58e64dcffb
parentf243e5a7859a24d10975afb9a1708cac624ba6f1
cxgb4: Allocate dynamic mem. for egress and ingress queue maps

QIDs (egress/ingress) from firmware in FW_*_CMD.alloc command
can be anywhere in the range from EQ(IQFLINT)_START to EQ(IQFLINT)_END.
For eg, in the first load eqid can be from 100 to 300.
In the next load it can be from 301 to 500 (assume eq_start is 100 and eq_end is
1000).

The driver was assuming them to always start from EQ(IQFLINT)_START till
MAX_EGRQ(INGQ). This was causing stack overflow and subsequent crash.

Fixed it by dynamically allocating memory (of qsize (x_END - x_START + 1)) for
these structures.

Based on original work by Santosh Rastapur <santosh@chelsio.com>

Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
drivers/net/ethernet/chelsio/cxgb4/sge.c