Lines Matching refs:usbdev

407 	struct usbnet *usbdev;
824 static int rndis_reset(struct usbnet *usbdev)
826 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
837 ret = rndis_command(usbdev, (void *)reset, CONTROL_BUFFER_SIZE);
948 static int set_infra_mode(struct usbnet *usbdev, int mode);
949 static void restore_keys(struct usbnet *usbdev);
950 static int rndis_check_bssid_list(struct usbnet *usbdev, u8 *match_bssid,
953 static int rndis_start_bssid_list_scan(struct usbnet *usbdev)
959 return rndis_set_oid(usbdev, RNDIS_OID_802_11_BSSID_LIST_SCAN, &tmp,
963 static int set_essid(struct usbnet *usbdev, struct ndis_80211_ssid *ssid)
965 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
968 ret = rndis_set_oid(usbdev, RNDIS_OID_802_11_SSID,
971 netdev_warn(usbdev->net, "setting SSID failed (%08X)\n", ret);
976 netdev_dbg(usbdev->net, "%s(): radio_on = true\n", __func__);
982 static int set_bssid(struct usbnet *usbdev, const u8 *bssid)
986 ret = rndis_set_oid(usbdev, RNDIS_OID_802_11_BSSID,
989 netdev_warn(usbdev->net, "setting BSSID[%pM] failed (%08X)\n",
997 static int clear_bssid(struct usbnet *usbdev)
1003 return set_bssid(usbdev, broadcast_mac);
1006 static int get_bssid(struct usbnet *usbdev, u8 bssid[ETH_ALEN])
1011 ret = rndis_query_oid(usbdev, RNDIS_OID_802_11_BSSID,
1020 static int get_association_info(struct usbnet *usbdev,
1023 return rndis_query_oid(usbdev,
1028 static bool is_associated(struct usbnet *usbdev)
1030 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1037 ret = get_bssid(usbdev, bssid);
1042 static int disassociate(struct usbnet *usbdev, bool reset_ssid)
1044 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1049 ret = rndis_set_oid(usbdev,
1054 netdev_dbg(usbdev->net, "%s(): radio_on = false\n",
1068 set_infra_mode(usbdev, NDIS_80211_INFRA_INFRA);
1076 ret = set_essid(usbdev, &ssid);
1081 static int set_auth_mode(struct usbnet *usbdev, u32 wpa_version,
1084 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1088 netdev_dbg(usbdev->net, "%s(): wpa_version=0x%x authalg=0x%x keymgmt=0x%x\n",
1113 ret = rndis_set_oid(usbdev,
1117 netdev_warn(usbdev->net, "setting auth mode failed (%08X)\n",
1127 static int set_priv_filter(struct usbnet *usbdev)
1129 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1132 netdev_dbg(usbdev->net, "%s(): wpa_version=0x%x\n",
1141 return rndis_set_oid(usbdev,
1146 static int set_encr_mode(struct usbnet *usbdev, int pairwise, int groupwise)
1151 netdev_dbg(usbdev->net, "%s(): cipher_pair=0x%x cipher_group=0x%x\n",
1168 ret = rndis_set_oid(usbdev,
1172 netdev_warn(usbdev->net, "setting encr mode failed (%08X)\n",
1180 static int set_infra_mode(struct usbnet *usbdev, int mode)
1182 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1186 netdev_dbg(usbdev->net, "%s(): infra_mode=0x%x\n",
1190 ret = rndis_set_oid(usbdev,
1194 netdev_warn(usbdev->net, "setting infra mode failed (%08X)\n",
1202 restore_keys(usbdev);
1208 static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold)
1212 netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
1218 return rndis_set_oid(usbdev,
1223 static int set_frag_threshold(struct usbnet *usbdev, u32 frag_threshold)
1227 netdev_dbg(usbdev->net, "%s(): %i\n", __func__, frag_threshold);
1233 return rndis_set_oid(usbdev,
1238 static void set_default_iw_params(struct usbnet *usbdev)
1240 set_infra_mode(usbdev, NDIS_80211_INFRA_INFRA);
1241 set_auth_mode(usbdev, 0, NL80211_AUTHTYPE_OPEN_SYSTEM,
1243 set_priv_filter(usbdev);
1244 set_encr_mode(usbdev, RNDIS_WLAN_ALG_NONE, RNDIS_WLAN_ALG_NONE);
1247 static int deauthenticate(struct usbnet *usbdev)
1251 ret = disassociate(usbdev, true);
1252 set_default_iw_params(usbdev);
1256 static int set_channel(struct usbnet *usbdev, int channel)
1262 netdev_dbg(usbdev->net, "%s(%d)\n", __func__, channel);
1265 if (is_associated(usbdev))
1272 ret = rndis_query_oid(usbdev,
1276 netdev_dbg(usbdev->net, "%s(): querying configuration failed\n",
1282 ret = rndis_set_oid(usbdev,
1286 netdev_dbg(usbdev->net, "%s(): %d -> %d\n", __func__, channel, ret);
1291 static struct ieee80211_channel *get_current_channel(struct usbnet *usbdev,
1294 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1301 ret = rndis_query_oid(usbdev,
1304 netdev_dbg(usbdev->net, "%s(): RNDIS_OID_802_11_CONFIGURATION -> %d\n",
1320 static int add_wep_key(struct usbnet *usbdev, const u8 *key, int key_len,
1323 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1328 netdev_dbg(usbdev->net, "%s(idx: %d, len: %d)\n",
1350 ret = set_encr_mode(usbdev, RNDIS_WLAN_ALG_WEP,
1353 netdev_warn(usbdev->net, "encryption couldn't be enabled (%08X)\n",
1357 ret = rndis_set_oid(usbdev,
1361 netdev_warn(usbdev->net, "adding encryption key %d failed (%08X)\n",
1374 static int add_wpa_key(struct usbnet *usbdev, const u8 *key, int key_len,
1378 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1384 netdev_dbg(usbdev->net, "%s(): index out of range (%i)\n",
1389 netdev_dbg(usbdev->net, "%s(): key length out of range (%i)\n",
1395 netdev_dbg(usbdev->net, "%s(): recv seq flag without buffer\n",
1400 netdev_dbg(usbdev->net, "%s(): too big recv seq buffer\n", __func__);
1408 netdev_dbg(usbdev->net, "%s(): pairwise but bssid invalid (%pM)\n",
1413 netdev_dbg(usbdev->net, "%s(%i): flags:%i%i%i\n",
1446 get_bssid(usbdev, ndis_key.bssid);
1449 ret = rndis_set_oid(usbdev,
1452 netdev_dbg(usbdev->net, "%s(): RNDIS_OID_802_11_ADD_KEY -> %08X\n",
1472 static int restore_key(struct usbnet *usbdev, u8 key_idx)
1474 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1482 netdev_dbg(usbdev->net, "%s(): %i:%i\n", __func__, key_idx, key.len);
1487 return add_wep_key(usbdev, key.material, key.len, key_idx);
1490 static void restore_keys(struct usbnet *usbdev)
1495 restore_key(usbdev, i);
1504 static int remove_key(struct usbnet *usbdev, u8 index, const u8 *bssid)
1506 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1520 netdev_dbg(usbdev->net, "%s(): %i:%s:%i\n",
1540 ret = rndis_set_oid(usbdev,
1547 ret = rndis_set_oid(usbdev,
1551 netdev_warn(usbdev->net,
1560 set_encr_mode(usbdev, RNDIS_WLAN_ALG_NONE, RNDIS_WLAN_ALG_NONE);
1565 static void set_multicast_list(struct usbnet *usbdev)
1567 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1577 if (usbdev->net->flags & IFF_PROMISC) {
1580 } else if (usbdev->net->flags & IFF_ALLMULTI) {
1591 netif_addr_lock_bh(usbdev->net);
1592 mc_count = netdev_mc_count(usbdev->net);
1600 netif_addr_unlock_bh(usbdev->net);
1604 netdev_for_each_mc_addr(ha, usbdev->net)
1608 netif_addr_unlock_bh(usbdev->net);
1614 ret = rndis_set_oid(usbdev,
1623 netdev_dbg(usbdev->net, "RNDIS_OID_802_3_MULTICAST_LIST(%d, max: %d) -> %d\n",
1628 ret = rndis_set_oid(usbdev, RNDIS_OID_GEN_CURRENT_PACKET_FILTER, &filter,
1631 netdev_warn(usbdev->net, "couldn't set packet filter: %08x\n",
1635 netdev_dbg(usbdev->net, "RNDIS_OID_GEN_CURRENT_PACKET_FILTER(%08x) -> %d\n",
1640 static void debug_print_pmkids(struct usbnet *usbdev,
1644 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1653 netdev_dbg(usbdev->net, "%s(): %d PMKIDs (data len: %d, entry len: "
1662 netdev_dbg(usbdev->net, "%s(): bssid: %pM, "
1670 static void debug_print_pmkids(struct usbnet *usbdev,
1678 static struct ndis_80211_pmkid *get_device_pmkids(struct usbnet *usbdev)
1680 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1694 ret = rndis_query_oid(usbdev, RNDIS_OID_802_11_PMKID,
1697 netdev_dbg(usbdev->net, "%s(): RNDIS_OID_802_11_PMKID(%d, %d)"
1707 debug_print_pmkids(usbdev, pmkids, __func__);
1712 static int set_device_pmkids(struct usbnet *usbdev,
1721 debug_print_pmkids(usbdev, pmkids, __func__);
1723 ret = rndis_set_oid(usbdev, RNDIS_OID_802_11_PMKID, pmkids,
1726 netdev_dbg(usbdev->net, "%s(): RNDIS_OID_802_11_PMKID(%d, %d) -> %d"
1734 static struct ndis_80211_pmkid *remove_pmkid(struct usbnet *usbdev,
1754 netdev_dbg(usbdev->net, "%s(): bssid not found (%pM)\n",
1773 static struct ndis_80211_pmkid *update_pmkid(struct usbnet *usbdev,
1801 netdev_dbg(usbdev->net, "%s(): out of space\n", __func__);
1837 struct usbnet *usbdev = priv->usbdev;
1853 return set_infra_mode(usbdev, mode);
1859 struct usbnet *usbdev = priv->usbdev;
1863 err = set_frag_threshold(usbdev, wiphy->frag_threshold);
1869 err = set_rts_threshold(usbdev, wiphy->rts_threshold);
1883 struct usbnet *usbdev = priv->usbdev;
1885 netdev_dbg(usbdev->net, "%s(): type:0x%x mbm:%i\n",
1898 disassociate(usbdev, true); /* turn on radio */
1911 struct usbnet *usbdev = priv->usbdev;
1915 netdev_dbg(usbdev->net, "%s(): dbm:%i\n", __func__, *dbm);
1925 struct usbnet *usbdev = netdev_priv(dev);
1926 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1930 netdev_dbg(usbdev->net, "cfg80211.scan\n");
1935 rndis_check_bssid_list(usbdev, NULL, NULL);
1942 ret = rndis_start_bssid_list_scan(usbdev);
1954 static bool rndis_bss_info_update(struct usbnet *usbdev,
1957 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
1968 netdev_dbg(usbdev->net, " found bssid: '%.32s' [%pM], len: %d\n",
2040 static int rndis_check_bssid_list(struct usbnet *usbdev, u8 *match_bssid,
2048 netdev_dbg(usbdev->net, "%s()\n", __func__);
2062 ret = rndis_query_oid(usbdev, RNDIS_OID_802_11_BSSID_LIST,
2078 netdev_dbg(usbdev->net, "%s(): buflen: %d\n", __func__, len);
2087 if (rndis_bss_info_update(usbdev, bssid) && match_bssid &&
2097 netdev_dbg(usbdev->net, "%s(): num_items from device: %d, really found:"
2109 struct usbnet *usbdev = priv->usbdev;
2113 netdev_dbg(usbdev->net, "get_scan_results\n");
2118 ret = rndis_check_bssid_list(usbdev, NULL, NULL);
2130 struct usbnet *usbdev = priv->usbdev;
2148 netdev_err(usbdev->net, "Unsupported pairwise cipher\n");
2158 netdev_err(usbdev->net, "Invalid keymgmt\n");
2162 netdev_dbg(usbdev->net, "cfg80211.connect('%.32s':[%pM]:%d:[%d,0x%x:0x%x]:[0x%x:0x%x]:0x%x)\n",
2167 if (is_associated(usbdev))
2168 disassociate(usbdev, false);
2170 ret = set_infra_mode(usbdev, NDIS_80211_INFRA_INFRA);
2172 netdev_dbg(usbdev->net, "connect: set_infra_mode failed, %d\n",
2177 ret = set_auth_mode(usbdev, sme->crypto.wpa_versions, sme->auth_type,
2180 netdev_dbg(usbdev->net, "connect: set_auth_mode failed, %d\n",
2185 set_priv_filter(usbdev);
2187 ret = set_encr_mode(usbdev, pairwise, groupwise);
2189 netdev_dbg(usbdev->net, "connect: set_encr_mode failed, %d\n",
2195 ret = set_channel(usbdev, chan);
2197 netdev_dbg(usbdev->net, "connect: set_channel failed, %d\n",
2205 ret = add_wep_key(usbdev, sme->key, sme->key_len, sme->key_idx);
2207 netdev_dbg(usbdev->net, "connect: add_wep_key failed, %d (%d, %d)\n",
2215 ret = set_bssid(usbdev, sme->bssid);
2217 netdev_dbg(usbdev->net, "connect: set_bssid failed, %d\n",
2222 clear_bssid(usbdev);
2235 usbnet_pause_rx(usbdev);
2236 usbnet_purge_paused_rxq(usbdev);
2238 ret = set_essid(usbdev, &ssid);
2240 netdev_dbg(usbdev->net, "connect: set_essid failed, %d\n", ret);
2244 disassociate(usbdev, true);
2253 struct usbnet *usbdev = priv->usbdev;
2255 netdev_dbg(usbdev->net, "cfg80211.disconnect(%d)\n", reason_code);
2260 return deauthenticate(usbdev);
2267 struct usbnet *usbdev = priv->usbdev;
2289 netdev_dbg(usbdev->net, "cfg80211.join_ibss('%.32s':[%pM]:%d:%d)\n",
2292 if (is_associated(usbdev))
2293 disassociate(usbdev, false);
2295 ret = set_infra_mode(usbdev, NDIS_80211_INFRA_ADHOC);
2297 netdev_dbg(usbdev->net, "join_ibss: set_infra_mode failed, %d\n",
2302 ret = set_auth_mode(usbdev, 0, auth_type, RNDIS_WLAN_KEY_MGMT_NONE);
2304 netdev_dbg(usbdev->net, "join_ibss: set_auth_mode failed, %d\n",
2309 set_priv_filter(usbdev);
2311 ret = set_encr_mode(usbdev, alg, RNDIS_WLAN_ALG_NONE);
2313 netdev_dbg(usbdev->net, "join_ibss: set_encr_mode failed, %d\n",
2319 ret = set_channel(usbdev, chan);
2321 netdev_dbg(usbdev->net, "join_ibss: set_channel failed, %d\n",
2329 ret = set_bssid(usbdev, params->bssid);
2331 netdev_dbg(usbdev->net, "join_ibss: set_bssid failed, %d\n",
2336 clear_bssid(usbdev);
2347 usbnet_purge_paused_rxq(usbdev);
2348 usbnet_resume_rx(usbdev);
2350 ret = set_essid(usbdev, &ssid);
2352 netdev_dbg(usbdev->net, "join_ibss: set_essid failed, %d\n",
2357 disassociate(usbdev, true);
2365 struct usbnet *usbdev = priv->usbdev;
2367 netdev_dbg(usbdev->net, "cfg80211.leave_ibss()\n");
2372 return deauthenticate(usbdev);
2380 struct usbnet *usbdev = priv->usbdev;
2383 netdev_dbg(usbdev->net, "%s(%i, %pM, %08x)\n",
2389 return add_wep_key(usbdev, params->key, params->key_len,
2401 return add_wpa_key(usbdev, params->key, params->key_len,
2405 netdev_dbg(usbdev->net, "%s(): unsupported cipher %08x\n",
2415 struct usbnet *usbdev = priv->usbdev;
2417 netdev_dbg(usbdev->net, "%s(%i, %pM)\n", __func__, key_index, mac_addr);
2419 return remove_key(usbdev, key_index, mac_addr);
2426 struct usbnet *usbdev = priv->usbdev;
2429 netdev_dbg(usbdev->net, "%s(%i)\n", __func__, key_index);
2441 return add_wep_key(usbdev, key.material, key.len, key_index);
2444 static void rndis_fill_station_info(struct usbnet *usbdev,
2453 ret = rndis_query_oid(usbdev, RNDIS_OID_GEN_LINK_SPEED, &linkspeed, &len);
2460 ret = rndis_query_oid(usbdev, RNDIS_OID_802_11_RSSI,
2472 struct usbnet *usbdev = priv->usbdev;
2477 rndis_fill_station_info(usbdev, sinfo);
2486 struct usbnet *usbdev = priv->usbdev;
2493 rndis_fill_station_info(usbdev, sinfo);
2502 struct usbnet *usbdev = priv->usbdev;
2506 netdev_dbg(usbdev->net, "%s(%pM, %08X:%08X:%08X:%08X)\n", __func__,
2511 pmkids = get_device_pmkids(usbdev);
2517 pmkids = update_pmkid(usbdev, pmkids, pmksa, wiphy->max_num_pmkids);
2523 return set_device_pmkids(usbdev, pmkids);
2530 struct usbnet *usbdev = priv->usbdev;
2534 netdev_dbg(usbdev->net, "%s(%pM, %08X:%08X:%08X:%08X)\n", __func__,
2539 pmkids = get_device_pmkids(usbdev);
2545 pmkids = remove_pmkid(usbdev, pmkids, pmksa, wiphy->max_num_pmkids);
2551 return set_device_pmkids(usbdev, pmkids);
2557 struct usbnet *usbdev = priv->usbdev;
2560 netdev_dbg(usbdev->net, "%s()\n", __func__);
2567 return rndis_set_oid(usbdev, RNDIS_OID_802_11_PMKID,
2575 struct usbnet *usbdev = priv->usbdev;
2583 netdev_dbg(usbdev->net, "%s(): %s, %d\n", __func__,
2598 ret = rndis_set_oid(usbdev, RNDIS_OID_802_11_POWER_MODE,
2601 netdev_dbg(usbdev->net, "%s(): RNDIS_OID_802_11_POWER_MODE -> %d\n",
2620 static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid,
2623 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
2638 ret = rndis_query_oid(usbdev, RNDIS_OID_802_11_RSSI,
2642 netdev_dbg(usbdev->net, "%s(): RNDIS_OID_802_11_RSSI -> %d, "
2656 channel = get_current_channel(usbdev, &beacon_period);
2658 netdev_warn(usbdev->net, "%s(): could not get channel.\n",
2666 ret = rndis_query_oid(usbdev, RNDIS_OID_802_11_SSID,
2668 netdev_dbg(usbdev->net, "%s(): RNDIS_OID_802_11_SSID -> %d, len: %d, ssid: "
2684 netdev_dbg(usbdev->net, "%s(): channel:%d(freq), bssid:[%pM], tsf:%d, "
2700 static void rndis_wlan_do_link_up_work(struct usbnet *usbdev)
2702 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
2733 ret = get_association_info(usbdev, info, CONTROL_BUFFER_SIZE);
2777 ret = get_bssid(usbdev, bssid);
2781 netdev_dbg(usbdev->net, "link up work: [%pM]%s\n",
2796 rndis_check_bssid_list(usbdev, bssid, &match_bss);
2802 rndis_wlan_craft_connected_bss(usbdev, bssid, info);
2807 cfg80211_connect_result(usbdev->net, bssid, req_ie,
2812 .channel = get_current_channel(usbdev, NULL),
2820 cfg80211_roamed(usbdev->net, &roam_info, GFP_KERNEL);
2823 cfg80211_ibss_joined(usbdev->net, bssid,
2824 get_current_channel(usbdev, NULL),
2832 usbnet_resume_rx(usbdev);
2833 netif_carrier_on(usbdev->net);
2836 static void rndis_wlan_do_link_down_work(struct usbnet *usbdev)
2838 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
2844 deauthenticate(usbdev);
2846 cfg80211_disconnected(usbdev->net, 0, NULL, 0, true, GFP_KERNEL);
2849 netif_carrier_off(usbdev->net);
2856 struct usbnet *usbdev = priv->usbdev;
2859 rndis_wlan_do_link_up_work(usbdev);
2862 rndis_wlan_do_link_down_work(usbdev);
2865 set_multicast_list(usbdev);
2870 struct usbnet *usbdev = netdev_priv(dev);
2871 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
2880 static void rndis_wlan_auth_indication(struct usbnet *usbdev,
2894 netdev_info(usbdev->net, "authentication indication: too short message (%i)\n",
2924 netdev_info(usbdev->net, "authentication indication: %s (0x%08x)\n",
2931 cfg80211_michael_mic_failure(usbdev->net,
2941 cfg80211_michael_mic_failure(usbdev->net,
2952 static void rndis_wlan_pmkid_cand_list_indication(struct usbnet *usbdev,
2961 netdev_info(usbdev->net, "pmkid candidate list indication: too short message (%i)\n",
2972 netdev_info(usbdev->net, "pmkid candidate list indication: list larger than buffer (%i < %i)\n",
2979 netdev_info(usbdev->net, "pmkid candidate list indication: version %i, candidates %i\n",
2991 netdev_dbg(usbdev->net, "cand[%i]: flags: 0x%08x, preauth: %d, bssid: %pM\n",
2994 cfg80211_pmksa_candidate_notify(usbdev->net, i, cand->bssid,
2999 static void rndis_wlan_media_specific_indication(struct usbnet *usbdev,
3010 netdev_info(usbdev->net, "media specific indication, ignore too short message (%i < 8)\n",
3016 netdev_info(usbdev->net, "media specific indication, too large to fit to buffer (%i > %i)\n",
3025 netdev_info(usbdev->net, "radio state indication: %i\n",
3030 netdev_info(usbdev->net, "media stream mode indication: %i\n",
3035 rndis_wlan_auth_indication(usbdev, indication, len);
3039 rndis_wlan_pmkid_cand_list_indication(usbdev, indication, len);
3043 netdev_info(usbdev->net, "media specific indication: unknown status type 0x%08x\n",
3048 static void rndis_wlan_indication(struct usbnet *usbdev, void *ind, int buflen)
3050 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
3061 netdev_dbg(usbdev->net, "ignored RNDIS_OID_802_11_ADD_KEY triggered 'media connect'\n");
3065 usbnet_pause_rx(usbdev);
3067 netdev_info(usbdev->net, "media connect\n");
3075 netdev_info(usbdev->net, "media disconnect\n");
3083 rndis_wlan_media_specific_indication(usbdev, msg, buflen);
3087 netdev_info(usbdev->net, "indication: 0x%08x\n",
3093 static int rndis_wlan_get_caps(struct usbnet *usbdev, struct wiphy *wiphy)
3101 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
3105 retval = rndis_query_oid(usbdev,
3130 retval = rndis_query_oid(usbdev,
3134 netdev_dbg(usbdev->net, "RNDIS_OID_802_11_CAPABILITY -> len %d, "
3147 static void rndis_do_cqm(struct usbnet *usbdev, s32 rssi)
3149 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
3170 cfg80211_cqm_rssi_notify(usbdev->net, event, rssi, GFP_KERNEL);
3179 struct usbnet *usbdev = priv->usbdev;
3189 if (!is_associated(usbdev)) {
3196 rndis_check_bssid_list(usbdev, NULL, NULL);
3199 rndis_start_bssid_list_scan(usbdev);
3206 ret = rndis_query_oid(usbdev, RNDIS_OID_802_11_RSSI,
3210 rndis_do_cqm(usbdev, le32_to_cpu(rssi));
3213 netdev_dbg(usbdev->net, "dev-poller: RNDIS_OID_802_11_RSSI -> %d, rssi:%d, qual: %d\n",
3235 rndis_set_oid(usbdev,
3244 rndis_query_oid(usbdev,
3266 static void rndis_copy_module_params(struct usbnet *usbdev, int device_type)
3268 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
3314 static int unknown_early_init(struct usbnet *usbdev)
3319 rndis_copy_module_params(usbdev, RNDIS_UNKNOWN);
3327 static int bcm4320a_early_init(struct usbnet *usbdev)
3332 rndis_copy_module_params(usbdev, RNDIS_BCM4320A);
3341 static int bcm4320b_early_init(struct usbnet *usbdev)
3343 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
3346 rndis_copy_module_params(usbdev, RNDIS_BCM4320B);
3352 rndis_set_config_parameter_str(usbdev, "Country", priv->param_country);
3353 rndis_set_config_parameter_str(usbdev, "FrameBursting",
3355 rndis_set_config_parameter_str(usbdev, "Afterburner",
3358 rndis_set_config_parameter_str(usbdev, "PowerSaveMode", buf);
3360 rndis_set_config_parameter_str(usbdev, "PwrOut", buf);
3362 rndis_set_config_parameter_str(usbdev, "RoamTrigger", buf);
3364 rndis_set_config_parameter_str(usbdev, "RoamDelta", buf);
3381 static int rndis_wlan_bind(struct usbnet *usbdev, struct usb_interface *intf)
3397 usbdev->net->ieee80211_ptr = &priv->wdev;
3404 usbdev->driver_priv = priv;
3405 priv->usbdev = usbdev;
3420 retval = generic_rndis_bind(usbdev, intf, FLAG_RNDIS_PHYM_WIRELESS);
3431 usbdev->net->netdev_ops = &rndis_wlan_netdev_ops;
3434 retval = rndis_set_oid(usbdev,
3439 retval = rndis_query_oid(usbdev,
3446 usbdev->net->flags |= IFF_MULTICAST;
3448 usbdev->net->flags &= ~IFF_MULTICAST;
3451 memcpy(wiphy->perm_addr, usbdev->net->dev_addr, ETH_ALEN);
3458 rndis_wlan_get_caps(usbdev, wiphy);
3474 set_wiphy_dev(wiphy, &usbdev->udev->dev);
3481 set_default_iw_params(usbdev);
3491 disassociate(usbdev, false);
3492 netif_carrier_off(usbdev->net);
3507 static void rndis_wlan_unbind(struct usbnet *usbdev, struct usb_interface *intf)
3509 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
3512 disassociate(usbdev, false);
3520 rndis_unbind(usbdev, intf);
3526 static int rndis_wlan_reset(struct usbnet *usbdev)
3528 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
3531 netdev_dbg(usbdev->net, "%s()\n", __func__);
3533 retval = rndis_reset(usbdev);
3535 netdev_warn(usbdev->net, "rndis_reset failed: %d\n", retval);
3539 set_multicast_list(usbdev);
3544 return deauthenticate(usbdev);
3547 static int rndis_wlan_stop(struct usbnet *usbdev)
3549 struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
3553 netdev_dbg(usbdev->net, "%s()\n", __func__);
3555 retval = disassociate(usbdev, false);
3575 rndis_set_oid(usbdev, RNDIS_OID_GEN_CURRENT_PACKET_FILTER, &filter,