Add TSO support over VLAN for i82550/i82551. Controller requires
VLAN hardware tagging to make TSO work over VLAN. So if VLAN hardware tagging is disabled explicitly clear TSO over VLAN. While I'm here allow disabling VLAN TX checksum offloading. Tested by: Liudas < liudasb <> centras dot lt > MFC after: 10 days
This commit is contained in:
parent
8b92400c86
commit
bab8c13c62
@ -862,9 +862,9 @@ fxp_attach(device_t dev)
|
||||
ifp->if_capenable |= IFCAP_VLAN_MTU; /* the hw bits already set */
|
||||
if ((sc->flags & FXP_FLAG_EXT_RFA) != 0) {
|
||||
ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING |
|
||||
IFCAP_VLAN_HWCSUM;
|
||||
IFCAP_VLAN_HWCSUM | IFCAP_VLAN_HWTSO;
|
||||
ifp->if_capenable |= IFCAP_VLAN_HWTAGGING |
|
||||
IFCAP_VLAN_HWCSUM;
|
||||
IFCAP_VLAN_HWCSUM | IFCAP_VLAN_HWTSO;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2866,10 +2866,19 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
|
||||
if (ifp->if_flags & IFF_UP)
|
||||
reinit++;
|
||||
}
|
||||
if ((mask & IFCAP_VLAN_HWCSUM) != 0 &&
|
||||
(ifp->if_capabilities & IFCAP_VLAN_HWCSUM) != 0)
|
||||
ifp->if_capenable ^= IFCAP_VLAN_HWCSUM;
|
||||
if ((mask & IFCAP_VLAN_HWTSO) != 0 &&
|
||||
(ifp->if_capabilities & IFCAP_VLAN_HWTSO) != 0)
|
||||
ifp->if_capenable ^= IFCAP_VLAN_HWTSO;
|
||||
if ((mask & IFCAP_VLAN_HWTAGGING) != 0 &&
|
||||
(ifp->if_capabilities & IFCAP_VLAN_HWTAGGING) != 0) {
|
||||
ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING;
|
||||
reinit++;
|
||||
if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) == 0)
|
||||
ifp->if_capenable &=
|
||||
~(IFCAP_VLAN_HWTSO | IFCAP_VLAN_HWCSUM);
|
||||
reinit++;
|
||||
}
|
||||
if (reinit > 0 && ifp->if_flags & IFF_UP)
|
||||
fxp_init_body(sc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user