Lines Matching refs:rbr
130 vmbus_rxbr_intr_mask(struct vmbus_rxbr *rbr) in vmbus_rxbr_intr_mask() argument
132 rbr->rxbr_imask = 1; in vmbus_rxbr_intr_mask()
137 vmbus_rxbr_avail(const struct vmbus_rxbr *rbr) in vmbus_rxbr_avail() argument
142 rindex = atomic_load_acq_32(&rbr->rxbr_rindex); in vmbus_rxbr_avail()
143 windex = atomic_load_acq_32(&rbr->rxbr_windex); in vmbus_rxbr_avail()
145 return (rbr->rxbr_dsize - in vmbus_rxbr_avail()
146 VMBUS_BR_WAVAIL(rindex, windex, rbr->rxbr_dsize)); in vmbus_rxbr_avail()
150 vmbus_rxbr_available(const struct vmbus_rxbr *rbr) in vmbus_rxbr_available() argument
152 return (vmbus_rxbr_avail(rbr)); in vmbus_rxbr_available()
156 vmbus_rxbr_intr_unmask(struct vmbus_rxbr *rbr) in vmbus_rxbr_intr_unmask() argument
158 rbr->rxbr_imask = 0; in vmbus_rxbr_intr_unmask()
166 return vmbus_rxbr_avail(rbr); in vmbus_rxbr_intr_unmask()
177 vmbus_rxbr_init(struct vmbus_rxbr *rbr) in vmbus_rxbr_init() argument
179 mtx_init(&rbr->rxbr_lock, "vmbus_rxbr", NULL, MTX_SPIN); in vmbus_rxbr_init()
183 vmbus_rxbr_deinit(struct vmbus_rxbr *rbr) in vmbus_rxbr_deinit() argument
185 mtx_destroy(&rbr->rxbr_lock); in vmbus_rxbr_deinit()
189 vmbus_rxbr_setup(struct vmbus_rxbr *rbr, void *buf, int blen) in vmbus_rxbr_setup() argument
191 vmbus_br_setup(&rbr->rxbr, buf, blen); in vmbus_rxbr_setup()
195 vmbus_rxbr_need_signal(const struct vmbus_rxbr *rbr, uint32_t bytes_read) in vmbus_rxbr_need_signal() argument
200 if (!rbr->rxbr_fpsndsz) in vmbus_rxbr_need_signal()
205 pending_snd_sz = rbr->rxbr_psndsz; in vmbus_rxbr_need_signal()
212 canwrite_size = rbr->rxbr_dsize - vmbus_rxbr_avail(rbr); in vmbus_rxbr_need_signal()
504 vmbus_rxbr_copyfrom(const struct vmbus_rxbr *rbr, uint32_t rindex, in vmbus_rxbr_copyfrom() argument
508 const uint8_t *br_data = rbr->rxbr_data; in vmbus_rxbr_copyfrom()
509 uint32_t br_dsize = rbr->rxbr_dsize; in vmbus_rxbr_copyfrom()
524 vmbus_rxbr_copyfrom_call(const struct vmbus_rxbr *rbr, uint32_t rindex, in vmbus_rxbr_copyfrom_call() argument
527 uint8_t *br_data = rbr->rxbr_data; in vmbus_rxbr_copyfrom_call()
528 uint32_t br_dsize = rbr->rxbr_dsize; in vmbus_rxbr_copyfrom_call()
545 vmbus_rxbr_peek(struct vmbus_rxbr *rbr, void *data, int dlen) in vmbus_rxbr_peek() argument
547 mtx_lock_spin(&rbr->rxbr_lock); in vmbus_rxbr_peek()
553 if (vmbus_rxbr_avail(rbr) < dlen + sizeof(uint64_t)) { in vmbus_rxbr_peek()
554 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_peek()
557 vmbus_rxbr_copyfrom(rbr, in vmbus_rxbr_peek()
558 atomic_load_acq_32(&rbr->rxbr_rindex), data, dlen); in vmbus_rxbr_peek()
560 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_peek()
572 vmbus_rxbr_peek_call(struct vmbus_rxbr *rbr, int dlen, uint32_t skip, in vmbus_rxbr_peek_call() argument
575 uint32_t rindex, br_dsize0 = rbr->rxbr_dsize; in vmbus_rxbr_peek_call()
578 mtx_lock_spin(&rbr->rxbr_lock); in vmbus_rxbr_peek_call()
583 if (vmbus_rxbr_avail(rbr) < skip + dlen + sizeof(uint64_t)) { in vmbus_rxbr_peek_call()
584 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_peek_call()
588 rindex = VMBUS_BR_IDXINC(rbr->rxbr_rindex, skip, br_dsize0); in vmbus_rxbr_peek_call()
589 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_peek_call()
591 ret = vmbus_rxbr_copyfrom_call(rbr, rindex, dlen, cb, cbarg); in vmbus_rxbr_peek_call()
601 vmbus_rxbr_idxadv_peek(struct vmbus_rxbr *rbr, void *data, int dlen, in vmbus_rxbr_idxadv_peek() argument
604 uint32_t rindex, br_dsize = rbr->rxbr_dsize; in vmbus_rxbr_idxadv_peek()
606 mtx_lock_spin(&rbr->rxbr_lock); in vmbus_rxbr_idxadv_peek()
610 if (vmbus_rxbr_avail(rbr) < idx_adv + sizeof(uint64_t) + dlen) { in vmbus_rxbr_idxadv_peek()
611 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_idxadv_peek()
620 rindex = VMBUS_BR_IDXINC(rbr->rxbr_rindex, in vmbus_rxbr_idxadv_peek()
623 atomic_store_rel_32(&rbr->rxbr_rindex, rindex); in vmbus_rxbr_idxadv_peek()
626 vmbus_rxbr_copyfrom(rbr, in vmbus_rxbr_idxadv_peek()
627 atomic_load_acq_32(&rbr->rxbr_rindex), data, dlen); in vmbus_rxbr_idxadv_peek()
629 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_idxadv_peek()
634 vmbus_rxbr_need_signal(rbr, idx_adv + in vmbus_rxbr_idxadv_peek()
648 vmbus_rxbr_idxadv(struct vmbus_rxbr *rbr, uint32_t idx_adv, in vmbus_rxbr_idxadv() argument
651 uint32_t rindex, br_dsize = rbr->rxbr_dsize; in vmbus_rxbr_idxadv()
653 mtx_lock_spin(&rbr->rxbr_lock); in vmbus_rxbr_idxadv()
657 if (vmbus_rxbr_avail(rbr) < idx_adv + sizeof(uint64_t)) { in vmbus_rxbr_idxadv()
658 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_idxadv()
666 rindex = VMBUS_BR_IDXINC(rbr->rxbr_rindex, in vmbus_rxbr_idxadv()
669 atomic_store_rel_32(&rbr->rxbr_rindex, rindex); in vmbus_rxbr_idxadv()
671 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_idxadv()
675 vmbus_rxbr_need_signal(rbr, idx_adv + sizeof(uint64_t)); in vmbus_rxbr_idxadv()
686 vmbus_rxbr_read(struct vmbus_rxbr *rbr, void *data, int dlen, uint32_t skip, in vmbus_rxbr_read() argument
689 uint32_t rindex, br_dsize = rbr->rxbr_dsize; in vmbus_rxbr_read()
693 mtx_lock_spin(&rbr->rxbr_lock); in vmbus_rxbr_read()
695 if (vmbus_rxbr_avail(rbr) < dlen + skip + sizeof(uint64_t)) { in vmbus_rxbr_read()
696 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_read()
703 rindex = VMBUS_BR_IDXINC(atomic_load_acq_32(&rbr->rxbr_rindex), in vmbus_rxbr_read()
705 rindex = vmbus_rxbr_copyfrom(rbr, rindex, data, dlen); in vmbus_rxbr_read()
716 atomic_store_rel_32(&rbr->rxbr_rindex, rindex); in vmbus_rxbr_read()
718 mtx_unlock_spin(&rbr->rxbr_lock); in vmbus_rxbr_read()
722 vmbus_rxbr_need_signal(rbr, in vmbus_rxbr_read()