Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/bge/if_bge.c
| Show First 20 Lines • Show All 3,715 Lines • ▼ Show 20 Lines | #endif | ||||
| if_initname(ifp, device_get_name(dev), device_get_unit(dev)); | if_initname(ifp, device_get_name(dev), device_get_unit(dev)); | ||||
| if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); | if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); | ||||
| if_setioctlfn(ifp, bge_ioctl); | if_setioctlfn(ifp, bge_ioctl); | ||||
| if_setstartfn(ifp, bge_start); | if_setstartfn(ifp, bge_start); | ||||
| if_setinitfn(ifp, bge_init); | if_setinitfn(ifp, bge_init); | ||||
| if_setgetcounterfn(ifp, bge_get_counter); | if_setgetcounterfn(ifp, bge_get_counter); | ||||
| if_setsendqlen(ifp, BGE_TX_RING_CNT - 1); | if_setsendqlen(ifp, BGE_TX_RING_CNT - 1); | ||||
| if_setsendqready(ifp); | if_setsendqready(ifp); | ||||
| /* Initially enable checksum offloading either for all of IPv4, TCP/IPv4 | |||||
| * and UDP/IPv4, or for none. This avoids problems when the interface | |||||
| * is added to a bridge. | |||||
| */ | |||||
| if (sc->bge_csum_features & CSUM_UDP) | |||||
| if_sethwassist(ifp, sc->bge_csum_features); | if_sethwassist(ifp, sc->bge_csum_features); | ||||
| if_setcapabilities(ifp, IFCAP_HWCSUM | IFCAP_VLAN_HWTAGGING | | if_setcapabilities(ifp, IFCAP_HWCSUM | IFCAP_VLAN_HWTAGGING | | ||||
| IFCAP_VLAN_MTU); | IFCAP_VLAN_MTU); | ||||
| if ((sc->bge_flags & (BGE_FLAG_TSO | BGE_FLAG_TSO3)) != 0) { | if ((sc->bge_flags & (BGE_FLAG_TSO | BGE_FLAG_TSO3)) != 0) { | ||||
| if_sethwassistbits(ifp, CSUM_TSO, 0); | if_sethwassistbits(ifp, CSUM_TSO, 0); | ||||
| if_setcapabilitiesbit(ifp, IFCAP_TSO4 | IFCAP_VLAN_HWTSO, 0); | if_setcapabilitiesbit(ifp, IFCAP_TSO4 | IFCAP_VLAN_HWTSO, 0); | ||||
| } | } | ||||
| #ifdef IFCAP_VLAN_HWCSUM | #ifdef IFCAP_VLAN_HWCSUM | ||||
| if_setcapabilitiesbit(ifp, IFCAP_VLAN_HWCSUM, 0); | if_setcapabilitiesbit(ifp, IFCAP_VLAN_HWCSUM, 0); | ||||
| #endif | #endif | ||||
| if_setcapenable(ifp, if_getcapabilities(ifp)); | if_setcapenable(ifp, if_getcapabilities(ifp)); | ||||
| /* | |||||
| * Disable TXCSUM capability initially, if UDP checksum offloading is | |||||
| * not enabled. This avoids problems when the interface is added to a | |||||
| * bridge. | |||||
| */ | |||||
| if ((sc->bge_csum_features & CSUM_UDP) == 0) | |||||
| if_setcapenablebit(ifp, 0, IFCAP_TXCSUM); | |||||
| #ifdef DEVICE_POLLING | #ifdef DEVICE_POLLING | ||||
| if_setcapabilitiesbit(ifp, IFCAP_POLLING, 0); | if_setcapabilitiesbit(ifp, IFCAP_POLLING, 0); | ||||
| #endif | #endif | ||||
| /* | /* | ||||
| * 5700 B0 chips do not support checksumming correctly due | * 5700 B0 chips do not support checksumming correctly due | ||||
| * to hardware bugs. | * to hardware bugs. | ||||
| */ | */ | ||||
| ▲ Show 20 Lines • Show All 3,096 Lines • Show Last 20 Lines | |||||