Lines Matching defs:ring

74 rdsv3_ib_ring_init(struct rdsv3_ib_work_ring *ring, uint32_t nr)
76 (void) memset(ring, 0, sizeof (*ring));
77 ring->w_nr = nr;
78 RDSV3_DPRINTF5("rdsv3_ib_ring_init", "ring %p nr %u", ring, ring->w_nr);
82 __rdsv3_ib_ring_used(struct rdsv3_ib_work_ring *ring)
87 diff = ring->w_alloc_ctr - (uint32_t)atomic_get(&ring->w_free_ctr);
88 ASSERT(diff <= ring->w_nr);
94 rdsv3_ib_ring_resize(struct rdsv3_ib_work_ring *ring, uint32_t nr)
100 ASSERT(!__rdsv3_ib_ring_used(ring));
101 ring->w_nr = nr;
105 __rdsv3_ib_ring_empty(struct rdsv3_ib_work_ring *ring)
107 return (__rdsv3_ib_ring_used(ring) == 0);
111 rdsv3_ib_ring_alloc(struct rdsv3_ib_work_ring *ring, uint32_t val,
116 avail = ring->w_nr - __rdsv3_ib_ring_used(ring);
119 "ring %p val %u next %u free %u", ring, val,
120 ring->w_alloc_ptr, avail);
124 *pos = ring->w_alloc_ptr;
126 ring->w_alloc_ptr = (ring->w_alloc_ptr + ret) % ring->w_nr;
127 ring->w_alloc_ctr += ret;
134 rdsv3_ib_ring_free(struct rdsv3_ib_work_ring *ring, uint32_t val)
136 ring->w_free_ptr = (ring->w_free_ptr + val) % ring->w_nr;
137 atomic_add_32(&ring->w_free_ctr, val);
139 if (__rdsv3_ib_ring_empty(ring))
140 rdsv3_wake_up(&ring->w_empty_wait);
144 rdsv3_ib_ring_unalloc(struct rdsv3_ib_work_ring *ring, uint32_t val)
146 ring->w_alloc_ptr = (ring->w_alloc_ptr - val) % ring->w_nr;
147 ring->w_alloc_ctr -= val;
151 rdsv3_ib_ring_empty(struct rdsv3_ib_work_ring *ring)
153 return (__rdsv3_ib_ring_empty(ring));
157 rdsv3_ib_ring_low(struct rdsv3_ib_work_ring *ring)
159 return (__rdsv3_ib_ring_used(ring) <= (ring->w_nr >> 2));
163 * returns the oldest alloced ring entry. This will be the next one
167 rdsv3_ib_ring_oldest(struct rdsv3_ib_work_ring *ring)
169 return (ring->w_free_ptr);
177 rdsv3_ib_ring_completed(struct rdsv3_ib_work_ring *ring,
185 ret = ring->w_nr - oldest + (unsigned long long)wr_id + 1;
188 "ring %p ret %u wr_id %u oldest %u", ring, ret, wr_id, oldest);