cxgbe: fix enabling lro & rxtimestamps
A recent change caused iq flags, like LRO, to be set before
init_iq(). However, init_iq() clears those flags, so they
became effectively impossible to set. This change moves
the initializion of these flags to after the call to init_iq().
This fixes LRO.
Differential Revision: https://reviews.freebsd.org/D30460
Reviewed by: np, rrs
Sponsored by: Netflix
Fixes: 43bbae1948
<https://reviews.freebsd.org/R10:43bbae19483fbde0a91e61acad8a6e71e334c8b8>"
This commit is contained in:
parent
4c599db71a
commit
df8437a93d
@ -3938,12 +3938,7 @@ alloc_rxq(struct vi_info *vi, struct sge_rxq *rxq, int idx, int intr_idx,
|
|||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
return (rc);
|
return (rc);
|
||||||
MPASS(rxq->lro.ifp == ifp); /* also indicates LRO init'ed */
|
MPASS(rxq->lro.ifp == ifp); /* also indicates LRO init'ed */
|
||||||
|
|
||||||
if (ifp->if_capenable & IFCAP_LRO)
|
|
||||||
rxq->iq.flags |= IQ_LRO_ENABLED;
|
|
||||||
#endif
|
#endif
|
||||||
if (ifp->if_capenable & IFCAP_HWRXTSTMP)
|
|
||||||
rxq->iq.flags |= IQ_RX_TIMESTAMP;
|
|
||||||
rxq->ifp = ifp;
|
rxq->ifp = ifp;
|
||||||
|
|
||||||
snprintf(name, sizeof(name), "%d", idx);
|
snprintf(name, sizeof(name), "%d", idx);
|
||||||
@ -3953,6 +3948,12 @@ alloc_rxq(struct vi_info *vi, struct sge_rxq *rxq, int idx, int intr_idx,
|
|||||||
|
|
||||||
init_iq(&rxq->iq, sc, vi->tmr_idx, vi->pktc_idx, vi->qsize_rxq,
|
init_iq(&rxq->iq, sc, vi->tmr_idx, vi->pktc_idx, vi->qsize_rxq,
|
||||||
intr_idx, tnl_cong(vi->pi, cong_drop));
|
intr_idx, tnl_cong(vi->pi, cong_drop));
|
||||||
|
#if defined(INET) || defined(INET6)
|
||||||
|
if (ifp->if_capenable & IFCAP_LRO)
|
||||||
|
rxq->iq.flags |= IQ_LRO_ENABLED;
|
||||||
|
#endif
|
||||||
|
if (ifp->if_capenable & IFCAP_HWRXTSTMP)
|
||||||
|
rxq->iq.flags |= IQ_RX_TIMESTAMP;
|
||||||
snprintf(name, sizeof(name), "%s rxq%d-fl",
|
snprintf(name, sizeof(name), "%s rxq%d-fl",
|
||||||
device_get_nameunit(vi->dev), idx);
|
device_get_nameunit(vi->dev), idx);
|
||||||
init_fl(sc, &rxq->fl, vi->qsize_rxq / 8, maxp, name);
|
init_fl(sc, &rxq->fl, vi->qsize_rxq / 8, maxp, name);
|
||||||
|
Loading…
Reference in New Issue
Block a user