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 )
147 nm_ring_space(struct netmap_ring *ring) in nm_ring_space() argument
149 int ret = ring->tail - ring->head; in nm_ring_space()
151 ret += ring->num_slots; in nm_ring_space()
1034 struct netmap_ring *ring; in nm_inject() local
1040 ring = NETMAP_TXRING(d->nifp, ri); in nm_inject()
1042 j = ring->cur; in nm_inject()
1043 while (rem > ring->nr_buf_size && j != ring->tail) { in nm_inject()
1044 rem -= ring->nr_buf_size; in nm_inject()
1045 j = nm_ring_next(ring, j); in nm_inject()
1047 if (j == ring->tail && rem > 0) in nm_inject()
1049 i = ring->cur; in nm_inject()
1051 idx = ring->slot[i].buf_idx; in nm_inject()
1052 ring->slot[i].len = ring->nr_buf_size; in nm_inject()
1053 ring->slot[i].flags = NS_MOREFRAG; in nm_inject()
1054 nm_pkt_copy(buf, NETMAP_BUF(ring, idx), ring->nr_buf_size); in nm_inject()
1055 i = nm_ring_next(ring, i); in nm_inject()
1056 buf = (char *)buf + ring->nr_buf_size; in nm_inject()
1058 idx = ring->slot[i].buf_idx; in nm_inject()
1059 ring->slot[i].len = rem; in nm_inject()
1060 ring->slot[i].flags = 0; in nm_inject()
1061 nm_pkt_copy(buf, NETMAP_BUF(ring, idx), rem); in nm_inject()
1062 ring->head = ring->cur = nm_ring_next(ring, i); in nm_inject()
1090 struct netmap_ring *ring; in nm_dispatch() local
1094 ring = NETMAP_RXRING(d->nifp, ri); in nm_dispatch()
1095 for ( ; !nm_ring_empty(ring) && cnt != got; got++) { in nm_dispatch()
1102 i = ring->cur; in nm_dispatch()
1103 slot = &ring->slot[i]; in nm_dispatch()
1109 oldbuf = d->hdr.buf = (u_char *)NETMAP_BUF(ring, idx); in nm_dispatch()
1115 i = nm_ring_next(ring, i); in nm_dispatch()
1116 slot = &ring->slot[i]; in nm_dispatch()
1118 nbuf = (u_char *)NETMAP_BUF(ring, slot->buf_idx); in nm_dispatch()
1119 if (oldbuf != NULL && nbuf - oldbuf == ring->nr_buf_size && in nm_dispatch()
1120 oldlen == ring->nr_buf_size) { in nm_dispatch()
1127 d->hdr.ts = ring->ts; in nm_dispatch()
1128 ring->head = ring->cur = nm_ring_next(ring, i); in nm_dispatch()
1145 struct netmap_ring *ring = NETMAP_RXRING(d->nifp, ri); in nm_nextpkt() local
1146 if (!nm_ring_empty(ring)) { in nm_nextpkt()
1147 u_int i = ring->cur; in nm_nextpkt()
1148 u_int idx = ring->slot[i].buf_idx; in nm_nextpkt()
1149 u_char *buf = (u_char *)NETMAP_BUF(ring, idx); in nm_nextpkt()
1152 hdr->ts = ring->ts; in nm_nextpkt()
1153 hdr->len = hdr->caplen = ring->slot[i].len; in nm_nextpkt()
1154 ring->cur = nm_ring_next(ring, i); in nm_nextpkt()
1159 ring->head = ring->cur; in nm_nextpkt()