Disable automatic IP ID increment. Due to a hardware bug the automatic
IP ID increment in TSO case generated corrupted IP packets. This change brings back TSO capability.
This commit is contained in:
parent
bdfbdcec6a
commit
cf7a67bf4b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=170522
@ -1452,19 +1452,11 @@ msk_attach(device_t dev)
|
|||||||
*/
|
*/
|
||||||
ifp->if_capabilities = IFCAP_TXCSUM;
|
ifp->if_capabilities = IFCAP_TXCSUM;
|
||||||
ifp->if_hwassist = MSK_CSUM_FEATURES;
|
ifp->if_hwassist = MSK_CSUM_FEATURES;
|
||||||
#if 0
|
|
||||||
/*
|
|
||||||
* Under certain circumtances, if TSO is active, Yukon II generates
|
|
||||||
* corrupted IP packets. Disable TSO until we find a working
|
|
||||||
* workaround or a new silicon revision that doesn't have this
|
|
||||||
* hardware bug.
|
|
||||||
*/
|
|
||||||
if (sc->msk_hw_id != CHIP_ID_YUKON_EC_U) {
|
if (sc->msk_hw_id != CHIP_ID_YUKON_EC_U) {
|
||||||
/* It seems Yukon EC Ultra doesn't support TSO. */
|
/* It seems Yukon EC Ultra doesn't support TSO. */
|
||||||
ifp->if_capabilities |= IFCAP_TSO4;
|
ifp->if_capabilities |= IFCAP_TSO4;
|
||||||
ifp->if_hwassist |= CSUM_TSO;
|
ifp->if_hwassist |= CSUM_TSO;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
ifp->if_capenable = ifp->if_capabilities;
|
ifp->if_capenable = ifp->if_capabilities;
|
||||||
ifp->if_ioctl = msk_ioctl;
|
ifp->if_ioctl = msk_ioctl;
|
||||||
ifp->if_start = msk_start;
|
ifp->if_start = msk_start;
|
||||||
@ -3766,13 +3758,6 @@ msk_init_locked(struct msk_if_softc *sc_if)
|
|||||||
CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR), BMU_CLR_RESET);
|
CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR), BMU_CLR_RESET);
|
||||||
CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR), BMU_OPER_INIT);
|
CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR), BMU_OPER_INIT);
|
||||||
CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR), BMU_FIFO_OP_ON);
|
CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR), BMU_FIFO_OP_ON);
|
||||||
/* Increase IPID when hardware generates IP packets in TSO. */
|
|
||||||
if ((ifp->if_hwassist & CSUM_TSO) != 0)
|
|
||||||
CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR),
|
|
||||||
BMU_TX_IPIDINCR_ON);
|
|
||||||
else
|
|
||||||
CSR_WRITE_4(sc, Q_ADDR(sc_if->msk_txq, Q_CSR),
|
|
||||||
BMU_TX_IPIDINCR_OFF);
|
|
||||||
CSR_WRITE_2(sc, Q_ADDR(sc_if->msk_txq, Q_WM), MSK_BMU_TX_WM);
|
CSR_WRITE_2(sc, Q_ADDR(sc_if->msk_txq, Q_WM), MSK_BMU_TX_WM);
|
||||||
if (sc->msk_hw_id == CHIP_ID_YUKON_EC_U &&
|
if (sc->msk_hw_id == CHIP_ID_YUKON_EC_U &&
|
||||||
sc->msk_hw_rev == CHIP_REV_YU_EC_U_A0) {
|
sc->msk_hw_rev == CHIP_REV_YU_EC_U_A0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user