Lines Matching refs:priv

183  * Actual channel data comes from priv->wdev->wiphy->channels.
189 static int lbs_add_channel_list_tlv(struct lbs_private *priv, u8 *tlv,
193 (last_channel - priv->scan_channel);
214 /* lbs_deb_scan("scan: channels %d to %d\n", priv->scan_channel,
218 while (priv->scan_channel < last_channel) {
223 priv->scan_req->channels[priv->scan_channel]->hw_value;
231 priv->scan_channel++;
443 struct lbs_private *priv = wiphy_priv(wiphy);
452 if (netdev == priv->mesh_dev)
453 ret = lbs_mesh_set_channel(priv, channel->hw_value);
455 ret = lbs_set_channel(priv, channel->hw_value);
485 static int lbs_ret_scan(struct lbs_private *priv, unsigned long dummy,
623 struct wiphy *wiphy = priv->wdev->wiphy;
668 * Assumes priv->scan_req is initialized and valid
669 * Assumes priv->scan_channel is initialized
673 struct lbs_private *priv =
690 running = !netif_queue_stopped(priv->dev);
691 carrier = netif_carrier_ok(priv->dev);
693 netif_stop_queue(priv->dev);
695 netif_carrier_off(priv->dev);
701 if (priv->scan_req->n_ssids && priv->scan_req->ssids[0].ssid_len > 0)
703 priv->scan_req->ssids[0].ssid,
704 priv->scan_req->ssids[0].ssid_len);
707 last_channel = priv->scan_channel + LBS_SCAN_BEFORE_NAP;
708 if (last_channel > priv->scan_req->n_channels)
709 last_channel = priv->scan_req->n_channels;
710 tlv += lbs_add_channel_list_tlv(priv, tlv, last_channel,
711 priv->scan_req->n_ssids);
716 if (priv->scan_channel < priv->scan_req->n_channels) {
717 cancel_delayed_work(&priv->scan_work);
718 if (netif_running(priv->dev))
719 queue_delayed_work(priv->work_thread, &priv->scan_work,
730 __lbs_cmd(priv, CMD_802_11_SCAN, &scan_cmd->hdr,
734 if (priv->scan_channel >= priv->scan_req->n_channels) {
736 cancel_delayed_work(&priv->scan_work);
737 lbs_scan_done(priv);
742 netif_carrier_on(priv->dev);
743 if (running && !priv->tx_pending_len)
744 netif_wake_queue(priv->dev);
749 if (priv->scan_req == NULL) {
751 wake_up_all(&priv->scan_q);
758 static void _internal_start_scan(struct lbs_private *priv, bool internal,
766 priv->scan_channel = 0;
767 priv->scan_req = request;
768 priv->internal_scan = internal;
770 queue_delayed_work(priv->work_thread, &priv->scan_work,
777 * Clean up priv->scan_req. Should be used to handle the allocation details.
779 void lbs_scan_done(struct lbs_private *priv)
781 WARN_ON(!priv->scan_req);
783 if (priv->internal_scan)
784 kfree(priv->scan_req);
786 cfg80211_scan_done(priv->scan_req, false);
788 priv->scan_req = NULL;
795 struct lbs_private *priv = wiphy_priv(wiphy);
800 if (priv->scan_req || delayed_work_pending(&priv->scan_work)) {
806 _internal_start_scan(priv, false, request);
808 if (priv->surpriseremoved)
823 void lbs_send_disconnect_notification(struct lbs_private *priv)
827 cfg80211_disconnected(priv->dev,
835 void lbs_send_mic_failureevent(struct lbs_private *priv, u32 event)
839 cfg80211_michael_mic_failure(priv->dev,
840 priv->assoc_bss,
862 static int lbs_remove_wep_keys(struct lbs_private *priv)
871 cmd.keyindex = cpu_to_le16(priv->wep_tx_key);
874 ret = lbs_cmd_with_response(priv, CMD_802_11_SET_WEP, &cmd);
883 static int lbs_set_wep_keys(struct lbs_private *priv)
910 if (priv->wep_key_len[0] || priv->wep_key_len[1] ||
911 priv->wep_key_len[2] || priv->wep_key_len[3]) {
915 cmd.keyindex = cpu_to_le16(priv->wep_tx_key);
919 switch (priv->wep_key_len[i]) {
930 memcpy(cmd.keymaterial[i], priv->wep_key[i],
931 priv->wep_key_len[i]);
934 ret = lbs_cmd_with_response(priv, CMD_802_11_SET_WEP, &cmd);
937 ret = lbs_remove_wep_keys(priv);
948 static int lbs_enable_rsn(struct lbs_private *priv, int enable)
968 ret = lbs_cmd_with_response(priv, CMD_802_11_ENABLE_RSN, &cmd);
991 static int lbs_set_key_material(struct lbs_private *priv,
1027 ret = lbs_cmd_with_response(priv, CMD_802_11_KEY_MATERIAL, &cmd);
1040 static int lbs_set_authtype(struct lbs_private *priv,
1067 ret = lbs_cmd_with_response(priv, CMD_802_11_AUTHENTICATE, &cmd);
1087 static int lbs_associate(struct lbs_private *priv,
1149 if (MRVL_FW_MAJOR_REV(priv->fwrelease) >= 9)
1164 memcpy(priv->assoc_bss, bss->bssid, ETH_ALEN);
1166 ret = lbs_cmd_with_response(priv, CMD_802_11_ASSOCIATE, cmd);
1191 if (MRVL_FW_MAJOR_REV(priv->fwrelease) <= 8) {
1227 cfg80211_connect_result(priv->dev,
1228 priv->assoc_bss,
1235 /* TODO: get rid of priv->connect_status */
1236 priv->connect_status = LBS_CONNECTED;
1237 netif_carrier_on(priv->dev);
1238 if (!priv->tx_pending_len)
1239 netif_tx_wake_all_queues(priv->dev);
1307 struct lbs_private *priv = wiphy_priv(wiphy);
1312 if (dev == priv->mesh_dev)
1325 wait_event_interruptible_timeout(priv->scan_q,
1326 (priv->scan_req == NULL),
1336 _internal_start_scan(priv, true, creq);
1339 wait_event_interruptible_timeout(priv->scan_q,
1340 (priv->scan_req == NULL),
1361 priv->wep_tx_key = 0;
1362 memset(priv->wep_key, 0, sizeof(priv->wep_key));
1363 memset(priv->wep_key_len, 0, sizeof(priv->wep_key_len));
1369 /* Store provided WEP keys in priv-> */
1370 priv->wep_tx_key = sme->key_idx;
1371 priv->wep_key_len[sme->key_idx] = sme->key_len;
1372 memcpy(priv->wep_key[sme->key_idx], sme->key, sme->key_len);
1374 lbs_set_wep_keys(priv);
1375 priv->mac_control |= CMD_ACT_MAC_WEP_ENABLE;
1376 lbs_set_mac_control(priv);
1378 lbs_enable_rsn(priv, 0);
1391 lbs_remove_wep_keys(priv);
1392 priv->mac_control &= ~CMD_ACT_MAC_WEP_ENABLE;
1393 lbs_set_mac_control(priv);
1396 lbs_set_key_material(priv,
1400 lbs_set_key_material(priv,
1405 lbs_enable_rsn(priv, sme->crypto.cipher_group != 0);
1414 ret = lbs_set_authtype(priv, sme);
1420 lbs_set_radio(priv, preamble, 1);
1423 ret = lbs_associate(priv, bss, sme);
1432 int lbs_disconnect(struct lbs_private *priv, u16 reason)
1440 memcpy(cmd.macaddr, &priv->assoc_bss, ETH_ALEN);
1443 ret = lbs_cmd_with_response(priv, CMD_802_11_DEAUTHENTICATE, &cmd);
1447 cfg80211_disconnected(priv->dev,
1451 priv->connect_status = LBS_DISCONNECTED;
1459 struct lbs_private *priv = wiphy_priv(wiphy);
1461 if (dev == priv->mesh_dev)
1467 priv->disassoc_reason = reason_code;
1469 return lbs_disconnect(priv, reason_code);
1477 struct lbs_private *priv = wiphy_priv(wiphy);
1479 if (netdev == priv->mesh_dev)
1484 if (key_index != priv->wep_tx_key) {
1486 priv->wep_tx_key = key_index;
1487 lbs_set_wep_keys(priv);
1498 struct lbs_private *priv = wiphy_priv(wiphy);
1503 if (netdev == priv->mesh_dev)
1525 if ((priv->wep_key_len[idx] != params->key_len) ||
1526 memcmp(priv->wep_key[idx],
1528 priv->wep_key_len[idx] = params->key_len;
1529 memcpy(priv->wep_key[idx],
1531 lbs_set_wep_keys(priv);
1542 lbs_set_key_material(priv,
1567 struct lbs_private *priv = wiphy_priv(wiphy);
1583 if (key_index < 3 && priv->wep_key_len[key_index]) {
1584 priv->wep_key_len[key_index] = 0;
1585 lbs_set_wep_keys(priv);
1600 struct lbs_private *priv = wiphy_priv(wiphy);
1611 sinfo->tx_bytes = priv->dev->stats.tx_bytes;
1612 sinfo->tx_packets = priv->dev->stats.tx_packets;
1613 sinfo->rx_bytes = priv->dev->stats.rx_bytes;
1614 sinfo->rx_packets = priv->dev->stats.rx_packets;
1617 ret = lbs_get_rssi(priv, &signal, &noise);
1623 /* Convert priv->cur_rate from hw_value to NL80211 value */
1625 if (priv->cur_rate == lbs_rates[i].hw_value) {
1646 struct lbs_private *priv = wiphy_priv(wiphy);
1649 if (dev == priv->mesh_dev)
1663 if (priv->iface_running)
1664 ret = lbs_set_iface_type(priv, type);
1667 priv->wdev->iftype = type;
1687 static void lbs_join_post(struct lbs_private *priv,
1741 bss = cfg80211_inform_bss(priv->wdev->wiphy,
1751 memcpy(priv->wdev->ssid, params->ssid, params->ssid_len);
1752 priv->wdev->ssid_len = params->ssid_len;
1754 cfg80211_ibss_joined(priv->dev, bssid, GFP_KERNEL);
1757 priv->connect_status = LBS_CONNECTED;
1758 netif_carrier_on(priv->dev);
1759 if (!priv->tx_pending_len)
1760 netif_wake_queue(priv->dev);
1765 static int lbs_ibss_join_existing(struct lbs_private *priv,
1777 ret = lbs_set_radio(priv, preamble, 1);
1849 if (MRVL_FW_MAJOR_REV(priv->fwrelease) <= 8) {
1853 ret = lbs_cmd_with_response(priv, CMD_802_11_AD_HOC_JOIN, &cmd);
1866 lbs_join_post(priv, params, bss->bssid, bss->capability);
1875 static int lbs_ibss_start_new(struct lbs_private *priv,
1887 ret = lbs_set_radio(priv, preamble, 1);
1931 if (MRVL_FW_MAJOR_REV(priv->fwrelease) <= 8)
1939 ret = lbs_cmd_with_response(priv, CMD_802_11_AD_HOC_START, &cmd);
1953 lbs_join_post(priv, params, resp->bssid, capability);
1964 struct lbs_private *priv = wiphy_priv(wiphy);
1969 if (dev == priv->mesh_dev)
1979 ret = lbs_set_channel(priv, params->channel->hw_value);
1990 ret = lbs_ibss_join_existing(priv, params, bss);
1993 ret = lbs_ibss_start_new(priv, params);
2004 struct lbs_private *priv = wiphy_priv(wiphy);
2008 if (dev == priv->mesh_dev)
2015 ret = lbs_cmd_with_response(priv, CMD_802_11_AD_HOC_STOP, &cmd);
2018 lbs_mac_event_disconnected(priv);
2047 * At this time lbs_private *priv doesn't even exist, so we just allocate
2082 static void lbs_cfg_set_regulatory_hint(struct lbs_private *priv)
2103 if (regmap[i].code == priv->regioncode) {
2104 regulatory_hint(priv->wdev->wiphy, regmap[i].cn);
2117 int lbs_cfg_register(struct lbs_private *priv)
2119 struct wireless_dev *wdev = priv->wdev;
2130 if (lbs_rtap_supported(priv))
2132 if (lbs_mesh_activated(priv))
2138 * We could check priv->fwcapinfo && FW_CAPINFO_WPA, but I have
2149 priv->wiphy_registered = true;
2151 ret = register_netdev(priv->dev);
2155 INIT_DELAYED_WORK(&priv->scan_work, lbs_scan_worker);
2157 lbs_cfg_set_regulatory_hint(priv);
2166 struct lbs_private *priv = wiphy_priv(wiphy);
2173 ret = lbs_set_11d_domain_info(priv, request, wiphy->bands);
2179 void lbs_scan_deinit(struct lbs_private *priv)
2182 cancel_delayed_work_sync(&priv->scan_work);
2186 void lbs_cfg_free(struct lbs_private *priv)
2188 struct wireless_dev *wdev = priv->wdev;
2195 if (priv->wiphy_registered)