756 fcoei_event_t *ae;
757 fcoe_frame_t *frm;
758
759 mutex_enter(&ss->ss_watchdog_mutex);
760 while (!list_is_empty(&ss->ss_event_list)) {
761 ae = (fcoei_event_t *)list_head(&ss->ss_event_list);
762 list_remove(&ss->ss_event_list, ae);
763 switch (ae->ae_type) {
764 case AE_EVENT_SOL_FRAME:
765 frm = (fcoe_frame_t *)ae->ae_obj;
766 frm->frm_eport->eport_release_frame(frm);
767 break;
768
769 case AE_EVENT_UNSOL_FRAME:
770 frm = (fcoe_frame_t *)ae->ae_obj;
771 frm->frm_eport->eport_free_netb(frm->frm_netb);
772 frm->frm_eport->eport_release_frame(frm);
773 break;
774
775 case AE_EVENT_PORT:
776 atomic_add_32(&ss->ss_port_event_counter, -1);
777 /* FALLTHROUGH */
778
779 case AE_EVENT_RESET:
780 kmem_free(ae, sizeof (fcoei_event_t));
781 break;
782
783 case AE_EVENT_EXCHANGE:
784 /* FALLTHROUGH */
785
786 default:
787 break;
788 }
789 }
790
791 mod_hash_clear(ss->ss_unsol_rxid_hash);
792 mod_hash_clear(ss->ss_sol_oxid_hash);
793
794 while (!list_is_empty(&ss->ss_comp_xch_list)) {
795 (void) list_remove_head(&ss->ss_comp_xch_list);
796 }
|
756 fcoei_event_t *ae;
757 fcoe_frame_t *frm;
758
759 mutex_enter(&ss->ss_watchdog_mutex);
760 while (!list_is_empty(&ss->ss_event_list)) {
761 ae = (fcoei_event_t *)list_head(&ss->ss_event_list);
762 list_remove(&ss->ss_event_list, ae);
763 switch (ae->ae_type) {
764 case AE_EVENT_SOL_FRAME:
765 frm = (fcoe_frame_t *)ae->ae_obj;
766 frm->frm_eport->eport_release_frame(frm);
767 break;
768
769 case AE_EVENT_UNSOL_FRAME:
770 frm = (fcoe_frame_t *)ae->ae_obj;
771 frm->frm_eport->eport_free_netb(frm->frm_netb);
772 frm->frm_eport->eport_release_frame(frm);
773 break;
774
775 case AE_EVENT_PORT:
776 atomic_dec_32(&ss->ss_port_event_counter);
777 /* FALLTHROUGH */
778
779 case AE_EVENT_RESET:
780 kmem_free(ae, sizeof (fcoei_event_t));
781 break;
782
783 case AE_EVENT_EXCHANGE:
784 /* FALLTHROUGH */
785
786 default:
787 break;
788 }
789 }
790
791 mod_hash_clear(ss->ss_unsol_rxid_hash);
792 mod_hash_clear(ss->ss_sol_oxid_hash);
793
794 while (!list_is_empty(&ss->ss_comp_xch_list)) {
795 (void) list_remove_head(&ss->ss_comp_xch_list);
796 }
|