Lines Matching refs:ringp

4615 #define	SOFT_RING_ENQUEUE_CHAIN(ringp, mp, tail, cnt, sz) {	       	\
4619 ASSERT(MUTEX_HELD(&(ringp)->s_ring_lock)); \
4621 if ((ringp)->s_ring_last != NULL) \
4622 (ringp)->s_ring_last->b_next = (mp); \
4624 (ringp)->s_ring_first = (mp); \
4625 (ringp)->s_ring_last = (tail); \
4626 (ringp)->s_ring_count += (cnt); \
4627 ASSERT((ringp)->s_ring_count > 0); \
4628 if ((ringp)->s_ring_type & ST_RING_BW_CTL) { \
4629 (ringp)->s_ring_size += sz; \
4677 mac_rx_soft_ring_process(mac_client_impl_t *mcip, mac_soft_ring_t *ringp,
4683 mac_soft_ring_set_t *mac_srs = ringp->s_ring_set;
4685 ASSERT(ringp != NULL);
4688 ASSERT(MUTEX_NOT_HELD(&ringp->s_ring_lock));
4690 mutex_enter(&ringp->s_ring_lock);
4691 ringp->s_ring_total_inpkt += cnt;
4692 ringp->s_ring_total_rbytes += sz;
4694 !(ringp->s_ring_type & ST_RING_WORKER_ONLY)) {
4696 if (ringp->s_ring_state & S_RING_BLANK ||
4697 ringp->s_ring_state & S_RING_PROC) {
4698 SOFT_RING_ENQUEUE_CHAIN(ringp, mp_chain, tail, cnt, sz);
4699 mutex_exit(&ringp->s_ring_lock);
4702 proc = ringp->s_ring_rx_func;
4703 arg1 = ringp->s_ring_rx_arg1;
4704 arg2 = ringp->s_ring_rx_arg2;
4710 if (ringp->s_ring_first == NULL) {
4714 ringp->s_ring_run = curthread;
4715 ringp->s_ring_state |= (S_RING_PROC);
4717 mutex_exit(&ringp->s_ring_lock);
4727 ASSERT(MUTEX_NOT_HELD(&ringp->s_ring_lock));
4742 mutex_enter(&ringp->s_ring_lock);
4743 ringp->s_ring_run = NULL;
4744 ringp->s_ring_state &= ~S_RING_PROC;
4745 if (ringp->s_ring_state & S_RING_CLIENT_WAIT)
4746 cv_signal(&ringp->s_ring_client_cv);
4748 if ((ringp->s_ring_first == NULL) ||
4749 (ringp->s_ring_state & S_RING_BLANK)) {
4756 mutex_exit(&ringp->s_ring_lock);
4760 SOFT_RING_ENQUEUE_CHAIN(ringp,
4771 ASSERT(MUTEX_HELD(&ringp->s_ring_lock));
4772 ASSERT(ringp->s_ring_first != NULL);
4774 ringp->s_ring_drain_func(ringp);
4775 mutex_exit(&ringp->s_ring_lock);
4779 SOFT_RING_ENQUEUE_CHAIN(ringp, mp_chain, tail, cnt, sz);
4780 mac_soft_ring_worker_wakeup(ringp);
4781 mutex_exit(&ringp->s_ring_lock);
4792 #define TX_SOFT_RING_ENQUEUE_CHAIN(ringp, mp, tail, cnt, sz) { \
4793 ASSERT(MUTEX_HELD(&ringp->s_ring_lock)); \
4794 ringp->s_ring_state |= S_RING_ENQUEUED; \
4795 SOFT_RING_ENQUEUE_CHAIN(ringp, mp_chain, tail, cnt, sz); \
4808 mac_tx_sring_enqueue(mac_soft_ring_t *ringp, mblk_t *mp_chain, uint16_t flag,
4814 mac_soft_ring_set_t *mac_srs = ringp->s_ring_set;
4818 ASSERT(MUTEX_HELD(&ringp->s_ring_lock));
4823 ringp->s_ring_drops += cnt;
4824 cookie = (mac_tx_cookie_t)ringp;
4826 if (ringp->s_ring_first != NULL)
4838 TX_SOFT_RING_ENQUEUE_CHAIN(ringp,
4841 ringp->s_ring_state |= S_RING_WAKEUP_CLIENT;
4842 cookie = (mac_tx_cookie_t)ringp;
4848 if (ringp->s_ring_count > ringp->s_ring_tx_hiwat) {
4850 * flow-controlled. Store ringp in cookie
4854 ringp->s_ring_state |= S_RING_TX_HIWAT;
4855 cookie = (mac_tx_cookie_t)ringp;
4856 ringp->s_ring_hiwat_cnt++;
4857 if (ringp->s_ring_count >
4858 ringp->s_ring_tx_max_q_cnt) {
4860 ringp->s_ring_drops += cnt;
4868 mac_soft_ring_t *, ringp);
4873 TX_SOFT_RING_ENQUEUE_CHAIN(ringp, mp_chain,
4878 cv_signal(&ringp->s_ring_async);
4892 mac_tx_soft_ring_process(mac_soft_ring_t *ringp, mblk_t *mp_chain,
4895 mac_soft_ring_set_t *mac_srs = ringp->s_ring_set;
4901 ASSERT(ringp != NULL);
4903 ASSERT(MUTEX_NOT_HELD(&ringp->s_ring_lock));
4914 if (ringp->s_ring_type & ST_RING_WORKER_ONLY) {
4917 mutex_enter(&ringp->s_ring_lock);
4918 if (ringp->s_ring_count > ringp->s_ring_tx_hiwat) {
4919 cookie = mac_tx_sring_enqueue(ringp, mp_chain,
4921 mutex_exit(&ringp->s_ring_lock);
4925 TX_SOFT_RING_ENQUEUE_CHAIN(ringp, mp_chain, tail, cnt, sz);
4926 if (ringp->s_ring_state & (S_RING_BLOCK | S_RING_PROC)) {
4933 mutex_exit(&ringp->s_ring_lock);
4936 mac_soft_ring_worker_wakeup(ringp);
4937 mutex_exit(&ringp->s_ring_lock);
4950 if (ringp->s_ring_state & S_RING_ENQUEUED) {
4952 mutex_enter(&ringp->s_ring_lock);
4953 if (ringp->s_ring_state & S_RING_ENQUEUED) {
4954 cookie = mac_tx_sring_enqueue(ringp, mp_chain,
4956 mutex_exit(&ringp->s_ring_lock);
4964 mutex_exit(&ringp->s_ring_lock);
4967 mp_chain = mac_tx_send(ringp->s_ring_tx_arg1,
4968 ringp->s_ring_tx_arg2, mp_chain, &stats);
4980 mutex_enter(&ringp->s_ring_lock);
4982 mac_tx_sring_enqueue(ringp, mp_chain, flag, ret_mp);
4983 mutex_exit(&ringp->s_ring_lock);
4987 SOFTRING_TX_STATS_UPDATE(ringp, &stats);