From 2d8c4e44b2c6688da960edb436084df71fb5d892 Mon Sep 17 00:00:00 2001 From: Yaroslav Tykhiy Date: Sat, 22 May 2004 13:59:17 +0000 Subject: [PATCH] Don't forget to reset if_hwassist back to 0 when hardware checksumming is being turned off, or else TCP/IP will keep assigning the job to us. Drivers themselves should consult if_capenable, not if_hwassist--the latter is for the TCP/IP stack. --- sys/dev/gx/if_gx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/dev/gx/if_gx.c b/sys/dev/gx/if_gx.c index 9c54680fbe0..9def700a794 100644 --- a/sys/dev/gx/if_gx.c +++ b/sys/dev/gx/if_gx.c @@ -478,6 +478,8 @@ gx_init(void *xsc) /* setup transmit checksum control */ if (ifp->if_capenable & IFCAP_TXCSUM) ifp->if_hwassist = GX_CSUM_FEATURES; + else + ifp->if_hwassist = 0; ctrl |= GX_RXC_STRIP_ETHERCRC; /* not on 82542? */ CSR_WRITE_4(gx, GX_RX_CONTROL, ctrl); @@ -1530,7 +1532,7 @@ printf("overflow(2): %d, %d\n", cnt, GX_TX_RING_CNT); tx->tx_addr = vtophys(mtod(m, vm_offset_t)); tx->tx_status = 0; tx->tx_len = m->m_len; - if (gx->arpcom.ac_if.if_hwassist) { + if (gx->arpcom.ac_if.if_capenable & IFCAP_TXCSUM) { tx->tx_type = 1; tx->tx_command = GX_TXTCP_EXTENSION; tx->tx_options = csumopts;