622 (srs)->srs_bw->mac_bw_sz -= (sz); \
623 (srs)->srs_bw->mac_bw_used += (sz); \
624 }
625
626 #define MAC_TX_SOFT_RINGS(mac_srs) ((mac_srs)->srs_tx_ring_count >= 1)
627
628 /* Soft ring flags for teardown */
629 #define SRS_POLL_THR_OWNER (SRS_PROC | SRS_POLLING | SRS_GET_PKTS)
630 #define SRS_PAUSE (SRS_CONDEMNED | SRS_QUIESCE)
631 #define S_RING_PAUSE (S_RING_CONDEMNED | S_RING_QUIESCE)
632
633 /* Soft rings */
634 extern void mac_soft_ring_init(void);
635 extern void mac_soft_ring_finish(void);
636 extern void mac_fanout_setup(mac_client_impl_t *, flow_entry_t *,
637 mac_resource_props_t *, mac_direct_rx_t, void *, mac_resource_handle_t,
638 cpupart_t *);
639
640 extern void mac_soft_ring_worker_wakeup(mac_soft_ring_t *);
641 extern void mac_soft_ring_blank(void *, time_t, uint_t, int);
642 extern mblk_t *mac_soft_ring_poll(mac_soft_ring_t *, int);
643 extern void mac_soft_ring_destroy(mac_soft_ring_t *);
644 extern void mac_soft_ring_dls_bypass(void *, mac_direct_rx_t, void *);
645
646 /* Rx SRS */
647 extern mac_soft_ring_set_t *mac_srs_create(struct mac_client_impl_s *,
648 flow_entry_t *, uint32_t, mac_direct_rx_t, void *, mac_resource_handle_t,
649 mac_ring_t *);
650 extern void mac_srs_free(mac_soft_ring_set_t *);
651 extern void mac_srs_signal(mac_soft_ring_set_t *, uint_t);
652 extern cpu_t *mac_srs_bind(mac_soft_ring_set_t *, processorid_t);
653 extern void mac_rx_srs_retarget_intr(mac_soft_ring_set_t *, processorid_t);
654 extern void mac_tx_srs_retarget_intr(mac_soft_ring_set_t *);
655
656 extern void mac_srs_quiesce_initiate(mac_soft_ring_set_t *);
657 extern void mac_srs_client_poll_enable(struct mac_client_impl_s *,
658 mac_soft_ring_set_t *);
659 extern void mac_srs_client_poll_disable(struct mac_client_impl_s *,
660 mac_soft_ring_set_t *);
661 extern void mac_srs_client_poll_quiesce(struct mac_client_impl_s *,
662 mac_soft_ring_set_t *);
|
622 (srs)->srs_bw->mac_bw_sz -= (sz); \
623 (srs)->srs_bw->mac_bw_used += (sz); \
624 }
625
626 #define MAC_TX_SOFT_RINGS(mac_srs) ((mac_srs)->srs_tx_ring_count >= 1)
627
628 /* Soft ring flags for teardown */
629 #define SRS_POLL_THR_OWNER (SRS_PROC | SRS_POLLING | SRS_GET_PKTS)
630 #define SRS_PAUSE (SRS_CONDEMNED | SRS_QUIESCE)
631 #define S_RING_PAUSE (S_RING_CONDEMNED | S_RING_QUIESCE)
632
633 /* Soft rings */
634 extern void mac_soft_ring_init(void);
635 extern void mac_soft_ring_finish(void);
636 extern void mac_fanout_setup(mac_client_impl_t *, flow_entry_t *,
637 mac_resource_props_t *, mac_direct_rx_t, void *, mac_resource_handle_t,
638 cpupart_t *);
639
640 extern void mac_soft_ring_worker_wakeup(mac_soft_ring_t *);
641 extern void mac_soft_ring_blank(void *, time_t, uint_t, int);
642 extern mblk_t *mac_soft_ring_poll(mac_soft_ring_t *, size_t);
643 extern void mac_soft_ring_destroy(mac_soft_ring_t *);
644 extern void mac_soft_ring_dls_bypass(void *, mac_direct_rx_t, void *);
645
646 /* Rx SRS */
647 extern mac_soft_ring_set_t *mac_srs_create(struct mac_client_impl_s *,
648 flow_entry_t *, uint32_t, mac_direct_rx_t, void *, mac_resource_handle_t,
649 mac_ring_t *);
650 extern void mac_srs_free(mac_soft_ring_set_t *);
651 extern void mac_srs_signal(mac_soft_ring_set_t *, uint_t);
652 extern cpu_t *mac_srs_bind(mac_soft_ring_set_t *, processorid_t);
653 extern void mac_rx_srs_retarget_intr(mac_soft_ring_set_t *, processorid_t);
654 extern void mac_tx_srs_retarget_intr(mac_soft_ring_set_t *);
655
656 extern void mac_srs_quiesce_initiate(mac_soft_ring_set_t *);
657 extern void mac_srs_client_poll_enable(struct mac_client_impl_s *,
658 mac_soft_ring_set_t *);
659 extern void mac_srs_client_poll_disable(struct mac_client_impl_s *,
660 mac_soft_ring_set_t *);
661 extern void mac_srs_client_poll_quiesce(struct mac_client_impl_s *,
662 mac_soft_ring_set_t *);
|