Lines Matching refs:rxq
266 #define WM_CDRXOFF(rxq, x) ((rxq)->rxq_descsize * (x)) argument
461 WM_Q_EVCNT_DEFINE(rxq, intr); /* Interrupts */
462 WM_Q_EVCNT_DEFINE(rxq, defer); /* Rx deferred processing */
463 WM_Q_EVCNT_DEFINE(rxq, ipsum); /* IP checksums checked */
464 WM_Q_EVCNT_DEFINE(rxq, tusum); /* TCP/UDP cksums checked */
465 WM_Q_EVCNT_DEFINE(rxq, qdrop); /* Rx queue drop packet */
743 #define WM_RXCHAIN_RESET(rxq) \ argument
745 (rxq)->rxq_tailp = &(rxq)->rxq_head; \
746 *(rxq)->rxq_tailp = NULL; \
747 (rxq)->rxq_len = 0; \
750 #define WM_RXCHAIN_LINK(rxq, m) \ argument
752 *(rxq)->rxq_tailp = (rxq)->rxq_tail = (m); \
753 (rxq)->rxq_tailp = &(m)->m_next; \
813 #define WM_CDRXADDR(rxq, x) ((rxq)->rxq_desc_dma + WM_CDRXOFF((rxq), (x))) argument
820 #define WM_CDRXADDR_LO(rxq, x) (WM_CDRXADDR((rxq), (x)) & 0xffffffffU) argument
821 #define WM_CDRXADDR_HI(rxq, x) \ argument
823 (uint64_t)WM_CDRXADDR((rxq), (x)) >> 32 : 0)
1914 wm_cdrxsync(struct wm_rxqueue *rxq, int start, int ops) in wm_cdrxsync() argument
1916 struct wm_softc *sc = rxq->rxq_sc; in wm_cdrxsync()
1918 bus_dmamap_sync(sc->sc_dmat, rxq->rxq_desc_dmamap, in wm_cdrxsync()
1919 WM_CDRXOFF(rxq, start), rxq->rxq_descsize, ops); in wm_cdrxsync()
1923 wm_init_rxdesc(struct wm_rxqueue *rxq, int start) in wm_init_rxdesc() argument
1925 struct wm_softc *sc = rxq->rxq_sc; in wm_init_rxdesc()
1926 struct wm_rxsoft *rxs = &rxq->rxq_soft[start]; in wm_init_rxdesc()
1946 ext_rxdesc_t *rxd = &rxq->rxq_ext_descs[start]; in wm_init_rxdesc()
1951 nq_rxdesc_t *rxd = &rxq->rxq_nq_descs[start]; in wm_init_rxdesc()
1958 wiseman_rxdesc_t *rxd = &rxq->rxq_descs[start]; in wm_init_rxdesc()
1968 wm_cdrxsync(rxq, start, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); in wm_init_rxdesc()
1970 CSR_WRITE(sc, rxq->rxq_rdt_reg, start); in wm_init_rxdesc()
3698 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_detach() local
3699 mutex_enter(rxq->rxq_lock); in wm_detach()
3700 wm_rxdrain(rxq); in wm_detach()
3701 mutex_exit(rxq->rxq_lock); in wm_detach()
5940 wm_add_rxbuf(struct wm_rxqueue *rxq, int idx) in wm_add_rxbuf() argument
5942 struct wm_softc *sc = rxq->rxq_sc; in wm_add_rxbuf()
5943 struct wm_rxsoft *rxs = &rxq->rxq_soft[idx]; in wm_add_rxbuf()
5947 KASSERT(mutex_owned(rxq->rxq_lock)); in wm_add_rxbuf()
5984 wm_init_rxdesc(rxq, idx); in wm_add_rxbuf()
5986 wm_init_rxdesc(rxq, idx); in wm_add_rxbuf()
5997 wm_rxdrain(struct wm_rxqueue *rxq) in wm_rxdrain() argument
5999 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdrain()
6003 KASSERT(mutex_owned(rxq->rxq_lock)); in wm_rxdrain()
6006 rxs = &rxq->rxq_soft[i]; in wm_rxdrain()
6356 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_unset_stopping_flags() local
6362 mutex_enter(rxq->rxq_lock); in wm_unset_stopping_flags()
6363 rxq->rxq_stopping = false; in wm_unset_stopping_flags()
6364 mutex_exit(rxq->rxq_lock); in wm_unset_stopping_flags()
6381 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_set_stopping_flags() local
6384 mutex_enter(rxq->rxq_lock); in wm_set_stopping_flags()
6385 rxq->rxq_stopping = true; in wm_set_stopping_flags()
6386 mutex_exit(rxq->rxq_lock); in wm_set_stopping_flags()
6447 struct wm_rxqueue *rxq = &wmq->wmq_rxq; in wm_itrs_calculate() local
6452 if (rxq->rxq_packets) in wm_itrs_calculate()
6453 avg_size = rxq->rxq_bytes / rxq->rxq_packets; in wm_itrs_calculate()
6488 rxq->rxq_packets = 0; in wm_itrs_calculate()
6489 rxq->rxq_bytes = 0; in wm_itrs_calculate()
6523 struct wm_rxqueue *rxq = &wmq->wmq_rxq; in wm_init_sysctls() local
6598 NULL, 0, &rxq->rxq_ptr, in wm_init_sysctls()
6794 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_update_stats() local
6804 WM_Q_EVCNT_ADD(rxq, qdrop, rqdpc); in wm_update_stats()
6848 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_clear_evcnt() local
6850 WM_Q_EVCNT_STORE(rxq, intr, 0); in wm_clear_evcnt()
6851 WM_Q_EVCNT_STORE(rxq, defer, 0); in wm_clear_evcnt()
6852 WM_Q_EVCNT_STORE(rxq, ipsum, 0); in wm_clear_evcnt()
6853 WM_Q_EVCNT_STORE(rxq, tusum, 0); in wm_clear_evcnt()
6855 WM_Q_EVCNT_STORE(rxq, qdrop, 0); in wm_clear_evcnt()
7588 struct wm_rxqueue *rxq = &sc->sc_queue[qidx].wmq_rxq; in wm_init_locked() local
7590 mutex_enter(rxq->rxq_lock); in wm_init_locked()
7591 wm_init_rxdesc(rxq, i); in wm_init_locked()
7592 mutex_exit(rxq->rxq_lock); in wm_init_locked()
7740 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_stop_locked() local
7741 mutex_enter(rxq->rxq_lock); in wm_stop_locked()
7742 wm_rxdrain(rxq); in wm_stop_locked()
7743 mutex_exit(rxq->rxq_lock); in wm_stop_locked()
7944 wm_alloc_rx_descs(struct wm_softc *sc, struct wm_rxqueue *rxq) in wm_alloc_rx_descs() argument
7957 rxq->rxq_ndesc = WM_NRXDESC; in wm_alloc_rx_descs()
7959 rxq->rxq_descsize = sizeof(ext_rxdesc_t); in wm_alloc_rx_descs()
7961 rxq->rxq_descsize = sizeof(nq_rxdesc_t); in wm_alloc_rx_descs()
7963 rxq->rxq_descsize = sizeof(wiseman_rxdesc_t); in wm_alloc_rx_descs()
7964 rxq_descs_size = rxq->rxq_descsize * rxq->rxq_ndesc; in wm_alloc_rx_descs()
7967 PAGE_SIZE, (bus_size_t) 0x100000000ULL, &rxq->rxq_desc_seg, in wm_alloc_rx_descs()
7968 1, &rxq->rxq_desc_rseg, 0)) != 0) { in wm_alloc_rx_descs()
7975 if ((error = bus_dmamem_map(sc->sc_dmat, &rxq->rxq_desc_seg, in wm_alloc_rx_descs()
7976 rxq->rxq_desc_rseg, rxq_descs_size, in wm_alloc_rx_descs()
7977 (void **)&rxq->rxq_descs_u, BUS_DMA_COHERENT)) != 0) { in wm_alloc_rx_descs()
7984 rxq_descs_size, 0, 0, &rxq->rxq_desc_dmamap)) != 0) { in wm_alloc_rx_descs()
7991 if ((error = bus_dmamap_load(sc->sc_dmat, rxq->rxq_desc_dmamap, in wm_alloc_rx_descs()
7992 rxq->rxq_descs_u, rxq_descs_size, NULL, 0)) != 0) { in wm_alloc_rx_descs()
8002 bus_dmamap_destroy(sc->sc_dmat, rxq->rxq_desc_dmamap); in wm_alloc_rx_descs()
8004 bus_dmamem_unmap(sc->sc_dmat, (void *)rxq->rxq_descs_u, in wm_alloc_rx_descs()
8007 bus_dmamem_free(sc->sc_dmat, &rxq->rxq_desc_seg, rxq->rxq_desc_rseg); in wm_alloc_rx_descs()
8013 wm_free_rx_descs(struct wm_softc *sc, struct wm_rxqueue *rxq) in wm_free_rx_descs() argument
8016 bus_dmamap_unload(sc->sc_dmat, rxq->rxq_desc_dmamap); in wm_free_rx_descs()
8017 bus_dmamap_destroy(sc->sc_dmat, rxq->rxq_desc_dmamap); in wm_free_rx_descs()
8018 bus_dmamem_unmap(sc->sc_dmat, (void *)rxq->rxq_descs_u, in wm_free_rx_descs()
8019 rxq->rxq_descsize * rxq->rxq_ndesc); in wm_free_rx_descs()
8020 bus_dmamem_free(sc->sc_dmat, &rxq->rxq_desc_seg, rxq->rxq_desc_rseg); in wm_free_rx_descs()
8068 wm_alloc_rx_buffer(struct wm_softc *sc, struct wm_rxqueue *rxq) in wm_alloc_rx_buffer() argument
8073 for (i = 0; i < rxq->rxq_ndesc; i++) { in wm_alloc_rx_buffer()
8076 &rxq->rxq_soft[i].rxs_dmamap)) != 0) { in wm_alloc_rx_buffer()
8082 rxq->rxq_soft[i].rxs_mbuf = NULL; in wm_alloc_rx_buffer()
8088 for (i = 0; i < rxq->rxq_ndesc; i++) { in wm_alloc_rx_buffer()
8089 if (rxq->rxq_soft[i].rxs_dmamap != NULL) in wm_alloc_rx_buffer()
8091 rxq->rxq_soft[i].rxs_dmamap); in wm_alloc_rx_buffer()
8097 wm_free_rx_buffer(struct wm_softc *sc, struct wm_rxqueue *rxq) in wm_free_rx_buffer() argument
8101 for (i = 0; i < rxq->rxq_ndesc; i++) { in wm_free_rx_buffer()
8102 if (rxq->rxq_soft[i].rxs_dmamap != NULL) in wm_free_rx_buffer()
8104 rxq->rxq_soft[i].rxs_dmamap); in wm_free_rx_buffer()
8199 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_alloc_txrx_queues() local
8200 rxq->rxq_sc = sc; in wm_alloc_txrx_queues()
8201 rxq->rxq_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_NET); in wm_alloc_txrx_queues()
8203 error = wm_alloc_rx_descs(sc, rxq); in wm_alloc_txrx_queues()
8207 error = wm_alloc_rx_buffer(sc, rxq); in wm_alloc_txrx_queues()
8209 wm_free_rx_descs(sc, rxq); in wm_alloc_txrx_queues()
8216 WM_Q_INTR_EVCNT_ATTACH(rxq, intr, rxq, i, xname); in wm_alloc_txrx_queues()
8217 WM_Q_INTR_EVCNT_ATTACH(rxq, defer, rxq, i, xname); in wm_alloc_txrx_queues()
8218 WM_Q_MISC_EVCNT_ATTACH(rxq, ipsum, rxq, i, xname); in wm_alloc_txrx_queues()
8219 WM_Q_MISC_EVCNT_ATTACH(rxq, tusum, rxq, i, xname); in wm_alloc_txrx_queues()
8221 WM_Q_MISC_EVCNT_ATTACH(rxq, qdrop, rxq, i, xname); in wm_alloc_txrx_queues()
8233 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_alloc_txrx_queues() local
8234 wm_free_rx_buffer(sc, rxq); in wm_alloc_txrx_queues()
8235 wm_free_rx_descs(sc, rxq); in wm_alloc_txrx_queues()
8236 if (rxq->rxq_lock) in wm_alloc_txrx_queues()
8237 mutex_obj_free(rxq->rxq_lock); in wm_alloc_txrx_queues()
8265 struct wm_rxqueue *rxq = &sc->sc_queue[i].wmq_rxq; in wm_free_txrx_queues() local
8268 WM_Q_EVCNT_DETACH(rxq, intr, rxq, i); in wm_free_txrx_queues()
8269 WM_Q_EVCNT_DETACH(rxq, defer, rxq, i); in wm_free_txrx_queues()
8270 WM_Q_EVCNT_DETACH(rxq, ipsum, rxq, i); in wm_free_txrx_queues()
8271 WM_Q_EVCNT_DETACH(rxq, tusum, rxq, i); in wm_free_txrx_queues()
8273 WM_Q_EVCNT_DETACH(rxq, qdrop, rxq, i); in wm_free_txrx_queues()
8276 wm_free_rx_buffer(sc, rxq); in wm_free_txrx_queues()
8277 wm_free_rx_descs(sc, rxq); in wm_free_txrx_queues()
8278 if (rxq->rxq_lock) in wm_free_txrx_queues()
8279 mutex_obj_free(rxq->rxq_lock); in wm_free_txrx_queues()
8430 struct wm_rxqueue *rxq) in wm_init_rx_regs() argument
8433 KASSERT(mutex_owned(rxq->rxq_lock)); in wm_init_rx_regs()
8440 CSR_WRITE(sc, WMREG_OLD_RDBAH0, WM_CDRXADDR_HI(rxq, 0)); in wm_init_rx_regs()
8441 CSR_WRITE(sc, WMREG_OLD_RDBAL0, WM_CDRXADDR_LO(rxq, 0)); in wm_init_rx_regs()
8443 rxq->rxq_descsize * rxq->rxq_ndesc); in wm_init_rx_regs()
8457 CSR_WRITE(sc, WMREG_RDBAH(qid), WM_CDRXADDR_HI(rxq, 0)); in wm_init_rx_regs()
8458 CSR_WRITE(sc, WMREG_RDBAL(qid), WM_CDRXADDR_LO(rxq, 0)); in wm_init_rx_regs()
8460 rxq->rxq_descsize * rxq->rxq_ndesc); in wm_init_rx_regs()
8504 wm_init_rx_buffer(struct wm_softc *sc, struct wm_rxqueue *rxq) in wm_init_rx_buffer() argument
8509 KASSERT(mutex_owned(rxq->rxq_lock)); in wm_init_rx_buffer()
8511 for (i = 0; i < rxq->rxq_ndesc; i++) { in wm_init_rx_buffer()
8512 rxs = &rxq->rxq_soft[i]; in wm_init_rx_buffer()
8514 if ((error = wm_add_rxbuf(rxq, i)) != 0) { in wm_init_rx_buffer()
8522 wm_rxdrain(rxq); in wm_init_rx_buffer()
8532 wm_init_rxdesc(rxq, i); in wm_init_rx_buffer()
8535 rxq->rxq_ptr = 0; in wm_init_rx_buffer()
8536 rxq->rxq_discard = 0; in wm_init_rx_buffer()
8537 WM_RXCHAIN_RESET(rxq); in wm_init_rx_buffer()
8544 struct wm_rxqueue *rxq) in wm_init_rx_queue() argument
8547 KASSERT(mutex_owned(rxq->rxq_lock)); in wm_init_rx_queue()
8554 rxq->rxq_rdt_reg = WMREG_OLD_RDT0; in wm_init_rx_queue()
8556 rxq->rxq_rdt_reg = WMREG_RDT(wmq->wmq_id); in wm_init_rx_queue()
8558 wm_init_rx_regs(sc, wmq, rxq); in wm_init_rx_queue()
8559 return wm_init_rx_buffer(sc, rxq); in wm_init_rx_queue()
8577 struct wm_rxqueue *rxq = &wmq->wmq_rxq; in wm_init_txrx_queues() local
8596 mutex_enter(rxq->rxq_lock); in wm_init_txrx_queues()
8597 error = wm_init_rx_queue(sc, wmq, rxq); in wm_init_txrx_queues()
8598 mutex_exit(rxq->rxq_lock); in wm_init_txrx_queues()
10002 wm_rxdesc_get_status(struct wm_rxqueue *rxq, int idx) in wm_rxdesc_get_status() argument
10004 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_get_status()
10008 le32toh(rxq->rxq_ext_descs[idx].erx_ctx.erxc_err_stat)); in wm_rxdesc_get_status()
10011 le32toh(rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_err_stat)); in wm_rxdesc_get_status()
10013 return rxq->rxq_descs[idx].wrx_status; in wm_rxdesc_get_status()
10017 wm_rxdesc_get_errors(struct wm_rxqueue *rxq, int idx) in wm_rxdesc_get_errors() argument
10019 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_get_errors()
10023 le32toh(rxq->rxq_ext_descs[idx].erx_ctx.erxc_err_stat)); in wm_rxdesc_get_errors()
10026 le32toh(rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_err_stat)); in wm_rxdesc_get_errors()
10028 return rxq->rxq_descs[idx].wrx_errors; in wm_rxdesc_get_errors()
10032 wm_rxdesc_get_vlantag(struct wm_rxqueue *rxq, int idx) in wm_rxdesc_get_vlantag() argument
10034 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_get_vlantag()
10037 return rxq->rxq_ext_descs[idx].erx_ctx.erxc_vlan; in wm_rxdesc_get_vlantag()
10039 return rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_vlan; in wm_rxdesc_get_vlantag()
10041 return rxq->rxq_descs[idx].wrx_special; in wm_rxdesc_get_vlantag()
10045 wm_rxdesc_get_pktlen(struct wm_rxqueue *rxq, int idx) in wm_rxdesc_get_pktlen() argument
10047 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_get_pktlen()
10050 return rxq->rxq_ext_descs[idx].erx_ctx.erxc_pktlen; in wm_rxdesc_get_pktlen()
10052 return rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_pktlen; in wm_rxdesc_get_pktlen()
10054 return rxq->rxq_descs[idx].wrx_len; in wm_rxdesc_get_pktlen()
10059 wm_rxdesc_get_rsshash(struct wm_rxqueue *rxq, int idx) in wm_rxdesc_get_rsshash() argument
10061 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_get_rsshash()
10064 return rxq->rxq_ext_descs[idx].erx_ctx.erxc_rsshash; in wm_rxdesc_get_rsshash()
10066 return rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_rsshash; in wm_rxdesc_get_rsshash()
10072 wm_rxdesc_get_rsstype(struct wm_rxqueue *rxq, int idx) in wm_rxdesc_get_rsstype() argument
10074 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_get_rsstype()
10077 return EXTRXC_RSS_TYPE(rxq->rxq_ext_descs[idx].erx_ctx.erxc_mrq); in wm_rxdesc_get_rsstype()
10079 return NQRXC_RSS_TYPE(rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_misc); in wm_rxdesc_get_rsstype()
10112 wm_rxdesc_is_eop(struct wm_rxqueue *rxq, uint32_t status) in wm_rxdesc_is_eop() argument
10115 if (wm_rxdesc_is_set_status(rxq->rxq_sc, status, in wm_rxdesc_is_eop()
10123 wm_rxdesc_has_errors(struct wm_rxqueue *rxq, uint32_t errors) in wm_rxdesc_has_errors() argument
10125 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_has_errors()
10152 wm_rxdesc_dd(struct wm_rxqueue *rxq, int idx, uint32_t status) in wm_rxdesc_dd() argument
10154 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_dd()
10159 wm_cdrxsync(rxq, idx, BUS_DMASYNC_PREREAD); in wm_rxdesc_dd()
10167 wm_rxdesc_input_vlantag(struct wm_rxqueue *rxq, uint32_t status, in wm_rxdesc_input_vlantag() argument
10171 if (wm_rxdesc_is_set_status(rxq->rxq_sc, status, in wm_rxdesc_input_vlantag()
10180 wm_rxdesc_ensure_checksum(struct wm_rxqueue *rxq, uint32_t status, in wm_rxdesc_ensure_checksum() argument
10183 struct wm_softc *sc = rxq->rxq_sc; in wm_rxdesc_ensure_checksum()
10188 WM_Q_EVCNT_INCR(rxq, ipsum); in wm_rxdesc_ensure_checksum()
10201 WM_Q_EVCNT_INCR(rxq, tusum); in wm_rxdesc_ensure_checksum()
10218 wm_rxeof(struct wm_rxqueue *rxq, u_int limit) in wm_rxeof() argument
10220 struct wm_softc *sc = rxq->rxq_sc; in wm_rxeof()
10230 KASSERT(mutex_owned(rxq->rxq_lock)); in wm_rxeof()
10232 for (i = rxq->rxq_ptr;; i = WM_NEXTRX(i)) { in wm_rxeof()
10233 rxs = &rxq->rxq_soft[i]; in wm_rxeof()
10238 wm_cdrxsync(rxq, i, in wm_rxeof()
10241 status = wm_rxdesc_get_status(rxq, i); in wm_rxeof()
10242 errors = wm_rxdesc_get_errors(rxq, i); in wm_rxeof()
10243 len = le16toh(wm_rxdesc_get_pktlen(rxq, i)); in wm_rxeof()
10244 vlantag = wm_rxdesc_get_vlantag(rxq, i); in wm_rxeof()
10246 uint32_t rsshash = le32toh(wm_rxdesc_get_rsshash(rxq, i)); in wm_rxeof()
10247 uint8_t rsstype = wm_rxdesc_get_rsstype(rxq, i); in wm_rxeof()
10250 if (!wm_rxdesc_dd(rxq, i, status)) in wm_rxeof()
10262 if (__predict_false(rxq->rxq_discard)) { in wm_rxeof()
10266 wm_init_rxdesc(rxq, i); in wm_rxeof()
10267 if (wm_rxdesc_is_eop(rxq, status)) { in wm_rxeof()
10272 rxq->rxq_discard = 0; in wm_rxeof()
10287 if ((len == 0) || (wm_add_rxbuf(rxq, i) != 0)) { in wm_rxeof()
10295 wm_init_rxdesc(rxq, i); in wm_rxeof()
10296 if (!wm_rxdesc_is_eop(rxq, status)) in wm_rxeof()
10297 rxq->rxq_discard = 1; in wm_rxeof()
10298 m_freem(rxq->rxq_head); in wm_rxeof()
10299 WM_RXCHAIN_RESET(rxq); in wm_rxeof()
10303 rxq->rxq_discard ? " (discard)" : "")); in wm_rxeof()
10308 rxq->rxq_len += len; in wm_rxeof()
10314 if (!wm_rxdesc_is_eop(rxq, status)) { in wm_rxeof()
10315 WM_RXCHAIN_LINK(rxq, m); in wm_rxeof()
10318 device_xname(sc->sc_dev), rxq->rxq_len)); in wm_rxeof()
10335 rxq->rxq_tail->m_len in wm_rxeof()
10340 len = rxq->rxq_len - ETHER_CRC_LEN; in wm_rxeof()
10342 len = rxq->rxq_len; in wm_rxeof()
10344 WM_RXCHAIN_LINK(rxq, m); in wm_rxeof()
10346 *rxq->rxq_tailp = NULL; in wm_rxeof()
10347 m = rxq->rxq_head; in wm_rxeof()
10349 WM_RXCHAIN_RESET(rxq); in wm_rxeof()
10356 if (wm_rxdesc_has_errors(rxq, errors)) { in wm_rxeof()
10376 if (!wm_rxdesc_input_vlantag(rxq, status, vlantag, m)) in wm_rxeof()
10380 wm_rxdesc_ensure_checksum(rxq, status, errors, m); in wm_rxeof()
10382 rxq->rxq_packets++; in wm_rxeof()
10383 rxq->rxq_bytes += len; in wm_rxeof()
10387 if (rxq->rxq_stopping) in wm_rxeof()
10390 rxq->rxq_ptr = i; in wm_rxeof()
10906 struct wm_rxqueue *rxq = &wmq->wmq_rxq; in wm_intr_legacy() local
10944 mutex_enter(rxq->rxq_lock); in wm_intr_legacy()
10946 if (rxq->rxq_stopping) { in wm_intr_legacy()
10947 mutex_exit(rxq->rxq_lock); in wm_intr_legacy()
10957 WM_Q_EVCNT_INCR(rxq, intr); in wm_intr_legacy()
10966 more = wm_rxeof(rxq, rxlimit); in wm_intr_legacy()
10970 mutex_exit(rxq->rxq_lock); in wm_intr_legacy()
11060 struct wm_rxqueue *rxq = &wmq->wmq_rxq; in wm_txrxintr_msix() local
11091 mutex_enter(rxq->rxq_lock); in wm_txrxintr_msix()
11093 if (rxq->rxq_stopping) { in wm_txrxintr_msix()
11094 mutex_exit(rxq->rxq_lock); in wm_txrxintr_msix()
11098 WM_Q_EVCNT_INCR(rxq, intr); in wm_txrxintr_msix()
11100 rxmore = wm_rxeof(rxq, rxlimit); in wm_txrxintr_msix()
11103 mutex_exit(rxq->rxq_lock); in wm_txrxintr_msix()
11121 struct wm_rxqueue *rxq = &wmq->wmq_rxq; in wm_handle_queue() local
11137 mutex_enter(rxq->rxq_lock); in wm_handle_queue()
11138 if (rxq->rxq_stopping) { in wm_handle_queue()
11139 mutex_exit(rxq->rxq_lock); in wm_handle_queue()
11142 WM_Q_EVCNT_INCR(rxq, defer); in wm_handle_queue()
11143 rxmore = wm_rxeof(rxq, rxlimit); in wm_handle_queue()
11144 mutex_exit(rxq->rxq_lock); in wm_handle_queue()