Lines Matching refs:ring

118 #define NETMAP_BUF(ring, index)				\  argument
119 ((char *)(ring) + (ring)->buf_ofs + ((size_t)(index)*(ring)->nr_buf_size))
121 #define NETMAP_BUF_IDX(ring, buf) \ argument
122 ( ((char *)(buf) - ((char *)(ring) + (ring)->buf_ofs) ) / \
123 (ring)->nr_buf_size )
126 #define NETMAP_ROFFSET(ring, slot) \ argument
127 ((slot)->ptr & (ring)->offset_mask)
130 #define NETMAP_WOFFSET(ring, slot, offset) \ argument
131 do { (slot)->ptr = ((slot)->ptr & ~(ring)->offset_mask) | \
132 ((offset) & (ring)->offset_mask); } while (0)
137 #define NETMAP_BUF_OFFSET(ring, slot) \ argument
138 (NETMAP_BUF(ring, (slot)->buf_idx) + NETMAP_ROFFSET(ring, slot))
161 nm_ring_space(struct netmap_ring *ring) in nm_ring_space() argument
163 int ret = ring->tail - ring->head; in nm_ring_space()
165 ret += ring->num_slots; in nm_ring_space()
1048 struct netmap_ring *ring; in nm_inject() local
1054 ring = NETMAP_TXRING(d->nifp, ri); in nm_inject()
1056 j = ring->cur; in nm_inject()
1057 while (rem > ring->nr_buf_size && j != ring->tail) { in nm_inject()
1058 rem -= ring->nr_buf_size; in nm_inject()
1059 j = nm_ring_next(ring, j); in nm_inject()
1061 if (j == ring->tail && rem > 0) in nm_inject()
1063 i = ring->cur; in nm_inject()
1065 idx = ring->slot[i].buf_idx; in nm_inject()
1066 ring->slot[i].len = ring->nr_buf_size; in nm_inject()
1067 ring->slot[i].flags = NS_MOREFRAG; in nm_inject()
1068 nm_pkt_copy(buf, NETMAP_BUF(ring, idx), ring->nr_buf_size); in nm_inject()
1069 i = nm_ring_next(ring, i); in nm_inject()
1070 buf = (const char *)buf + ring->nr_buf_size; in nm_inject()
1072 idx = ring->slot[i].buf_idx; in nm_inject()
1073 ring->slot[i].len = rem; in nm_inject()
1074 ring->slot[i].flags = 0; in nm_inject()
1075 nm_pkt_copy(buf, NETMAP_BUF(ring, idx), rem); in nm_inject()
1076 ring->head = ring->cur = nm_ring_next(ring, i); in nm_inject()
1104 struct netmap_ring *ring; in nm_dispatch() local
1108 ring = NETMAP_RXRING(d->nifp, ri); in nm_dispatch()
1109 for ( ; !nm_ring_empty(ring) && cnt != got; got++) { in nm_dispatch()
1116 i = ring->cur; in nm_dispatch()
1117 slot = &ring->slot[i]; in nm_dispatch()
1123 oldbuf = d->hdr.buf = (u_char *)NETMAP_BUF(ring, idx); in nm_dispatch()
1129 i = nm_ring_next(ring, i); in nm_dispatch()
1130 slot = &ring->slot[i]; in nm_dispatch()
1132 nbuf = (u_char *)NETMAP_BUF(ring, slot->buf_idx); in nm_dispatch()
1133 if (oldbuf != NULL && (uint32_t)(nbuf - oldbuf) == ring->nr_buf_size && in nm_dispatch()
1134 oldlen == ring->nr_buf_size) { in nm_dispatch()
1141 d->hdr.ts = ring->ts; in nm_dispatch()
1142 ring->head = ring->cur = nm_ring_next(ring, i); in nm_dispatch()
1159 struct netmap_ring *ring = NETMAP_RXRING(d->nifp, ri); in nm_nextpkt() local
1160 if (!nm_ring_empty(ring)) { in nm_nextpkt()
1161 u_int i = ring->cur; in nm_nextpkt()
1162 u_int idx = ring->slot[i].buf_idx; in nm_nextpkt()
1163 u_char *buf = (u_char *)NETMAP_BUF(ring, idx); in nm_nextpkt()
1166 hdr->ts = ring->ts; in nm_nextpkt()
1167 hdr->len = hdr->caplen = ring->slot[i].len; in nm_nextpkt()
1168 ring->cur = nm_ring_next(ring, i); in nm_nextpkt()
1173 ring->head = ring->cur; in nm_nextpkt()