2022 mutex_exit(&xnbp->xnb_tx_lock);
2023
2024 mutex_enter(&xnbp->xnb_state_lock);
2025 xnbp->xnb_be_status = XNB_STATE_READY;
2026 if (xnbp->xnb_fe_status == XNB_STATE_READY)
2027 xnb_start_connect(xnbp);
2028 mutex_exit(&xnbp->xnb_state_lock);
2029
2030 break;
2031
2032 default:
2033 break;
2034 }
2035 }
2036
2037 static struct modldrv modldrv = {
2038 &mod_miscops, "xnb",
2039 };
2040
2041 static struct modlinkage modlinkage = {
2042 MODREV_1, &modldrv, NULL
2043 };
2044
2045 int
2046 _init(void)
2047 {
2048 int i;
2049
2050 mutex_init(&xnb_alloc_page_lock, NULL, MUTEX_DRIVER, NULL);
2051
2052 i = mod_install(&modlinkage);
2053 if (i != DDI_SUCCESS)
2054 mutex_destroy(&xnb_alloc_page_lock);
2055
2056 return (i);
2057 }
2058
2059 int
2060 _info(struct modinfo *modinfop)
2061 {
2062 return (mod_info(&modlinkage, modinfop));
|
2022 mutex_exit(&xnbp->xnb_tx_lock);
2023
2024 mutex_enter(&xnbp->xnb_state_lock);
2025 xnbp->xnb_be_status = XNB_STATE_READY;
2026 if (xnbp->xnb_fe_status == XNB_STATE_READY)
2027 xnb_start_connect(xnbp);
2028 mutex_exit(&xnbp->xnb_state_lock);
2029
2030 break;
2031
2032 default:
2033 break;
2034 }
2035 }
2036
2037 static struct modldrv modldrv = {
2038 &mod_miscops, "xnb",
2039 };
2040
2041 static struct modlinkage modlinkage = {
2042 MODREV_1, { &modldrv, NULL }
2043 };
2044
2045 int
2046 _init(void)
2047 {
2048 int i;
2049
2050 mutex_init(&xnb_alloc_page_lock, NULL, MUTEX_DRIVER, NULL);
2051
2052 i = mod_install(&modlinkage);
2053 if (i != DDI_SUCCESS)
2054 mutex_destroy(&xnb_alloc_page_lock);
2055
2056 return (i);
2057 }
2058
2059 int
2060 _info(struct modinfo *modinfop)
2061 {
2062 return (mod_info(&modlinkage, modinfop));
|