Lines Matching refs:adapter

17 static void mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter);
49 mwifiex_get_cmd_node(struct mwifiex_adapter *adapter)
53 spin_lock_bh(&adapter->cmd_free_q_lock);
54 if (list_empty(&adapter->cmd_free_q)) {
55 mwifiex_dbg(adapter, ERROR,
57 spin_unlock_bh(&adapter->cmd_free_q_lock);
60 cmd_node = list_first_entry(&adapter->cmd_free_q,
63 spin_unlock_bh(&adapter->cmd_free_q_lock);
80 mwifiex_clean_cmd_node(struct mwifiex_adapter *adapter,
92 adapter->if_ops.cmdrsp_complete(adapter, cmd_node->resp_skb);
104 mwifiex_insert_cmd_to_free_q(struct mwifiex_adapter *adapter,
111 mwifiex_complete_cmd(adapter, cmd_node);
113 mwifiex_clean_cmd_node(adapter, cmd_node);
116 spin_lock_bh(&adapter->cmd_free_q_lock);
117 list_add_tail(&cmd_node->list, &adapter->cmd_free_q);
118 spin_unlock_bh(&adapter->cmd_free_q_lock);
122 void mwifiex_recycle_cmd_node(struct mwifiex_adapter *adapter,
127 mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
129 atomic_dec(&adapter->cmd_pending);
130 mwifiex_dbg(adapter, CMD,
133 atomic_read(&adapter->cmd_pending));
149 mwifiex_dbg(priv->adapter, CMD,
166 struct mwifiex_adapter *adapter = priv->adapter;
172 if (!adapter || !cmd_node)
179 mwifiex_dbg(adapter, ERROR,
183 adapter->cmd_wait_q.status = -1;
184 mwifiex_recycle_cmd_node(adapter, cmd_node);
192 if (adapter->hw_status == MWIFIEX_HW_STATUS_RESET &&
195 mwifiex_dbg(adapter, ERROR,
198 mwifiex_recycle_cmd_node(adapter, cmd_node);
199 queue_work(adapter->workqueue, &adapter->main_work);
204 adapter->seq_num++;
206 (adapter->seq_num,
210 spin_lock_bh(&adapter->mwifiex_cmd_lock);
211 adapter->curr_cmd = cmd_node;
212 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
229 mwifiex_dbg(adapter, CMD,
234 mwifiex_dbg_dump(adapter, CMD_D, "cmd buffer:", host_cmd, cmd_size);
236 if (adapter->iface_type == MWIFIEX_USB) {
240 adapter->cmd_sent = true;
241 ret = adapter->if_ops.host_to_card(adapter,
248 skb_push(cmd_node->cmd_skb, adapter->intf_hdr_len);
249 ret = adapter->if_ops.host_to_card(adapter, MWIFIEX_TYPE_CMD,
251 skb_pull(cmd_node->cmd_skb, adapter->intf_hdr_len);
255 mwifiex_dbg(adapter, ERROR,
257 if (adapter->iface_type == MWIFIEX_USB)
258 adapter->cmd_sent = false;
260 adapter->cmd_wait_q.status = -1;
261 mwifiex_recycle_cmd_node(adapter, adapter->curr_cmd);
263 spin_lock_bh(&adapter->mwifiex_cmd_lock);
264 adapter->curr_cmd = NULL;
265 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
267 adapter->dbg.num_cmd_host_to_card_failure++;
272 adapter->dbg.last_cmd_index =
273 (adapter->dbg.last_cmd_index + 1) % DBG_CMD_NUM;
274 adapter->dbg.last_cmd_id[adapter->dbg.last_cmd_index] = cmd_code;
275 adapter->dbg.last_cmd_act[adapter->dbg.last_cmd_index] =
282 mod_timer(&adapter->cmd_timer,
300 static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter)
306 adapter->sleep_cfm->data;
309 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
311 adapter->seq_num++;
314 (adapter->seq_num, priv->bss_num,
317 mwifiex_dbg(adapter, CMD,
323 mwifiex_dbg_dump(adapter, CMD_D, "SLEEP_CFM buffer: ", sleep_cfm_buf,
326 if (adapter->iface_type == MWIFIEX_USB) {
331 mwifiex_dbg(adapter, ERROR,
340 adapter->sleep_cfm->data,
342 ret = adapter->if_ops.host_to_card(adapter,
348 skb_push(adapter->sleep_cfm, adapter->intf_hdr_len);
349 ret = adapter->if_ops.host_to_card(adapter, MWIFIEX_TYPE_CMD,
350 adapter->sleep_cfm, NULL);
351 skb_pull(adapter->sleep_cfm, adapter->intf_hdr_len);
355 mwifiex_dbg(adapter, ERROR, "SLEEP_CFM: failed\n");
356 adapter->dbg.num_cmd_sleep_cfm_host_to_card_failure++;
362 adapter->ps_state = PS_STATE_SLEEP;
364 adapter->ps_state = PS_STATE_SLEEP_CFM;
367 (test_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags) &&
368 !adapter->sleep_period.period)) {
369 adapter->pm_wakeup_card_req = true;
371 (adapter, MWIFIEX_BSS_ROLE_ANY), true);
389 int mwifiex_alloc_cmd_buffer(struct mwifiex_adapter *adapter)
400 adapter->cmd_pool = cmd_array;
406 mwifiex_dbg(adapter, ERROR,
413 mwifiex_insert_cmd_to_free_q(adapter, &cmd_array[i]);
424 void mwifiex_free_cmd_buffer(struct mwifiex_adapter *adapter)
430 if (!adapter->cmd_pool) {
431 mwifiex_dbg(adapter, FATAL,
436 cmd_array = adapter->cmd_pool;
441 mwifiex_dbg(adapter, CMD,
448 if (adapter->iface_type == MWIFIEX_USB)
449 adapter->if_ops.cmdrsp_complete(adapter,
455 if (adapter->cmd_pool) {
456 mwifiex_dbg(adapter, CMD,
458 kfree(adapter->cmd_pool);
459 adapter->cmd_pool = NULL;
473 int mwifiex_process_event(struct mwifiex_adapter *adapter)
477 mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
478 struct sk_buff *skb = adapter->event_skb;
482 if ((adapter->event_cause & EVENT_ID_MASK) == EVENT_RADAR_DETECTED) {
483 for (i = 0; i < adapter->priv_num; i++) {
484 priv = adapter->priv[i];
486 adapter->event_cause |=
494 eventcause = adapter->event_cause;
497 adapter->dbg.last_event_index =
498 (adapter->dbg.last_event_index + 1) % DBG_CMD_NUM;
499 adapter->dbg.last_event[adapter->dbg.last_event_index] =
503 priv = mwifiex_get_priv_by_id(adapter, EVENT_GET_BSS_NUM(eventcause),
506 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
510 adapter->event_cause = eventcause;
517 mwifiex_dbg_dump(adapter, EVT_D, "Event Buf:",
521 mwifiex_dbg(adapter, EVENT, "EVENT: cause: %#x\n", eventcause);
528 adapter->event_cause = 0;
529 adapter->event_skb = NULL;
530 adapter->if_ops.event_complete(adapter, skb);
550 struct mwifiex_adapter *adapter = priv->adapter;
554 if (!adapter) {
555 pr_err("PREP_CMD: adapter is NULL\n");
559 if (test_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags)) {
560 mwifiex_dbg(adapter, ERROR,
565 if (test_bit(MWIFIEX_IS_HS_ENABLING, &adapter->work_flags) &&
567 mwifiex_dbg(adapter, ERROR,
572 if (test_bit(MWIFIEX_SURPRISE_REMOVED, &adapter->work_flags)) {
573 mwifiex_dbg(adapter, ERROR,
578 if (test_bit(MWIFIEX_IS_CMD_TIMEDOUT, &adapter->work_flags)) {
579 mwifiex_dbg(adapter, ERROR,
584 if (adapter->hw_status == MWIFIEX_HW_STATUS_RESET) {
586 mwifiex_dbg(adapter, ERROR,
594 if (adapter->mfg_mode && cmd_no) {
595 dev_dbg(adapter->dev, "Ignoring commands in manufacturing mode\n");
599 if (priv->adapter->hs_activated_manually &&
602 priv->adapter->hs_activated_manually = false;
606 cmd_node = mwifiex_get_cmd_node(adapter);
609 mwifiex_dbg(adapter, ERROR,
618 mwifiex_dbg(adapter, ERROR,
655 mwifiex_dbg(adapter, ERROR,
658 mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
667 mwifiex_insert_cmd_to_pending_q(adapter, cmd_node);
668 queue_work(adapter->workqueue, &adapter->main_work);
670 ret = mwifiex_wait_queue_complete(adapter, cmd_node);
684 mwifiex_insert_cmd_to_pending_q(struct mwifiex_adapter *adapter,
693 mwifiex_dbg(adapter, ERROR, "QUEUE_CMD: host_cmd is NULL\n");
705 if (adapter->ps_state != PS_STATE_AWAKE)
719 spin_lock_bh(&adapter->cmd_pending_q_lock);
721 list_add_tail(&cmd_node->list, &adapter->cmd_pending_q);
723 list_add(&cmd_node->list, &adapter->cmd_pending_q);
724 spin_unlock_bh(&adapter->cmd_pending_q_lock);
726 atomic_inc(&adapter->cmd_pending);
727 mwifiex_dbg(adapter, CMD,
729 command, atomic_read(&adapter->cmd_pending));
743 int mwifiex_exec_next_cmd(struct mwifiex_adapter *adapter)
751 if (adapter->curr_cmd) {
752 mwifiex_dbg(adapter, FATAL,
757 spin_lock_bh(&adapter->mwifiex_cmd_lock);
759 spin_lock_bh(&adapter->cmd_pending_q_lock);
760 if (list_empty(&adapter->cmd_pending_q)) {
761 spin_unlock_bh(&adapter->cmd_pending_q_lock);
762 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
765 cmd_node = list_first_entry(&adapter->cmd_pending_q,
771 if (adapter->ps_state != PS_STATE_AWAKE) {
772 mwifiex_dbg(adapter, ERROR,
775 spin_unlock_bh(&adapter->cmd_pending_q_lock);
776 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
781 spin_unlock_bh(&adapter->cmd_pending_q_lock);
783 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
785 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
792 if (adapter->hs_activated) {
794 &adapter->work_flags);
808 int mwifiex_process_cmdresp(struct mwifiex_adapter *adapter)
812 mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
818 if (!adapter->curr_cmd || !adapter->curr_cmd->resp_skb) {
819 resp = (struct host_cmd_ds_command *) adapter->upld_buf;
820 mwifiex_dbg(adapter, ERROR,
826 resp = (struct host_cmd_ds_command *)adapter->curr_cmd->resp_skb->data;
830 if (adapter->curr_cmd->cmd_no != cmdresp_no) {
831 mwifiex_dbg(adapter, ERROR,
833 adapter->curr_cmd->cmd_no, cmdresp_no);
837 del_timer_sync(&adapter->cmd_timer);
838 clear_bit(MWIFIEX_IS_CMD_TIMEDOUT, &adapter->work_flags);
840 if (adapter->curr_cmd->cmd_flag & CMD_F_HOSTCMD) {
844 mwifiex_dbg(adapter, INFO,
847 if (adapter->curr_cmd->data_buf) {
848 hostcmd = adapter->curr_cmd->data_buf;
855 priv = mwifiex_get_priv_by_id(adapter,
859 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
867 adapter->dbg.last_cmd_resp_index =
868 (adapter->dbg.last_cmd_resp_index + 1) % DBG_CMD_NUM;
869 adapter->dbg.last_cmd_resp_id[adapter->dbg.last_cmd_resp_index] =
872 mwifiex_dbg(adapter, CMD,
876 mwifiex_dbg_dump(adapter, CMD_D, "CMD_RESP buffer:", resp,
880 mwifiex_dbg(adapter, ERROR, "CMD_RESP: invalid cmd resp\n");
881 if (adapter->curr_cmd->wait_q_enabled)
882 adapter->cmd_wait_q.status = -1;
884 mwifiex_recycle_cmd_node(adapter, adapter->curr_cmd);
885 spin_lock_bh(&adapter->mwifiex_cmd_lock);
886 adapter->curr_cmd = NULL;
887 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
891 if (adapter->curr_cmd->cmd_flag & CMD_F_HOSTCMD) {
892 adapter->curr_cmd->cmd_flag &= ~CMD_F_HOSTCMD;
902 if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING) {
904 mwifiex_dbg(adapter, ERROR,
907 mwifiex_init_fw_complete(adapter);
909 } else if (adapter->last_init_cmd == cmdresp_no)
910 adapter->hw_status = MWIFIEX_HW_STATUS_INIT_DONE;
913 if (adapter->curr_cmd) {
914 if (adapter->curr_cmd->wait_q_enabled)
915 adapter->cmd_wait_q.status = ret;
917 mwifiex_recycle_cmd_node(adapter, adapter->curr_cmd);
919 spin_lock_bh(&adapter->mwifiex_cmd_lock);
920 adapter->curr_cmd = NULL;
921 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
935 struct mwifiex_adapter *adapter = from_timer(adapter, t, cmd_timer);
938 set_bit(MWIFIEX_IS_CMD_TIMEDOUT, &adapter->work_flags);
939 if (!adapter->curr_cmd) {
940 mwifiex_dbg(adapter, ERROR,
944 cmd_node = adapter->curr_cmd;
946 adapter->dbg.timeout_cmd_id =
947 adapter->dbg.last_cmd_id[adapter->dbg.last_cmd_index];
948 adapter->dbg.timeout_cmd_act =
949 adapter->dbg.last_cmd_act[adapter->dbg.last_cmd_index];
950 mwifiex_dbg(adapter, MSG,
952 adapter->dbg.timeout_cmd_id,
953 adapter->dbg.timeout_cmd_act);
955 mwifiex_dbg(adapter, MSG,
957 adapter->dbg.num_tx_host_to_card_failure);
958 mwifiex_dbg(adapter, MSG,
960 adapter->dbg.num_cmd_host_to_card_failure);
962 mwifiex_dbg(adapter, MSG,
965 &adapter->work_flags));
966 mwifiex_dbg(adapter, MSG,
968 adapter->dbg.num_tx_timeout);
970 mwifiex_dbg(adapter, MSG,
972 adapter->dbg.last_cmd_index);
973 mwifiex_dbg(adapter, MSG,
975 (int)sizeof(adapter->dbg.last_cmd_id),
976 adapter->dbg.last_cmd_id);
977 mwifiex_dbg(adapter, MSG,
979 (int)sizeof(adapter->dbg.last_cmd_act),
980 adapter->dbg.last_cmd_act);
982 mwifiex_dbg(adapter, MSG,
984 adapter->dbg.last_cmd_resp_index);
985 mwifiex_dbg(adapter, MSG,
987 (int)sizeof(adapter->dbg.last_cmd_resp_id),
988 adapter->dbg.last_cmd_resp_id);
990 mwifiex_dbg(adapter, MSG,
992 adapter->dbg.last_event_index);
993 mwifiex_dbg(adapter, MSG,
995 (int)sizeof(adapter->dbg.last_event),
996 adapter->dbg.last_event);
998 mwifiex_dbg(adapter, MSG,
1000 adapter->data_sent, adapter->cmd_sent);
1002 mwifiex_dbg(adapter, MSG,
1004 adapter->ps_mode, adapter->ps_state);
1007 adapter->cmd_wait_q.status = -ETIMEDOUT;
1008 mwifiex_cancel_pending_ioctl(adapter);
1011 if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING) {
1012 mwifiex_init_fw_complete(adapter);
1016 if (adapter->if_ops.device_dump)
1017 adapter->if_ops.device_dump(adapter);
1019 if (adapter->if_ops.card_reset)
1020 adapter->if_ops.card_reset(adapter);
1024 mwifiex_cancel_pending_scan_cmd(struct mwifiex_adapter *adapter)
1029 spin_lock_bh(&adapter->scan_pending_q_lock);
1031 &adapter->scan_pending_q, list) {
1034 mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
1036 spin_unlock_bh(&adapter->scan_pending_q_lock);
1047 mwifiex_cancel_all_pending_cmd(struct mwifiex_adapter *adapter)
1051 spin_lock_bh(&adapter->mwifiex_cmd_lock);
1053 if ((adapter->curr_cmd) && (adapter->curr_cmd->wait_q_enabled)) {
1054 adapter->cmd_wait_q.status = -1;
1055 mwifiex_complete_cmd(adapter, adapter->curr_cmd);
1056 adapter->curr_cmd->wait_q_enabled = false;
1060 spin_lock_bh(&adapter->cmd_pending_q_lock);
1062 &adapter->cmd_pending_q, list) {
1066 adapter->cmd_wait_q.status = -1;
1067 mwifiex_recycle_cmd_node(adapter, cmd_node);
1069 spin_unlock_bh(&adapter->cmd_pending_q_lock);
1070 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
1072 mwifiex_cancel_scan(adapter);
1086 mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter)
1090 if ((adapter->curr_cmd) &&
1091 (adapter->curr_cmd->wait_q_enabled)) {
1092 spin_lock_bh(&adapter->mwifiex_cmd_lock);
1093 cmd_node = adapter->curr_cmd;
1102 adapter->curr_cmd = NULL;
1103 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
1105 mwifiex_recycle_cmd_node(adapter, cmd_node);
1108 mwifiex_cancel_scan(adapter);
1121 mwifiex_check_ps_cond(struct mwifiex_adapter *adapter)
1123 if (!adapter->cmd_sent && !atomic_read(&adapter->tx_hw_pending) &&
1124 !adapter->curr_cmd && !IS_CARD_RX_RCVD(adapter))
1125 mwifiex_dnld_sleep_confirm_cmd(adapter);
1127 mwifiex_dbg(adapter, CMD,
1129 (adapter->cmd_sent) ? "D" : "",
1130 atomic_read(&adapter->tx_hw_pending) ? "T" : "",
1131 (adapter->curr_cmd) ? "C" : "",
1132 (IS_CARD_RX_RCVD(adapter)) ? "R" : "");
1145 &priv->adapter->work_flags)) {
1146 priv->adapter->hs_activated = true;
1147 mwifiex_update_rxreor_flags(priv->adapter,
1149 mwifiex_dbg(priv->adapter, EVENT,
1151 priv->adapter->hs_activate_wait_q_woken = true;
1153 &priv->adapter->hs_activate_wait_q);
1155 mwifiex_dbg(priv->adapter, EVENT,
1159 mwifiex_dbg(priv->adapter, EVENT,
1161 priv->adapter->hs_activated = false;
1178 struct mwifiex_adapter *adapter = priv->adapter;
1184 adapter->iface_type != MWIFIEX_USB) {
1188 mwifiex_dbg(adapter, CMD,
1196 set_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags);
1197 if (adapter->iface_type == MWIFIEX_USB)
1200 clear_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags);
1201 if (adapter->hs_activated)
1209 * This function wakes up the adapter and generates a Host Sleep
1213 mwifiex_process_hs_config(struct mwifiex_adapter *adapter)
1215 mwifiex_dbg(adapter, INFO,
1220 adapter->if_ops.wakeup(adapter);
1222 if (adapter->hs_activated_manually) {
1223 mwifiex_cancel_hs(mwifiex_get_priv (adapter, MWIFIEX_BSS_ROLE_ANY),
1225 adapter->hs_activated_manually = false;
1228 adapter->hs_activated = false;
1229 clear_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags);
1230 clear_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags);
1231 mwifiex_hs_activated_event(mwifiex_get_priv(adapter,
1243 mwifiex_process_sleep_confirm_resp(struct mwifiex_adapter *adapter,
1252 mwifiex_dbg(adapter, ERROR,
1257 mwifiex_dbg(adapter, CMD,
1267 mwifiex_dbg(adapter, ERROR,
1274 mwifiex_dbg(adapter, ERROR,
1277 adapter->pm_wakeup_card_req = false;
1278 adapter->ps_state = PS_STATE_AWAKE;
1281 adapter->pm_wakeup_card_req = true;
1282 if (test_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags))
1284 (adapter, MWIFIEX_BSS_ROLE_ANY),
1286 adapter->ps_state = PS_STATE_SLEEP;
1332 struct mwifiex_adapter *adapter = priv->adapter;
1341 mwifiex_dbg(priv->adapter, CMD,
1344 cpu_to_le16(adapter->null_pkt_interval);
1346 cpu_to_le16(adapter->multiple_dtim);
1348 cpu_to_le16(adapter->bcn_miss_time_out);
1350 cpu_to_le16(adapter->local_listen_interval);
1352 cpu_to_le16(adapter->adhoc_awake_period);
1354 cpu_to_le16(adapter->delay_to_ps);
1355 ps_mode->mode = cpu_to_le16(adapter->enhanced_ps_mode);
1372 mwifiex_dbg(priv->adapter, CMD,
1392 struct mwifiex_adapter *adapter = priv->adapter;
1400 mwifiex_dbg(adapter, INFO,
1405 mwifiex_dbg(adapter, CMD,
1407 priv->adapter->is_deep_sleep = true;
1410 mwifiex_dbg(adapter, CMD,
1412 if (adapter->sleep_period.period)
1413 mwifiex_dbg(adapter, CMD,
1418 priv->adapter->is_deep_sleep = false;
1419 mwifiex_dbg(adapter, CMD,
1423 mwifiex_dbg(adapter, CMD,
1425 if (adapter->sleep_period.period) {
1426 adapter->delay_null_pkt = false;
1427 adapter->tx_lock_flag = false;
1428 adapter->pps_uapsd_mode = false;
1433 adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_PSP;
1435 adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_CAM;
1437 mwifiex_dbg(adapter, CMD,
1496 struct mwifiex_adapter *adapter = priv->adapter;
1503 adapter->fw_cap_info = le32_to_cpu(hw_spec->fw_cap_info);
1505 if (IS_SUPPORT_MULTI_BANDS(adapter))
1506 adapter->fw_bands = (u8) GET_FW_DEFAULT_BANDS(adapter);
1508 adapter->fw_bands = BAND_B;
1510 adapter->config_bands = adapter->fw_bands;
1512 if (adapter->fw_bands & BAND_A) {
1513 if (adapter->fw_bands & BAND_GN) {
1514 adapter->config_bands |= BAND_AN;
1515 adapter->fw_bands |= BAND_AN;
1517 if (adapter->fw_bands & BAND_AN) {
1518 adapter->adhoc_start_band = BAND_A | BAND_AN;
1519 adapter->adhoc_11n_enabled = true;
1521 adapter->adhoc_start_band = BAND_A;
1524 } else if (adapter->fw_bands & BAND_GN) {
1525 adapter->adhoc_start_band = BAND_G | BAND_B | BAND_GN;
1527 adapter->adhoc_11n_enabled = true;
1528 } else if (adapter->fw_bands & BAND_G) {
1529 adapter->adhoc_start_band = BAND_G | BAND_B;
1531 } else if (adapter->fw_bands & BAND_B) {
1532 adapter->adhoc_start_band = BAND_B;
1536 adapter->fw_release_number = le32_to_cpu(hw_spec->fw_release_number);
1537 adapter->fw_api_ver = (adapter->fw_release_number >> 16) & 0xff;
1538 adapter->number_of_antenna =
1542 adapter->is_hw_11ac_capable = true;
1545 adapter->hw_dot_11ac_dev_cap =
1547 adapter->usr_dot_11ac_dev_cap_bg = adapter->hw_dot_11ac_dev_cap
1549 adapter->usr_dot_11ac_dev_cap_a = adapter->hw_dot_11ac_dev_cap
1553 adapter->hw_dot_11ac_mcs_support =
1555 adapter->usr_dot_11ac_mcs_support =
1556 adapter->hw_dot_11ac_mcs_support;
1558 adapter->is_hw_11ac_capable = false;
1573 adapter->key_api_major_ver =
1575 adapter->key_api_minor_ver =
1577 mwifiex_dbg(adapter, INFO,
1579 adapter->key_api_major_ver,
1580 adapter->key_api_minor_ver);
1583 adapter->fw_api_ver =
1585 mwifiex_dbg(adapter, INFO,
1587 adapter->fw_api_ver,
1591 mwifiex_dbg(adapter, INFO,
1597 mwifiex_dbg(adapter, INFO,
1603 mwifiex_dbg(adapter, INFO,
1608 mwifiex_dbg(adapter, FATAL,
1616 adapter->max_p2p_conn = max_conn->max_p2p_conn;
1617 adapter->max_sta_conn = max_conn->max_sta_conn;
1618 mwifiex_dbg(adapter, INFO,
1620 adapter->max_p2p_conn);
1621 mwifiex_dbg(adapter, INFO,
1623 adapter->max_sta_conn);
1626 mwifiex_dbg(adapter, FATAL,
1638 mwifiex_dbg(adapter, INFO,
1640 adapter->fw_release_number);
1641 mwifiex_dbg(adapter, INFO,
1644 mwifiex_dbg(adapter, INFO,
1649 ether_addr_copy(priv->adapter->perm_addr, hw_spec->permanent_addr);
1650 adapter->region_code = le16_to_cpu(hw_spec->region_code);
1654 if (adapter->region_code == region_code_index[i])
1659 adapter->region_code = 0x00;
1660 mwifiex_dbg(adapter, WARN,
1664 adapter->hw_dot_11n_dev_cap = le32_to_cpu(hw_spec->dot_11n_dev_cap);
1665 adapter->hw_dev_mcs_support = hw_spec->dev_mcs_support;
1666 adapter->user_dev_mcs_support = adapter->hw_dev_mcs_support;
1668 if (adapter->if_ops.update_mp_end_port)
1669 adapter->if_ops.update_mp_end_port(adapter,
1672 if (adapter->fw_api_ver == MWIFIEX_FW_V15)
1673 adapter->scan_chan_gap_enabled = true;