Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/cxgbe/t4_main.c
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 1,469 Lines • ▼ Show 20 Lines | t4_detach_common(device_t dev) | ||||
sc = device_get_softc(dev); | sc = device_get_softc(dev); | ||||
if (sc->cdev) { | if (sc->cdev) { | ||||
destroy_dev(sc->cdev); | destroy_dev(sc->cdev); | ||||
sc->cdev = NULL; | sc->cdev = NULL; | ||||
} | } | ||||
sx_xlock(&t4_list_lock); | |||||
SLIST_REMOVE(&t4_list, sc, adapter, link); | |||||
sx_xunlock(&t4_list_lock); | |||||
sc->flags &= ~CHK_MBOX_ACCESS; | sc->flags &= ~CHK_MBOX_ACCESS; | ||||
if (sc->flags & FULL_INIT_DONE) { | if (sc->flags & FULL_INIT_DONE) { | ||||
if (!(sc->flags & IS_VF)) | if (!(sc->flags & IS_VF)) | ||||
t4_intr_disable(sc); | t4_intr_disable(sc); | ||||
} | } | ||||
if (device_is_attached(dev)) { | if (device_is_attached(dev)) { | ||||
rc = bus_generic_detach(dev); | rc = bus_generic_detach(dev); | ||||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | #endif | ||||
free(sc->sge.eqmap, M_CXGBE); | free(sc->sge.eqmap, M_CXGBE); | ||||
free(sc->tids.ftid_tab, M_CXGBE); | free(sc->tids.ftid_tab, M_CXGBE); | ||||
free(sc->tids.hpftid_tab, M_CXGBE); | free(sc->tids.hpftid_tab, M_CXGBE); | ||||
free_hftid_hash(&sc->tids); | free_hftid_hash(&sc->tids); | ||||
free(sc->tids.atid_tab, M_CXGBE); | free(sc->tids.atid_tab, M_CXGBE); | ||||
free(sc->tids.tid_tab, M_CXGBE); | free(sc->tids.tid_tab, M_CXGBE); | ||||
free(sc->tt.tls_rx_ports, M_CXGBE); | free(sc->tt.tls_rx_ports, M_CXGBE); | ||||
t4_destroy_dma_tag(sc); | t4_destroy_dma_tag(sc); | ||||
if (mtx_initialized(&sc->sc_lock)) { | |||||
sx_xlock(&t4_list_lock); | |||||
SLIST_REMOVE(&t4_list, sc, adapter, link); | |||||
sx_xunlock(&t4_list_lock); | |||||
mtx_destroy(&sc->sc_lock); | |||||
} | |||||
callout_drain(&sc->sfl_callout); | callout_drain(&sc->sfl_callout); | ||||
if (mtx_initialized(&sc->tids.ftid_lock)) { | if (mtx_initialized(&sc->tids.ftid_lock)) { | ||||
mtx_destroy(&sc->tids.ftid_lock); | mtx_destroy(&sc->tids.ftid_lock); | ||||
cv_destroy(&sc->tids.ftid_cv); | cv_destroy(&sc->tids.ftid_cv); | ||||
} | } | ||||
if (mtx_initialized(&sc->tids.atid_lock)) | if (mtx_initialized(&sc->tids.atid_lock)) | ||||
mtx_destroy(&sc->tids.atid_lock); | mtx_destroy(&sc->tids.atid_lock); | ||||
if (mtx_initialized(&sc->sfl_lock)) | |||||
mtx_destroy(&sc->sfl_lock); | |||||
if (mtx_initialized(&sc->ifp_lock)) | if (mtx_initialized(&sc->ifp_lock)) | ||||
mtx_destroy(&sc->ifp_lock); | mtx_destroy(&sc->ifp_lock); | ||||
if (mtx_initialized(&sc->reg_lock)) | |||||
mtx_destroy(&sc->reg_lock); | |||||
if (rw_initialized(&sc->policy_lock)) { | if (rw_initialized(&sc->policy_lock)) { | ||||
rw_destroy(&sc->policy_lock); | rw_destroy(&sc->policy_lock); | ||||
#ifdef TCP_OFFLOAD | #ifdef TCP_OFFLOAD | ||||
if (sc->policy != NULL) | if (sc->policy != NULL) | ||||
free_offload_policy(sc->policy); | free_offload_policy(sc->policy); | ||||
#endif | #endif | ||||
} | } | ||||
for (i = 0; i < NUM_MEMWIN; i++) { | for (i = 0; i < NUM_MEMWIN; i++) { | ||||
struct memwin *mw = &sc->memwin[i]; | struct memwin *mw = &sc->memwin[i]; | ||||
if (rw_initialized(&mw->mw_lock)) | if (rw_initialized(&mw->mw_lock)) | ||||
rw_destroy(&mw->mw_lock); | rw_destroy(&mw->mw_lock); | ||||
} | } | ||||
mtx_destroy(&sc->sfl_lock); | |||||
mtx_destroy(&sc->reg_lock); | |||||
mtx_destroy(&sc->sc_lock); | |||||
bzero(sc, sizeof(*sc)); | bzero(sc, sizeof(*sc)); | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
cxgbe_probe(device_t dev) | cxgbe_probe(device_t dev) | ||||
▲ Show 20 Lines • Show All 9,258 Lines • Show Last 20 Lines |