Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/netmap/netmap_freebsd.c
Context not available. | |||||
} | } | ||||
int | int | ||||
nm_os_mbuf_has_offld(struct mbuf *m) | nm_os_mbuf_has_csum_offld(struct mbuf *m) | ||||
{ | { | ||||
return m->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP | CSUM_SCTP | | return m->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP | CSUM_SCTP | | ||||
CSUM_TCP_IPV6 | CSUM_UDP_IPV6 | | CSUM_TCP_IPV6 | CSUM_UDP_IPV6 | | ||||
CSUM_SCTP_IPV6 | CSUM_TSO); | CSUM_SCTP_IPV6); | ||||
} | } | ||||
int | |||||
nm_os_mbuf_has_seg_offld(struct mbuf *m) | |||||
{ | |||||
return m->m_pkthdr.csum_flags & CSUM_TSO; | |||||
} | |||||
static void | static void | ||||
freebsd_generic_rx_handler(struct ifnet *ifp, struct mbuf *m) | freebsd_generic_rx_handler(struct ifnet *ifp, struct mbuf *m) | ||||
{ | { | ||||
Context not available. | |||||
void | void | ||||
nm_os_extmem_delete(struct nm_os_extmem *e) | nm_os_extmem_delete(struct nm_os_extmem *e) | ||||
{ | { | ||||
D("freeing %jx bytes", (uintmax_t)e->size); | D("freeing %zx bytes", (size_t)e->size); | ||||
vm_map_remove(kernel_map, e->kva, e->kva + e->size); | vm_map_remove(kernel_map, e->kva, e->kva + e->size); | ||||
nm_os_free(e); | nm_os_free(e); | ||||
} | } | ||||
Context not available. | |||||
VMFS_OPTIMAL_SPACE, VM_PROT_READ | VM_PROT_WRITE, | VMFS_OPTIMAL_SPACE, VM_PROT_READ | VM_PROT_WRITE, | ||||
VM_PROT_READ | VM_PROT_WRITE, 0); | VM_PROT_READ | VM_PROT_WRITE, 0); | ||||
if (rv != KERN_SUCCESS) { | if (rv != KERN_SUCCESS) { | ||||
D("vm_map_find(%jx) failed", (uintmax_t)e->size); | D("vm_map_find(%zx) failed", (size_t)e->size); | ||||
goto out_rel; | goto out_rel; | ||||
} | } | ||||
rv = vm_map_wire(kernel_map, e->kva, e->kva + e->size, | rv = vm_map_wire(kernel_map, e->kva, e->kva + e->size, | ||||
Context not available. | |||||
return error; | return error; | ||||
} | } | ||||
void | |||||
nm_os_onattach(struct ifnet *ifp) | |||||
{ | |||||
} | |||||
void | |||||
nm_os_onenter(struct ifnet *ifp) | |||||
{ | |||||
struct netmap_adapter *na = NA(ifp); | |||||
na->if_transmit = ifp->if_transmit; | |||||
ifp->if_transmit = netmap_transmit; | |||||
ifp->if_capenable |= IFCAP_NETMAP; | |||||
} | |||||
void | |||||
nm_os_onexit(struct ifnet *ifp) | |||||
{ | |||||
struct netmap_adapter *na = NA(ifp); | |||||
ifp->if_transmit = na->if_transmit; | |||||
ifp->if_capenable &= ~IFCAP_NETMAP; | |||||
} | |||||
extern struct cdevsw netmap_cdevsw; /* XXX used in netmap.c, should go elsewhere */ | extern struct cdevsw netmap_cdevsw; /* XXX used in netmap.c, should go elsewhere */ | ||||
struct cdevsw netmap_cdevsw = { | struct cdevsw netmap_cdevsw = { | ||||
.d_version = D_VERSION, | .d_version = D_VERSION, | ||||
Context not available. |