Changeset View
Changeset View
Standalone View
Standalone View
head/sys/net/iflib.c
Show First 20 Lines • Show All 445 Lines • ▼ Show 20 Lines | |||||
#ifdef IFLIB_DIAGNOSTICS | #ifdef IFLIB_DIAGNOSTICS | ||||
uint64_t ifr_cpu_exec_count[256]; | uint64_t ifr_cpu_exec_count[256]; | ||||
#endif | #endif | ||||
} __aligned(CACHE_LINE_SIZE); | } __aligned(CACHE_LINE_SIZE); | ||||
typedef struct if_rxsd { | typedef struct if_rxsd { | ||||
caddr_t *ifsd_cl; | caddr_t *ifsd_cl; | ||||
iflib_fl_t ifsd_fl; | iflib_fl_t ifsd_fl; | ||||
qidx_t ifsd_cidx; | |||||
} *if_rxsd_t; | } *if_rxsd_t; | ||||
/* multiple of word size */ | /* multiple of word size */ | ||||
#ifdef __LP64__ | #ifdef __LP64__ | ||||
#define PKT_INFO_SIZE 6 | #define PKT_INFO_SIZE 6 | ||||
#define RXD_INFO_SIZE 5 | #define RXD_INFO_SIZE 5 | ||||
#define PKT_TYPE uint64_t | #define PKT_TYPE uint64_t | ||||
#else | #else | ||||
▲ Show 20 Lines • Show All 2,084 Lines • ▼ Show 20 Lines | rxd_frag_to_sd(iflib_rxq_t rxq, if_rxd_frag_t irf, bool unload, if_rxsd_t sd, | ||||
struct mbuf *m; | struct mbuf *m; | ||||
int flid, cidx, len, next; | int flid, cidx, len, next; | ||||
map = NULL; | map = NULL; | ||||
flid = irf->irf_flid; | flid = irf->irf_flid; | ||||
cidx = irf->irf_idx; | cidx = irf->irf_idx; | ||||
fl = &rxq->ifr_fl[flid]; | fl = &rxq->ifr_fl[flid]; | ||||
sd->ifsd_fl = fl; | sd->ifsd_fl = fl; | ||||
sd->ifsd_cidx = cidx; | |||||
m = fl->ifl_sds.ifsd_m[cidx]; | m = fl->ifl_sds.ifsd_m[cidx]; | ||||
sd->ifsd_cl = &fl->ifl_sds.ifsd_cl[cidx]; | sd->ifsd_cl = &fl->ifl_sds.ifsd_cl[cidx]; | ||||
fl->ifl_credits--; | fl->ifl_credits--; | ||||
#if MEMORY_LOGGING | #if MEMORY_LOGGING | ||||
fl->ifl_m_dequeued++; | fl->ifl_m_dequeued++; | ||||
#endif | #endif | ||||
if (rxq->ifr_ctx->ifc_flags & IFC_PREFETCH) | if (rxq->ifr_ctx->ifc_flags & IFC_PREFETCH) | ||||
prefetch_pkts(fl, cidx); | prefetch_pkts(fl, cidx); | ||||
next = (cidx + CACHE_PTR_INCREMENT) & (fl->ifl_size-1); | next = (cidx + CACHE_PTR_INCREMENT) & (fl->ifl_size-1); | ||||
prefetch(&fl->ifl_sds.ifsd_map[next]); | prefetch(&fl->ifl_sds.ifsd_map[next]); | ||||
map = fl->ifl_sds.ifsd_map[cidx]; | map = fl->ifl_sds.ifsd_map[cidx]; | ||||
next = (cidx + CACHE_LINE_SIZE) & (fl->ifl_size-1); | |||||
bus_dmamap_sync(fl->ifl_buf_tag, map, BUS_DMASYNC_POSTREAD); | bus_dmamap_sync(fl->ifl_buf_tag, map, BUS_DMASYNC_POSTREAD); | ||||
if (rxq->pfil != NULL && PFIL_HOOKED_IN(rxq->pfil) && pf_rv != NULL && | if (rxq->pfil != NULL && PFIL_HOOKED_IN(rxq->pfil) && pf_rv != NULL && | ||||
irf->irf_len != 0) { | irf->irf_len != 0) { | ||||
payload = *sd->ifsd_cl; | payload = *sd->ifsd_cl; | ||||
payload += ri->iri_pad; | payload += ri->iri_pad; | ||||
len = ri->iri_len - ri->iri_pad; | len = ri->iri_len - ri->iri_pad; | ||||
▲ Show 20 Lines • Show All 4,317 Lines • Show Last 20 Lines |