Add TSO support on VLANs. Intentionally separated IFCAP_VLAN_HWTSO
from IFCAP_VLAN_HWTAGGING. I think some hardwares may be able to TSO over VLAN without VLAN hardware tagging. Driver changes and userland support will follow. Reviewed by: thompsa
This commit is contained in:
parent
0a68a45914
commit
9b76d9cb3d
@ -218,6 +218,7 @@ struct if_data {
|
||||
#define IFCAP_TOE6 0x08000 /* interface can offload TCP6 */
|
||||
#define IFCAP_VLAN_HWFILTER 0x10000 /* interface hw can filter vlan tag */
|
||||
#define IFCAP_POLLING_NOCOUNT 0x20000 /* polling ticks cannot be fragmented */
|
||||
#define IFCAP_VLAN_HWTSO 0x40000 /* can do IFCAP_TSO on VLANs */
|
||||
|
||||
#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM)
|
||||
#define IFCAP_TSO (IFCAP_TSO4 | IFCAP_TSO6)
|
||||
|
@ -1322,11 +1322,26 @@ vlan_capabilities(struct ifvlan *ifv)
|
||||
if (p->if_capenable & IFCAP_VLAN_HWCSUM &&
|
||||
p->if_capenable & IFCAP_VLAN_HWTAGGING) {
|
||||
ifp->if_capenable = p->if_capenable & IFCAP_HWCSUM;
|
||||
ifp->if_hwassist = p->if_hwassist;
|
||||
ifp->if_hwassist = p->if_hwassist & (CSUM_IP | CSUM_TCP |
|
||||
CSUM_UDP | CSUM_SCTP | CSUM_IP_FRAGS | CSUM_FRAGMENT);
|
||||
} else {
|
||||
ifp->if_capenable = 0;
|
||||
ifp->if_hwassist = 0;
|
||||
}
|
||||
/*
|
||||
* If the parent interface can do TSO on VLANs then
|
||||
* propagate the hardware-assisted flag. TSO on VLANs
|
||||
* does not necessarily require hardware VLAN tagging.
|
||||
*/
|
||||
if (p->if_capabilities & IFCAP_VLAN_HWTSO)
|
||||
ifp->if_capabilities |= p->if_capabilities & IFCAP_TSO;
|
||||
if (p->if_capenable & IFCAP_VLAN_HWTSO) {
|
||||
ifp->if_capenable |= p->if_capenable & IFCAP_TSO;
|
||||
ifp->if_hwassist |= p->if_hwassist & CSUM_TSO;
|
||||
} else {
|
||||
ifp->if_capenable &= ~(p->if_capenable & IFCAP_TSO);
|
||||
ifp->if_hwassist &= ~(p->if_hwassist & CSUM_TSO);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
x
Reference in New Issue
Block a user