kern/79946: Checksum offloading doesn't work on intel 82551 NIC
(chip rev=0x10)
Lobach Pavel
lobach_pavel at mail.ru
Thu Apr 14 23:20:11 PDT 2005
>Number: 79946
>Category: kern
>Synopsis: Checksum offloading doesn't work on intel 82551 NIC (chip rev=0x10)
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Apr 15 06:20:10 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Lobach Pavel
>Release: FreeBSD 5.3
>Organization:
>Environment:
FreeBSD 5.3-RELEASE
Intel PRO/100 ethernet adapter (82551 chip rev=0x10)
>Description:
We bought a couple of Intel 82551's cards (chip rev=0x10)
But fxp driver doesn't enable checksum offloading for it nether in RELENG_5, nor in HEAD, because of in if_fxp.c:
if (sc->revision == FXP_REV_82550 || sc->revision == FXP_REV_82550_C) {
...skipped...
sc->flags |= FXP_FLAG_EXT_RFA;
i.e. flag FXP_FLAG_EXT_RFA enabled only for 82550
and thus prevents enabling checksum offloading for 82551(chips rev=0x0f, 0x10) and even for 82550 (chip rev=0x0e) below:
/* Enable checksum offload for 82550 or better chips */
if (sc->flags & FXP_FLAG_EXT_RFA) { <-- this flag doesn't set for "better chips"
ifp->if_hwassist = FXP_CSUM_FEATURES;
ifp->if_capabilities |= IFCAP_HWCSUM;
ifp->if_capenable |= IFCAP_HWCSUM;
}
>How-To-Repeat:
Install intel pro/100 card with 82551 chip and do:
ifconfig fxp0 txcsum rxcsum
it doesn't work
>Fix:
In if_fxp.c it should be:
if (sc->revision >= FXP_REV_82550) { ...
instead of
if (sc->revision == FXP_REV_82550 || sc->revision == FXP_REV_82550_C) {
Because intel chipset beginning from 82550 all have this feature
or we can
#define FXP_REV_82551 0x10
in if_fxpreg.h
and in if_fxp.c:
if (sc->revision >= FXP_REV_82550 && sc->revision <= FXP_REV_82551) { ...
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list