Lines Matching refs:ring
119 #define NETMAP_BUF(ring, index) \ argument
120 ((char *)(ring) + (ring)->buf_ofs + ((size_t)(index)*(ring)->nr_buf_size))
122 #define NETMAP_BUF_IDX(ring, buf) \ argument
123 ( ((char *)(buf) - ((char *)(ring) + (ring)->buf_ofs) ) / \
124 (ring)->nr_buf_size )
145 nm_ring_space(struct netmap_ring *ring) in nm_ring_space() argument
147 int ret = ring->tail - ring->head; in nm_ring_space()
149 ret += ring->num_slots; in nm_ring_space()
1027 struct netmap_ring *ring; in nm_inject() local
1033 ring = NETMAP_TXRING(d->nifp, ri); in nm_inject()
1035 j = ring->cur; in nm_inject()
1036 while (rem > ring->nr_buf_size && j != ring->tail) { in nm_inject()
1037 rem -= ring->nr_buf_size; in nm_inject()
1038 j = nm_ring_next(ring, j); in nm_inject()
1040 if (j == ring->tail && rem > 0) in nm_inject()
1042 i = ring->cur; in nm_inject()
1044 idx = ring->slot[i].buf_idx; in nm_inject()
1045 ring->slot[i].len = ring->nr_buf_size; in nm_inject()
1046 ring->slot[i].flags = NS_MOREFRAG; in nm_inject()
1047 nm_pkt_copy(buf, NETMAP_BUF(ring, idx), ring->nr_buf_size); in nm_inject()
1048 i = nm_ring_next(ring, i); in nm_inject()
1049 buf = (const char *)buf + ring->nr_buf_size; in nm_inject()
1051 idx = ring->slot[i].buf_idx; in nm_inject()
1052 ring->slot[i].len = rem; in nm_inject()
1053 ring->slot[i].flags = 0; in nm_inject()
1054 nm_pkt_copy(buf, NETMAP_BUF(ring, idx), rem); in nm_inject()
1055 ring->head = ring->cur = nm_ring_next(ring, i); in nm_inject()
1082 struct netmap_ring *ring; in nm_dispatch() local
1086 ring = NETMAP_RXRING(d->nifp, ri); in nm_dispatch()
1087 for ( ; !nm_ring_empty(ring) && cnt != got; got++) { in nm_dispatch()
1094 i = ring->cur; in nm_dispatch()
1095 slot = &ring->slot[i]; in nm_dispatch()
1101 oldbuf = d->hdr.buf = (u_char *)NETMAP_BUF(ring, idx); in nm_dispatch()
1107 i = nm_ring_next(ring, i); in nm_dispatch()
1108 slot = &ring->slot[i]; in nm_dispatch()
1110 nbuf = (u_char *)NETMAP_BUF(ring, slot->buf_idx); in nm_dispatch()
1111 if (oldbuf != NULL && nbuf - oldbuf == (int)ring->nr_buf_size && in nm_dispatch()
1112 oldlen == ring->nr_buf_size) { in nm_dispatch()
1119 d->hdr.ts = ring->ts; in nm_dispatch()
1120 ring->head = ring->cur = nm_ring_next(ring, i); in nm_dispatch()
1137 struct netmap_ring *ring = NETMAP_RXRING(d->nifp, ri); in nm_nextpkt() local
1138 if (!nm_ring_empty(ring)) { in nm_nextpkt()
1139 u_int i = ring->cur; in nm_nextpkt()
1140 u_int idx = ring->slot[i].buf_idx; in nm_nextpkt()
1141 u_char *buf = (u_char *)NETMAP_BUF(ring, idx); in nm_nextpkt()
1144 hdr->ts = ring->ts; in nm_nextpkt()
1145 hdr->len = hdr->caplen = ring->slot[i].len; in nm_nextpkt()
1146 ring->cur = nm_ring_next(ring, i); in nm_nextpkt()
1151 ring->head = ring->cur; in nm_nextpkt()