cxgb4: Reserve stid 0 for T4/T5 adapters
When creating offload server entries, an IPv6 passive connection request can trigger a reply with a null STID, whereas the driver would expect the reply 'STID to match the value used for the request. This happens due to h/w limitation on T4 and T5. This patch ensures that STID 0 is never used if the stid range starts from zero. Based on original work by Santosh Rastapur <santosh@chelsio.com> Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com> Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6eb3c2822e
commit
b6f8eaece6
|
@ -3134,6 +3134,7 @@ static int tid_init(struct tid_info *t)
|
|||
size_t size;
|
||||
unsigned int stid_bmap_size;
|
||||
unsigned int natids = t->natids;
|
||||
struct adapter *adap = container_of(t, struct adapter, tids);
|
||||
|
||||
stid_bmap_size = BITS_TO_LONGS(t->nstids + t->nsftids);
|
||||
size = t->ntids * sizeof(*t->tid_tab) +
|
||||
|
@ -3167,6 +3168,11 @@ static int tid_init(struct tid_info *t)
|
|||
t->afree = t->atid_tab;
|
||||
}
|
||||
bitmap_zero(t->stid_bmap, t->nstids + t->nsftids);
|
||||
/* Reserve stid 0 for T4/T5 adapters */
|
||||
if (!t->stid_base &&
|
||||
(is_t4(adap->params.chip) || is_t5(adap->params.chip)))
|
||||
__set_bit(0, t->stid_bmap);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue