diff options
| author | Sowmini Varadhan <Sowmini.Varadhan@Sun.COM> | 2009-07-28 12:45:46 -0400 |
|---|---|---|
| committer | Sowmini Varadhan <Sowmini.Varadhan@Sun.COM> | 2009-07-28 12:45:46 -0400 |
| commit | 0b8f054691a3974b7c86dd2700ecbf6108a2d55e (patch) | |
| tree | 9971ce74b88348725505d0ef60ae040eb027ad3c | |
| parent | 96f82fef09bdebba70a409640c49772b1cdf1a2a (diff) | |
| download | illumos-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.c | 2 | ||||
| -rw-r--r-- | usr/src/cmd/dladm/dladm.c | 4 | ||||
| -rw-r--r-- | usr/src/cmd/dlmgmtd/dlmgmt_door.c | 5 | ||||
| -rw-r--r-- | usr/src/cmd/svc/milestone/net-physical | 11 | ||||
| -rw-r--r-- | usr/src/lib/libdladm/common/linkprop.c | 109 | ||||
| -rw-r--r-- | usr/src/uts/common/io/ipw/ipw2100.c | 1 | ||||
| -rw-r--r-- | usr/src/uts/common/io/iwi/ipw2200.c | 3 |
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); |
