summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSowmini Varadhan <Sowmini.Varadhan@Sun.COM>2009-07-28 12:45:46 -0400
committerSowmini Varadhan <Sowmini.Varadhan@Sun.COM>2009-07-28 12:45:46 -0400
commit0b8f054691a3974b7c86dd2700ecbf6108a2d55e (patch)
tree9971ce74b88348725505d0ef60ae040eb027ad3c
parent96f82fef09bdebba70a409640c49772b1cdf1a2a (diff)
downloadillumos-joyent-0b8f054691a3974b7c86dd2700ecbf6108a2d55e.tar.gz
6691666 link property persistence for wifi drivers
6851294 dladm reset-linkprop whines about read-only properties 6856864 auto-negotiation default values should not be hard-coded in libdladm
-rw-r--r--usr/src/cmd/cmd-inet/lib/nwamd/interface.c2
-rw-r--r--usr/src/cmd/dladm/dladm.c4
-rw-r--r--usr/src/cmd/dlmgmtd/dlmgmt_door.c5
-rw-r--r--usr/src/cmd/svc/milestone/net-physical11
-rw-r--r--usr/src/lib/libdladm/common/linkprop.c109
-rw-r--r--usr/src/uts/common/io/ipw/ipw2100.c1
-rw-r--r--usr/src/uts/common/io/iwi/ipw2200.c3
7 files changed, 7 insertions, 128 deletions
diff --git a/usr/src/cmd/cmd-inet/lib/nwamd/interface.c b/usr/src/cmd/cmd-inet/lib/nwamd/interface.c
index e4e57156d7..8a12f27848 100644
--- a/usr/src/cmd/cmd-inet/lib/nwamd/interface.c
+++ b/usr/src/cmd/cmd-inet/lib/nwamd/interface.c
@@ -1108,8 +1108,6 @@ initialize_interfaces(void)
wait_time = NWAM_IF_WAIT_DELTA_MAX;
}
- (void) dladm_init_linkprop(dld_handle, DATALINK_ALL_LINKID, B_FALSE);
-
(void) icfg_iterate_if(AF_INET, ICFG_PLUMBED, NULL, do_add_interface);
print_interface_list();
diff --git a/usr/src/cmd/dladm/dladm.c b/usr/src/cmd/dladm/dladm.c
index e69aeb8315..c20685154b 100644
--- a/usr/src/cmd/dladm/dladm.c
+++ b/usr/src/cmd/dladm/dladm.c
@@ -5878,7 +5878,9 @@ reset_one_linkprop(dladm_handle_t dh, datalink_id_t linkid,
status = dladm_set_linkprop(dh, linkid, propname, NULL, 0,
DLADM_OPT_ACTIVE);
- if (status != DLADM_STATUS_OK) {
+ if (status != DLADM_STATUS_OK &&
+ status != DLADM_STATUS_PROPRDONLY &&
+ status != DLADM_STATUS_NOTSUP) {
warn_dlerr(status, "cannot reset link property '%s' on '%s'",
propname, statep->ls_name);
}
diff --git a/usr/src/cmd/dlmgmtd/dlmgmt_door.c b/usr/src/cmd/dlmgmtd/dlmgmt_door.c
index 68bfa82719..e73f4841b6 100644
--- a/usr/src/cmd/dlmgmtd/dlmgmt_door.c
+++ b/usr/src/cmd/dlmgmtd/dlmgmt_door.c
@@ -945,7 +945,6 @@ dlmgmt_upcall_linkprop_init(void *argp, void *retp)
{
dlmgmt_door_linkprop_init_t *lip = argp;
dlmgmt_linkprop_init_retval_t *retvalp = retp;
- dlmgmt_link_t *linkp;
boolean_t do_linkprop = B_FALSE;
/*
@@ -955,10 +954,8 @@ dlmgmt_upcall_linkprop_init(void *argp, void *retp)
* not the DLD control device.
*/
dlmgmt_table_lock(B_FALSE);
- if ((linkp = link_by_id(lip->ld_linkid)) == NULL)
+ if (link_by_id(lip->ld_linkid) == NULL)
retvalp->lr_err = ENOENT;
- else if (linkp->ll_media == DL_WIFI)
- retvalp->lr_err = 0;
else
do_linkprop = B_TRUE;
dlmgmt_table_unlock();
diff --git a/usr/src/cmd/svc/milestone/net-physical b/usr/src/cmd/svc/milestone/net-physical
index 1248517740..15b91edc9d 100644
--- a/usr/src/cmd/svc/milestone/net-physical
+++ b/usr/src/cmd/svc/milestone/net-physical
@@ -245,17 +245,6 @@ if [ -n "$ipmp6_list" ]; then
"$ipmp6_failed"
fi
-if smf_is_globalzone; then
- #
- # Wifi drivers use special property interfaces that are not supported
- # by the existing property persistence mechanism, so if a wifi driver
- # unloads and then is subsequently reloaded, associated links' properties
- # will not be restored. For now, wait until after interfaces have been
- # plumbed (above) to initialize link properties.
- #
- /sbin/dladm init-linkprop -w
-fi
-
#
# Process the /etc/hostname[6].* files for IPMP interfaces. Processing these
# before non-IPMP interfaces avoids accidental implicit IPMP group creation.
diff --git a/usr/src/lib/libdladm/common/linkprop.c b/usr/src/lib/libdladm/common/linkprop.c
index 301672225e..044b963e45 100644
--- a/usr/src/lib/libdladm/common/linkprop.c
+++ b/usr/src/lib/libdladm/common/linkprop.c
@@ -145,10 +145,6 @@ static pd_checkf_t do_check_zone, do_check_autopush, do_check_rate,
static dladm_status_t i_dladm_speed_get(dladm_handle_t, prop_desc_t *,
datalink_id_t, char **, uint_t *, uint_t, uint_t *);
-static dladm_status_t i_dladm_wlan_get_legacy_ioctl(dladm_handle_t,
- datalink_id_t, void *, uint_t, uint_t);
-static dladm_status_t i_dladm_wlan_set_legacy_ioctl(dladm_handle_t,
- datalink_id_t, void *, uint_t, uint_t);
static dladm_status_t i_dladm_macprop(dladm_handle_t, void *, boolean_t);
static const char *dladm_perm2str(uint_t, char *);
@@ -415,7 +411,7 @@ static prop_desc_t prop_table[] = {
NULL, NULL, i_dladm_status_get, NULL,
0, DATALINK_CLASS_ALL, DATALINK_ANY_MEDIATYPE },
- { "adv_autoneg_cap", { "1", 1 },
+ { "adv_autoneg_cap", { "", 0 },
link_01_vals, VALCNT(link_01_vals),
i_dladm_set_public_prop, NULL, i_dladm_binary_get, NULL,
0, DATALINK_CLASS_PHYS, DL_ETHER },
@@ -2856,59 +2852,6 @@ i_dladm_getset_defval(dladm_handle_t handle, prop_desc_t *pdp,
return (status);
}
-int
-macprop_to_wifi(mac_prop_id_t wl_prop)
-{
- switch (wl_prop) {
- case MAC_PROP_WL_ESSID:
- return (WL_ESSID);
- case MAC_PROP_WL_BSSID:
- return (WL_BSSID);
- case MAC_PROP_WL_BSSTYPE:
- return (WL_BSS_TYPE);
- case MAC_PROP_WL_LINKSTATUS:
- return (WL_LINKSTATUS);
- case MAC_PROP_WL_DESIRED_RATES:
- return (WL_DESIRED_RATES);
- case MAC_PROP_WL_SUPPORTED_RATES:
- return (WL_SUPPORTED_RATES);
- case MAC_PROP_WL_AUTH_MODE:
- return (WL_AUTH_MODE);
- case MAC_PROP_WL_ENCRYPTION:
- return (WL_ENCRYPTION);
- case MAC_PROP_WL_RSSI:
- return (WL_RSSI);
- case MAC_PROP_WL_PHY_CONFIG:
- return (WL_PHY_CONFIG);
- case MAC_PROP_WL_CAPABILITY:
- return (WL_CAPABILITY);
- case MAC_PROP_WL_WPA:
- return (WL_WPA);
- case MAC_PROP_WL_SCANRESULTS:
- return (WL_SCANRESULTS);
- case MAC_PROP_WL_POWER_MODE:
- return (WL_POWER_MODE);
- case MAC_PROP_WL_RADIO:
- return (WL_RADIO);
- case MAC_PROP_WL_ESS_LIST:
- return (WL_ESS_LIST);
- case MAC_PROP_WL_KEY_TAB:
- return (WL_WEP_KEY_TAB);
- case MAC_PROP_WL_CREATE_IBSS:
- return (WL_CREATE_IBSS);
- case MAC_PROP_WL_SETOPTIE:
- return (WL_SETOPTIE);
- case MAC_PROP_WL_DELKEY:
- return (WL_DELKEY);
- case MAC_PROP_WL_KEY:
- return (WL_KEY);
- case MAC_PROP_WL_MLME:
- return (WL_MLME);
- default:
- return (-1);
- }
-}
-
dladm_status_t
i_dladm_wlan_param(dladm_handle_t handle, datalink_id_t linkid, void *buf,
mac_prop_id_t cmd, size_t len, boolean_t set)
@@ -2942,15 +2885,7 @@ i_dladm_wlan_param(dladm_handle_t handle, datalink_id_t linkid, void *buf,
(void) memcpy(dp, buf, len);
status = i_dladm_macprop(handle, dip, set);
- if (status == DLADM_STATUS_NOTSUP) {
- if (set) {
- status = i_dladm_wlan_set_legacy_ioctl(handle, linkid,
- buf, len, macprop_to_wifi(cmd));
- } else {
- status = i_dladm_wlan_get_legacy_ioctl(handle, linkid,
- buf, len, macprop_to_wifi(cmd));
- }
- } else if (status == DLADM_STATUS_OK) {
+ if (status == DLADM_STATUS_OK) {
if (!set)
(void) memcpy(buf, dp, len);
}
@@ -2959,46 +2894,6 @@ i_dladm_wlan_param(dladm_handle_t handle, datalink_id_t linkid, void *buf,
return (status);
}
-static dladm_status_t
-i_dladm_wlan_get_legacy_ioctl(dladm_handle_t handle, datalink_id_t linkid,
- void *buf, uint_t buflen, uint_t id)
-{
- wldp_t *gbuf;
- dladm_status_t status;
-
- if ((gbuf = malloc(MAX_BUF_LEN)) == NULL)
- return (DLADM_STATUS_NOMEM);
-
- (void) memset(gbuf, 0, MAX_BUF_LEN);
- status = i_dladm_wlan_legacy_ioctl(handle, linkid, gbuf, id,
- MAX_BUF_LEN, WLAN_GET_PARAM, sizeof (wldp_t));
- if (status == DLADM_STATUS_OK)
- (void) memcpy(buf, gbuf->wldp_buf, buflen);
-
- free(gbuf);
- return (status);
-}
-
-static dladm_status_t
-i_dladm_wlan_set_legacy_ioctl(dladm_handle_t handle, datalink_id_t linkid,
- void *buf, uint_t buflen, uint_t id)
-{
- wldp_t *gbuf;
- dladm_status_t status = DLADM_STATUS_OK;
-
- if ((gbuf = malloc(MAX_BUF_LEN)) == NULL)
- return (DLADM_STATUS_NOMEM);
-
- (void) memset(gbuf, 0, MAX_BUF_LEN);
- (void) memcpy(gbuf->wldp_buf, buf, buflen);
- buflen += WIFI_BUF_OFFSET;
- status = i_dladm_wlan_legacy_ioctl(handle, linkid, gbuf, id, buflen,
- WLAN_SET_PARAM, buflen);
-
- free(gbuf);
- return (status);
-}
-
dladm_status_t
dladm_parse_link_props(char *str, dladm_arg_list_t **listp, boolean_t novalues)
{
diff --git a/usr/src/uts/common/io/ipw/ipw2100.c b/usr/src/uts/common/io/ipw/ipw2100.c
index e882cae4b1..4e22a3b195 100644
--- a/usr/src/uts/common/io/ipw/ipw2100.c
+++ b/usr/src/uts/common/io/ipw/ipw2100.c
@@ -2480,7 +2480,6 @@ ipw2100_m_getprop(void *arg, const char *pr_name, mac_prop_id_t wldp_pr_num,
case MAC_PROP_WL_DESIRED_RATES:
IPW2100_DBG(IPW2100_DBG_BRUSSELS, (sc->sc_dip, CE_CONT,
"ipw2100_m_getprop(): Not Support DESIRED_RATES\n"));
- err = ENOTSUP;
break;
case MAC_PROP_WL_RADIO:
*(wl_linkstatus_t *)wldp_buf = ipw2100_get_radio(sc);
diff --git a/usr/src/uts/common/io/iwi/ipw2200.c b/usr/src/uts/common/io/iwi/ipw2200.c
index c9ba4df395..505a946a07 100644
--- a/usr/src/uts/common/io/iwi/ipw2200.c
+++ b/usr/src/uts/common/io/iwi/ipw2200.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -2569,7 +2569,6 @@ ipw2200_m_getprop(void *arg, const char *pr_name, mac_prop_id_t wldp_pr_num,
case MAC_PROP_WL_DESIRED_RATES:
IPW2200_DBG(IPW2200_DBG_BRUSSELS, (sc->sc_dip, CE_CONT,
"ipw2200_m_getprop(): Not Support DESIRED_RATES\n"));
- err = ENOTSUP;
break;
case MAC_PROP_WL_RADIO:
*(wl_linkstatus_t *)wldp_buf = ipw2200_radio_status(sc);