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 *);
  
 |