summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/io/dls/dls_mgmt.c32
1 files changed, 5 insertions, 27 deletions
diff --git a/usr/src/uts/common/io/dls/dls_mgmt.c b/usr/src/uts/common/io/dls/dls_mgmt.c
index 4473266242..9755aed43f 100644
--- a/usr/src/uts/common/io/dls/dls_mgmt.c
+++ b/usr/src/uts/common/io/dls/dls_mgmt.c
@@ -974,23 +974,13 @@ dls_devnet_hold_common(datalink_id_t linkid, dls_devnet_t **ddpp,
boolean_t tmp_hold)
{
dls_devnet_t *ddp;
- dev_t phydev = 0;
- dls_dev_handle_t ddh = NULL;
int err;
- /*
- * Hold this link to prevent it being detached in case of a
- * physical link.
- */
- if (dls_mgmt_get_phydev(linkid, &phydev) == 0)
- (void) softmac_hold_device(phydev, &ddh);
-
rw_enter(&i_dls_devnet_lock, RW_READER);
if ((err = mod_hash_find(i_dls_devnet_id_hash,
(mod_hash_key_t)(uintptr_t)linkid, (mod_hash_val_t *)&ddp)) != 0) {
ASSERT(err == MH_ERR_NOTFOUND);
rw_exit(&i_dls_devnet_lock);
- softmac_rele_device(ddh);
return (ENOENT);
}
@@ -999,7 +989,6 @@ dls_devnet_hold_common(datalink_id_t linkid, dls_devnet_t **ddpp,
if (ddp->dd_flags & DD_CONDEMNED) {
mutex_exit(&ddp->dd_mutex);
rw_exit(&i_dls_devnet_lock);
- softmac_rele_device(ddh);
return (ENOENT);
}
if (tmp_hold)
@@ -1009,8 +998,6 @@ dls_devnet_hold_common(datalink_id_t linkid, dls_devnet_t **ddpp,
mutex_exit(&ddp->dd_mutex);
rw_exit(&i_dls_devnet_lock);
- softmac_rele_device(ddh);
-
*ddpp = ddp;
return (0);
}
@@ -1033,7 +1020,7 @@ dls_devnet_hold_tmp(datalink_id_t linkid, dls_devnet_t **ddpp)
/*
* This funtion is called when a DLS client tries to open a device node.
- * This dev_t could a result of a /dev/net node access (returned by
+ * This dev_t could be a result of a /dev/net node access (returned by
* devnet_create_rvp->dls_devnet_open()) or a direct /dev node access.
* In both cases, this function bumps up the reference count of the
* dls_devnet_t structure. The reference is held as long as the device node
@@ -1049,7 +1036,6 @@ dls_devnet_hold_by_dev(dev_t dev, dls_dl_handle_t *ddhp)
{
char name[MAXNAMELEN];
char *drv;
- dls_dev_handle_t ddh = NULL;
dls_devnet_t *ddp;
int err;
@@ -1059,19 +1045,11 @@ dls_devnet_hold_by_dev(dev_t dev, dls_dl_handle_t *ddhp)
(void) snprintf(name, sizeof (name), "%s%d", drv,
DLS_MINOR2INST(getminor(dev)));
- /*
- * Hold this link to prevent it being detached in case of a
- * GLDv3 physical link.
- */
- if (DLS_MINOR2INST(getminor(dev)) <= DLS_MAX_PPA)
- (void) softmac_hold_device(dev, &ddh);
-
rw_enter(&i_dls_devnet_lock, RW_READER);
if ((err = mod_hash_find(i_dls_devnet_hash,
(mod_hash_key_t)name, (mod_hash_val_t *)&ddp)) != 0) {
ASSERT(err == MH_ERR_NOTFOUND);
rw_exit(&i_dls_devnet_lock);
- softmac_rele_device(ddh);
return (ENOENT);
}
mutex_enter(&ddp->dd_mutex);
@@ -1079,15 +1057,12 @@ dls_devnet_hold_by_dev(dev_t dev, dls_dl_handle_t *ddhp)
if (ddp->dd_flags & DD_CONDEMNED) {
mutex_exit(&ddp->dd_mutex);
rw_exit(&i_dls_devnet_lock);
- softmac_rele_device(ddh);
return (ENOENT);
}
ddp->dd_ref++;
mutex_exit(&ddp->dd_mutex);
rw_exit(&i_dls_devnet_lock);
- softmac_rele_device(ddh);
-
*ddhp = ddp;
return (0);
}
@@ -1132,6 +1107,10 @@ dls_devnet_hold_by_name(const char *link, dls_devnet_t **ddpp)
if (err != ENOENT)
return (err);
+ /*
+ * If we reach this point it means dlmgmtd is up but has no
+ * mapping for the link name.
+ */
if (ddi_parse(link, drv, &ppa) != DDI_SUCCESS)
return (ENOENT);
@@ -1143,7 +1122,6 @@ dls_devnet_hold_by_name(const char *link, dls_devnet_t **ddpp)
* resulted in a link being created.
*/
err = dls_devnet_hold(linkid, ddpp);
- ASSERT(err == 0);
if (err != 0) {
VERIFY(i_dls_devnet_destroy_iptun(linkid) == 0);
return (err);