diff options
| -rw-r--r-- | drivers/net/wireless/mwifiex/cfg80211.c | 15 | ||||
| -rw-r--r-- | drivers/net/wireless/mwifiex/fw.h | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/mwifiex/main.h | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/mwifiex/sta_cmd.c | 38 | ||||
| -rw-r--r-- | drivers/net/wireless/mwifiex/sta_cmdresp.c | 31 | ||||
| -rw-r--r-- | drivers/net/wireless/mwifiex/sta_ioctl.c | 163 |
6 files changed, 2 insertions, 259 deletions
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c index e27b3168862c..7276a3449e17 100644 --- a/drivers/net/wireless/mwifiex/cfg80211.c +++ b/drivers/net/wireless/mwifiex/cfg80211.c | |||
| @@ -349,7 +349,6 @@ mwifiex_set_rf_channel(struct mwifiex_private *priv, | |||
| 349 | struct ieee80211_channel *chan, | 349 | struct ieee80211_channel *chan, |
| 350 | enum nl80211_channel_type channel_type) | 350 | enum nl80211_channel_type channel_type) |
| 351 | { | 351 | { |
| 352 | struct mwifiex_chan_freq_power cfp; | ||
| 353 | u32 config_bands = 0; | 352 | u32 config_bands = 0; |
| 354 | struct wiphy *wiphy = priv->wdev->wiphy; | 353 | struct wiphy *wiphy = priv->wdev->wiphy; |
| 355 | struct mwifiex_adapter *adapter = priv->adapter; | 354 | struct mwifiex_adapter *adapter = priv->adapter; |
| @@ -389,24 +388,14 @@ mwifiex_set_rf_channel(struct mwifiex_private *priv, | |||
| 389 | mwifiex_cfg80211_channel_type_to_sec_chan_offset | 388 | mwifiex_cfg80211_channel_type_to_sec_chan_offset |
| 390 | (channel_type); | 389 | (channel_type); |
| 391 | adapter->channel_type = channel_type; | 390 | adapter->channel_type = channel_type; |
| 391 | priv->adhoc_channel = | ||
| 392 | ieee80211_frequency_to_channel(chan->center_freq); | ||
| 392 | 393 | ||
| 393 | mwifiex_send_domain_info_cmd_fw(wiphy); | 394 | mwifiex_send_domain_info_cmd_fw(wiphy); |
| 394 | } | 395 | } |
| 395 | 396 | ||
| 396 | wiphy_dbg(wiphy, "info: setting band %d, chan offset %d, mode %d\n", | 397 | wiphy_dbg(wiphy, "info: setting band %d, chan offset %d, mode %d\n", |
| 397 | config_bands, adapter->sec_chan_offset, priv->bss_mode); | 398 | config_bands, adapter->sec_chan_offset, priv->bss_mode); |
| 398 | if (!chan) | ||
| 399 | return 0; | ||
| 400 | |||
| 401 | memset(&cfp, 0, sizeof(cfp)); | ||
| 402 | cfp.freq = chan->center_freq; | ||
| 403 | cfp.channel = ieee80211_frequency_to_channel(chan->center_freq); | ||
| 404 | |||
| 405 | if (priv->bss_type == MWIFIEX_BSS_TYPE_STA) { | ||
| 406 | if (mwifiex_bss_set_channel(priv, &cfp)) | ||
| 407 | return -EFAULT; | ||
| 408 | return mwifiex_drv_change_adhoc_chan(priv, cfp.channel); | ||
| 409 | } | ||
| 410 | 399 | ||
| 411 | return 0; | 400 | return 0; |
| 412 | } | 401 | } |
diff --git a/drivers/net/wireless/mwifiex/fw.h b/drivers/net/wireless/mwifiex/fw.h index 14e985d01dee..e831b440a24a 100644 --- a/drivers/net/wireless/mwifiex/fw.h +++ b/drivers/net/wireless/mwifiex/fw.h | |||
| @@ -225,7 +225,6 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
| 225 | #define HostCmd_CMD_BBP_REG_ACCESS 0x001a | 225 | #define HostCmd_CMD_BBP_REG_ACCESS 0x001a |
| 226 | #define HostCmd_CMD_RF_REG_ACCESS 0x001b | 226 | #define HostCmd_CMD_RF_REG_ACCESS 0x001b |
| 227 | #define HostCmd_CMD_PMIC_REG_ACCESS 0x00ad | 227 | #define HostCmd_CMD_PMIC_REG_ACCESS 0x00ad |
| 228 | #define HostCmd_CMD_802_11_RF_CHANNEL 0x001d | ||
| 229 | #define HostCmd_CMD_RF_TX_PWR 0x001e | 228 | #define HostCmd_CMD_RF_TX_PWR 0x001e |
| 230 | #define HostCmd_CMD_RF_ANTENNA 0x0020 | 229 | #define HostCmd_CMD_RF_ANTENNA 0x0020 |
| 231 | #define HostCmd_CMD_802_11_DEAUTHENTICATE 0x0024 | 230 | #define HostCmd_CMD_802_11_DEAUTHENTICATE 0x0024 |
| @@ -1292,14 +1291,6 @@ struct host_cmd_tlv_channel_band { | |||
| 1292 | u8 channel; | 1291 | u8 channel; |
| 1293 | } __packed; | 1292 | } __packed; |
| 1294 | 1293 | ||
| 1295 | struct host_cmd_ds_802_11_rf_channel { | ||
| 1296 | __le16 action; | ||
| 1297 | __le16 current_channel; | ||
| 1298 | __le16 rf_type; | ||
| 1299 | __le16 reserved; | ||
| 1300 | u8 reserved_1[32]; | ||
| 1301 | } __packed; | ||
| 1302 | |||
| 1303 | struct host_cmd_ds_version_ext { | 1294 | struct host_cmd_ds_version_ext { |
| 1304 | u8 version_str_sel; | 1295 | u8 version_str_sel; |
| 1305 | char version_str[128]; | 1296 | char version_str[128]; |
| @@ -1384,7 +1375,6 @@ struct host_cmd_ds_command { | |||
| 1384 | struct host_cmd_ds_802_11_rssi_info rssi_info; | 1375 | struct host_cmd_ds_802_11_rssi_info rssi_info; |
| 1385 | struct host_cmd_ds_802_11_rssi_info_rsp rssi_info_rsp; | 1376 | struct host_cmd_ds_802_11_rssi_info_rsp rssi_info_rsp; |
| 1386 | struct host_cmd_ds_802_11_snmp_mib smib; | 1377 | struct host_cmd_ds_802_11_snmp_mib smib; |
| 1387 | struct host_cmd_ds_802_11_rf_channel rf_channel; | ||
| 1388 | struct host_cmd_ds_tx_rate_query tx_rate; | 1378 | struct host_cmd_ds_tx_rate_query tx_rate; |
| 1389 | struct host_cmd_ds_tx_rate_cfg tx_rate_cfg; | 1379 | struct host_cmd_ds_tx_rate_cfg tx_rate_cfg; |
| 1390 | struct host_cmd_ds_txpwr_cfg txp_cfg; | 1380 | struct host_cmd_ds_txpwr_cfg txp_cfg; |
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h index 774880d5cb56..b710649ccf15 100644 --- a/drivers/net/wireless/mwifiex/main.h +++ b/drivers/net/wireless/mwifiex/main.h | |||
| @@ -953,8 +953,6 @@ int mwifiex_scan_networks(struct mwifiex_private *priv, | |||
| 953 | const struct mwifiex_user_scan_cfg *user_scan_in); | 953 | const struct mwifiex_user_scan_cfg *user_scan_in); |
| 954 | int mwifiex_set_radio(struct mwifiex_private *priv, u8 option); | 954 | int mwifiex_set_radio(struct mwifiex_private *priv, u8 option); |
| 955 | 955 | ||
| 956 | int mwifiex_drv_change_adhoc_chan(struct mwifiex_private *priv, u16 channel); | ||
| 957 | |||
| 958 | int mwifiex_set_encode(struct mwifiex_private *priv, const u8 *key, | 956 | int mwifiex_set_encode(struct mwifiex_private *priv, const u8 *key, |
| 959 | int key_len, u8 key_index, const u8 *mac_addr, | 957 | int key_len, u8 key_index, const u8 *mac_addr, |
| 960 | int disable); | 958 | int disable); |
| @@ -993,8 +991,6 @@ int mwifiex_set_tx_power(struct mwifiex_private *priv, | |||
| 993 | 991 | ||
| 994 | int mwifiex_main_process(struct mwifiex_adapter *); | 992 | int mwifiex_main_process(struct mwifiex_adapter *); |
| 995 | 993 | ||
| 996 | int mwifiex_bss_set_channel(struct mwifiex_private *, | ||
| 997 | struct mwifiex_chan_freq_power *cfp); | ||
| 998 | int mwifiex_get_bss_info(struct mwifiex_private *, | 994 | int mwifiex_get_bss_info(struct mwifiex_private *, |
| 999 | struct mwifiex_bss_info *); | 995 | struct mwifiex_bss_info *); |
| 1000 | int mwifiex_fill_new_bss_desc(struct mwifiex_private *priv, | 996 | int mwifiex_fill_new_bss_desc(struct mwifiex_private *priv, |
diff --git a/drivers/net/wireless/mwifiex/sta_cmd.c b/drivers/net/wireless/mwifiex/sta_cmd.c index 75eaa6f877fa..93b06cd4e176 100644 --- a/drivers/net/wireless/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/mwifiex/sta_cmd.c | |||
| @@ -745,40 +745,6 @@ static int mwifiex_cmd_802_11d_domain_info(struct mwifiex_private *priv, | |||
| 745 | } | 745 | } |
| 746 | 746 | ||
| 747 | /* | 747 | /* |
| 748 | * This function prepares command to set/get RF channel. | ||
| 749 | * | ||
| 750 | * Preparation includes - | ||
| 751 | * - Setting command ID, action and proper size | ||
| 752 | * - Setting RF type and current RF channel (for SET only) | ||
| 753 | * - Ensuring correct endian-ness | ||
| 754 | */ | ||
| 755 | static int mwifiex_cmd_802_11_rf_channel(struct mwifiex_private *priv, | ||
| 756 | struct host_cmd_ds_command *cmd, | ||
| 757 | u16 cmd_action, u16 *channel) | ||
| 758 | { | ||
| 759 | struct host_cmd_ds_802_11_rf_channel *rf_chan = | ||
| 760 | &cmd->params.rf_channel; | ||
| 761 | uint16_t rf_type = le16_to_cpu(rf_chan->rf_type); | ||
| 762 | |||
| 763 | cmd->command = cpu_to_le16(HostCmd_CMD_802_11_RF_CHANNEL); | ||
| 764 | cmd->size = cpu_to_le16(sizeof(struct host_cmd_ds_802_11_rf_channel) | ||
| 765 | + S_DS_GEN); | ||
| 766 | |||
| 767 | if (cmd_action == HostCmd_ACT_GEN_SET) { | ||
| 768 | if ((priv->adapter->adhoc_start_band & BAND_A) || | ||
| 769 | (priv->adapter->adhoc_start_band & BAND_AN)) | ||
| 770 | rf_chan->rf_type = | ||
| 771 | cpu_to_le16(HostCmd_SCAN_RADIO_TYPE_A); | ||
| 772 | |||
| 773 | rf_type = le16_to_cpu(rf_chan->rf_type); | ||
| 774 | SET_SECONDARYCHAN(rf_type, priv->adapter->sec_chan_offset); | ||
| 775 | rf_chan->current_channel = cpu_to_le16(*channel); | ||
| 776 | } | ||
| 777 | rf_chan->action = cpu_to_le16(cmd_action); | ||
| 778 | return 0; | ||
| 779 | } | ||
| 780 | |||
| 781 | /* | ||
| 782 | * This function prepares command to set/get IBSS coalescing status. | 748 | * This function prepares command to set/get IBSS coalescing status. |
| 783 | * | 749 | * |
| 784 | * Preparation includes - | 750 | * Preparation includes - |
| @@ -1175,10 +1141,6 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no, | |||
| 1175 | S_DS_GEN); | 1141 | S_DS_GEN); |
| 1176 | ret = 0; | 1142 | ret = 0; |
| 1177 | break; | 1143 | break; |
| 1178 | case HostCmd_CMD_802_11_RF_CHANNEL: | ||
| 1179 | ret = mwifiex_cmd_802_11_rf_channel(priv, cmd_ptr, cmd_action, | ||
| 1180 | data_buf); | ||
| 1181 | break; | ||
| 1182 | case HostCmd_CMD_FUNC_INIT: | 1144 | case HostCmd_CMD_FUNC_INIT: |
| 1183 | if (priv->adapter->hw_status == MWIFIEX_HW_STATUS_RESET) | 1145 | if (priv->adapter->hw_status == MWIFIEX_HW_STATUS_RESET) |
| 1184 | priv->adapter->hw_status = MWIFIEX_HW_STATUS_READY; | 1146 | priv->adapter->hw_status = MWIFIEX_HW_STATUS_READY; |
diff --git a/drivers/net/wireless/mwifiex/sta_cmdresp.c b/drivers/net/wireless/mwifiex/sta_cmdresp.c index 71c9b5b92e6d..43ede5e58851 100644 --- a/drivers/net/wireless/mwifiex/sta_cmdresp.c +++ b/drivers/net/wireless/mwifiex/sta_cmdresp.c | |||
| @@ -656,34 +656,6 @@ static int mwifiex_ret_802_11d_domain_info(struct mwifiex_private *priv, | |||
| 656 | } | 656 | } |
| 657 | 657 | ||
| 658 | /* | 658 | /* |
| 659 | * This function handles the command response of get RF channel. | ||
| 660 | * | ||
| 661 | * Handling includes changing the header fields into CPU format | ||
| 662 | * and saving the new channel in driver. | ||
| 663 | */ | ||
| 664 | static int mwifiex_ret_802_11_rf_channel(struct mwifiex_private *priv, | ||
| 665 | struct host_cmd_ds_command *resp, | ||
| 666 | u16 *data_buf) | ||
| 667 | { | ||
| 668 | struct host_cmd_ds_802_11_rf_channel *rf_channel = | ||
| 669 | &resp->params.rf_channel; | ||
| 670 | u16 new_channel = le16_to_cpu(rf_channel->current_channel); | ||
| 671 | |||
| 672 | if (priv->curr_bss_params.bss_descriptor.channel != new_channel) { | ||
| 673 | dev_dbg(priv->adapter->dev, "cmd: Channel Switch: %d to %d\n", | ||
| 674 | priv->curr_bss_params.bss_descriptor.channel, | ||
| 675 | new_channel); | ||
| 676 | /* Update the channel again */ | ||
| 677 | priv->curr_bss_params.bss_descriptor.channel = new_channel; | ||
| 678 | } | ||
| 679 | |||
| 680 | if (data_buf) | ||
| 681 | *data_buf = new_channel; | ||
| 682 | |||
| 683 | return 0; | ||
| 684 | } | ||
| 685 | |||
| 686 | /* | ||
| 687 | * This function handles the command response of get extended version. | 659 | * This function handles the command response of get extended version. |
| 688 | * | 660 | * |
| 689 | * Handling includes forming the extended version string and sending it | 661 | * Handling includes forming the extended version string and sending it |
| @@ -935,9 +907,6 @@ int mwifiex_process_sta_cmdresp(struct mwifiex_private *priv, u16 cmdresp_no, | |||
| 935 | case HostCmd_CMD_802_11_TX_RATE_QUERY: | 907 | case HostCmd_CMD_802_11_TX_RATE_QUERY: |
| 936 | ret = mwifiex_ret_802_11_tx_rate_query(priv, resp); | 908 | ret = mwifiex_ret_802_11_tx_rate_query(priv, resp); |
| 937 | break; | 909 | break; |
| 938 | case HostCmd_CMD_802_11_RF_CHANNEL: | ||
| 939 | ret = mwifiex_ret_802_11_rf_channel(priv, resp, data_buf); | ||
| 940 | break; | ||
| 941 | case HostCmd_CMD_VERSION_EXT: | 910 | case HostCmd_CMD_VERSION_EXT: |
| 942 | ret = mwifiex_ret_ver_ext(priv, resp, data_buf); | 911 | ret = mwifiex_ret_ver_ext(priv, resp, data_buf); |
| 943 | break; | 912 | break; |
diff --git a/drivers/net/wireless/mwifiex/sta_ioctl.c b/drivers/net/wireless/mwifiex/sta_ioctl.c index f2fd2423214f..6dff01650242 100644 --- a/drivers/net/wireless/mwifiex/sta_ioctl.c +++ b/drivers/net/wireless/mwifiex/sta_ioctl.c | |||
| @@ -497,169 +497,6 @@ int mwifiex_disable_auto_ds(struct mwifiex_private *priv) | |||
| 497 | EXPORT_SYMBOL_GPL(mwifiex_disable_auto_ds); | 497 | EXPORT_SYMBOL_GPL(mwifiex_disable_auto_ds); |
| 498 | 498 | ||
| 499 | /* | 499 | /* |
| 500 | * IOCTL request handler to set/get active channel. | ||
| 501 | * | ||
| 502 | * This function performs validity checking on channel/frequency | ||
| 503 | * compatibility and returns failure if not valid. | ||
| 504 | */ | ||
| 505 | int mwifiex_bss_set_channel(struct mwifiex_private *priv, | ||
| 506 | struct mwifiex_chan_freq_power *chan) | ||
| 507 | { | ||
| 508 | struct mwifiex_adapter *adapter = priv->adapter; | ||
| 509 | struct mwifiex_chan_freq_power *cfp = NULL; | ||
| 510 | |||
| 511 | if (!chan) | ||
| 512 | return -1; | ||
| 513 | |||
| 514 | if (!chan->channel && !chan->freq) | ||
| 515 | return -1; | ||
| 516 | if (adapter->adhoc_start_band & BAND_AN) | ||
| 517 | adapter->adhoc_start_band = BAND_G | BAND_B | BAND_GN; | ||
| 518 | else if (adapter->adhoc_start_band & BAND_A) | ||
| 519 | adapter->adhoc_start_band = BAND_G | BAND_B; | ||
| 520 | if (chan->channel) { | ||
| 521 | if (chan->channel <= MAX_CHANNEL_BAND_BG) | ||
| 522 | cfp = mwifiex_get_cfp(priv, 0, (u16) chan->channel, 0); | ||
| 523 | if (!cfp) { | ||
| 524 | cfp = mwifiex_get_cfp(priv, BAND_A, | ||
| 525 | (u16) chan->channel, 0); | ||
| 526 | if (cfp) { | ||
| 527 | if (adapter->adhoc_11n_enabled) | ||
| 528 | adapter->adhoc_start_band = BAND_A | ||
| 529 | | BAND_AN; | ||
| 530 | else | ||
| 531 | adapter->adhoc_start_band = BAND_A; | ||
| 532 | } | ||
| 533 | } | ||
| 534 | } else { | ||
| 535 | if (chan->freq <= MAX_FREQUENCY_BAND_BG) | ||
| 536 | cfp = mwifiex_get_cfp(priv, 0, 0, chan->freq); | ||
| 537 | if (!cfp) { | ||
| 538 | cfp = mwifiex_get_cfp(priv, BAND_A, 0, chan->freq); | ||
| 539 | if (cfp) { | ||
| 540 | if (adapter->adhoc_11n_enabled) | ||
| 541 | adapter->adhoc_start_band = BAND_A | ||
| 542 | | BAND_AN; | ||
| 543 | else | ||
| 544 | adapter->adhoc_start_band = BAND_A; | ||
| 545 | } | ||
| 546 | } | ||
| 547 | } | ||
| 548 | if (!cfp || !cfp->channel) { | ||
| 549 | dev_err(adapter->dev, "invalid channel/freq\n"); | ||
| 550 | return -1; | ||
| 551 | } | ||
| 552 | priv->adhoc_channel = (u8) cfp->channel; | ||
| 553 | chan->channel = cfp->channel; | ||
| 554 | chan->freq = cfp->freq; | ||
| 555 | |||
| 556 | return 0; | ||
| 557 | } | ||
| 558 | |||
| 559 | /* | ||
| 560 | * IOCTL request handler to set/get Ad-Hoc channel. | ||
| 561 | * | ||
| 562 | * This function prepares the correct firmware command and | ||
| 563 | * issues it to set or get the ad-hoc channel. | ||
| 564 | */ | ||
| 565 | static int mwifiex_bss_ioctl_ibss_channel(struct mwifiex_private *priv, | ||
| 566 | u16 action, u16 *channel) | ||
| 567 | { | ||
| 568 | if (action == HostCmd_ACT_GEN_GET) { | ||
| 569 | if (!priv->media_connected) { | ||
| 570 | *channel = priv->adhoc_channel; | ||
| 571 | return 0; | ||
| 572 | } | ||
| 573 | } else { | ||
| 574 | priv->adhoc_channel = (u8) *channel; | ||
| 575 | } | ||
| 576 | |||
| 577 | return mwifiex_send_cmd_sync(priv, HostCmd_CMD_802_11_RF_CHANNEL, | ||
| 578 | action, 0, channel); | ||
| 579 | } | ||
| 580 | |||
| 581 | /* | ||
| 582 | * IOCTL request handler to change Ad-Hoc channel. | ||
| 583 | * | ||
| 584 | * This function allocates the IOCTL request buffer, fills it | ||
| 585 | * with requisite parameters and calls the IOCTL handler. | ||
| 586 | * | ||
| 587 | * The function follows the following steps to perform the change - | ||
| 588 | * - Get current IBSS information | ||
| 589 | * - Get current channel | ||
| 590 | * - If no change is required, return | ||
| 591 | * - If not connected, change channel and return | ||
| 592 | * - If connected, | ||
| 593 | * - Disconnect | ||
| 594 | * - Change channel | ||
| 595 | * - Perform specific SSID scan with same SSID | ||
| 596 | * - Start/Join the IBSS | ||
| 597 | */ | ||
| 598 | int | ||
| 599 | mwifiex_drv_change_adhoc_chan(struct mwifiex_private *priv, u16 channel) | ||
| 600 | { | ||
| 601 | int ret; | ||
| 602 | struct mwifiex_bss_info bss_info; | ||
| 603 | struct mwifiex_ssid_bssid ssid_bssid; | ||
| 604 | u16 curr_chan = 0; | ||
| 605 | struct cfg80211_bss *bss = NULL; | ||
| 606 | struct ieee80211_channel *chan; | ||
| 607 | enum ieee80211_band band; | ||
| 608 | |||
| 609 | memset(&bss_info, 0, sizeof(bss_info)); | ||
| 610 | |||
| 611 | /* Get BSS information */ | ||
| 612 | if (mwifiex_get_bss_info(priv, &bss_info)) | ||
| 613 | return -1; | ||
| 614 | |||
| 615 | /* Get current channel */ | ||
| 616 | ret = mwifiex_bss_ioctl_ibss_channel(priv, HostCmd_ACT_GEN_GET, | ||
| 617 | &curr_chan); | ||
| 618 | |||
| 619 | if (curr_chan == channel) { | ||
| 620 | ret = 0; | ||
| 621 | goto done; | ||
| 622 | } | ||
| 623 | dev_dbg(priv->adapter->dev, "cmd: updating channel from %d to %d\n", | ||
| 624 | curr_chan, channel); | ||
| 625 | |||
| 626 | if (!bss_info.media_connected) { | ||
| 627 | ret = 0; | ||
| 628 | goto done; | ||
| 629 | } | ||
| 630 | |||
| 631 | /* Do disonnect */ | ||
| 632 | memset(&ssid_bssid, 0, ETH_ALEN); | ||
| 633 | ret = mwifiex_deauthenticate(priv, ssid_bssid.bssid); | ||
| 634 | |||
| 635 | ret = mwifiex_bss_ioctl_ibss_channel(priv, HostCmd_ACT_GEN_SET, | ||
| 636 | &channel); | ||
| 637 | |||
| 638 | /* Do specific SSID scanning */ | ||
| 639 | if (mwifiex_request_scan(priv, &bss_info.ssid)) { | ||
| 640 | ret = -1; | ||
| 641 | goto done; | ||
| 642 | } | ||
| 643 | |||
| 644 | band = mwifiex_band_to_radio_type(priv->curr_bss_params.band); | ||
| 645 | chan = __ieee80211_get_channel(priv->wdev->wiphy, | ||
| 646 | ieee80211_channel_to_frequency(channel, | ||
| 647 | band)); | ||
| 648 | |||
| 649 | /* Find the BSS we want using available scan results */ | ||
| 650 | bss = cfg80211_get_bss(priv->wdev->wiphy, chan, bss_info.bssid, | ||
| 651 | bss_info.ssid.ssid, bss_info.ssid.ssid_len, | ||
| 652 | WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS); | ||
| 653 | if (!bss) | ||
| 654 | wiphy_warn(priv->wdev->wiphy, "assoc: bss %pM not in scan results\n", | ||
| 655 | bss_info.bssid); | ||
| 656 | |||
| 657 | ret = mwifiex_bss_start(priv, bss, &bss_info.ssid); | ||
| 658 | done: | ||
| 659 | return ret; | ||
| 660 | } | ||
| 661 | |||
| 662 | /* | ||
| 663 | * IOCTL request handler to get rate. | 500 | * IOCTL request handler to get rate. |
| 664 | * | 501 | * |
| 665 | * This function prepares the correct firmware command and | 502 | * This function prepares the correct firmware command and |
