• Hariprasad Shenai's avatar
    cxgb4: Allocate dynamic mem. for egress and ingress queue maps · 4b8e27a8
    Hariprasad Shenai authored
    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: default avatarHariprasad Shenai <hariprasad@chelsio.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4b8e27a8
sge.c 82.6 KB