Lines Matching refs:adapter
29 static void mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter);
61 mwifiex_get_cmd_node(struct mwifiex_adapter *adapter)
65 spin_lock_bh(&adapter->cmd_free_q_lock);
66 if (list_empty(&adapter->cmd_free_q)) {
67 mwifiex_dbg(adapter, ERROR,
69 spin_unlock_bh(&adapter->cmd_free_q_lock);
72 cmd_node = list_first_entry(&adapter->cmd_free_q,
75 spin_unlock_bh(&adapter->cmd_free_q_lock);
92 mwifiex_clean_cmd_node(struct mwifiex_adapter *adapter,
104 adapter->if_ops.cmdrsp_complete(adapter, cmd_node->resp_skb);
116 mwifiex_insert_cmd_to_free_q(struct mwifiex_adapter *adapter,
123 mwifiex_complete_cmd(adapter, cmd_node);
125 mwifiex_clean_cmd_node(adapter, cmd_node);
128 spin_lock_bh(&adapter->cmd_free_q_lock);
129 list_add_tail(&cmd_node->list, &adapter->cmd_free_q);
130 spin_unlock_bh(&adapter->cmd_free_q_lock);
134 void mwifiex_recycle_cmd_node(struct mwifiex_adapter *adapter,
139 mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
141 atomic_dec(&adapter->cmd_pending);
142 mwifiex_dbg(adapter, CMD,
145 atomic_read(&adapter->cmd_pending));
161 mwifiex_dbg(priv->adapter, CMD,
178 struct mwifiex_adapter *adapter = priv->adapter;
184 if (!adapter || !cmd_node)
191 mwifiex_dbg(adapter, ERROR,
195 adapter->cmd_wait_q.status = -1;
196 mwifiex_recycle_cmd_node(adapter, cmd_node);
204 if (adapter->hw_status == MWIFIEX_HW_STATUS_RESET &&
207 mwifiex_dbg(adapter, ERROR,
210 mwifiex_recycle_cmd_node(adapter, cmd_node);
211 queue_work(adapter->workqueue, &adapter->main_work);
216 adapter->seq_num++;
218 (adapter->seq_num,
222 spin_lock_bh(&adapter->mwifiex_cmd_lock);
223 adapter->curr_cmd = cmd_node;
224 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
241 mwifiex_dbg(adapter, CMD,
246 mwifiex_dbg_dump(adapter, CMD_D, "cmd buffer:", host_cmd, cmd_size);
248 if (adapter->iface_type == MWIFIEX_USB) {
252 adapter->cmd_sent = true;
253 ret = adapter->if_ops.host_to_card(adapter,
260 skb_push(cmd_node->cmd_skb, adapter->intf_hdr_len);
261 ret = adapter->if_ops.host_to_card(adapter, MWIFIEX_TYPE_CMD,
263 skb_pull(cmd_node->cmd_skb, adapter->intf_hdr_len);
267 mwifiex_dbg(adapter, ERROR,
269 if (adapter->iface_type == MWIFIEX_USB)
270 adapter->cmd_sent = false;
272 adapter->cmd_wait_q.status = -1;
273 mwifiex_recycle_cmd_node(adapter, adapter->curr_cmd);
275 spin_lock_bh(&adapter->mwifiex_cmd_lock);
276 adapter->curr_cmd = NULL;
277 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
279 adapter->dbg.num_cmd_host_to_card_failure++;
284 adapter->dbg.last_cmd_index =
285 (adapter->dbg.last_cmd_index + 1) % DBG_CMD_NUM;
286 adapter->dbg.last_cmd_id[adapter->dbg.last_cmd_index] = cmd_code;
287 adapter->dbg.last_cmd_act[adapter->dbg.last_cmd_index] =
294 mod_timer(&adapter->cmd_timer,
312 static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter)
318 adapter->sleep_cfm->data;
321 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
323 adapter->seq_num++;
326 (adapter->seq_num, priv->bss_num,
329 mwifiex_dbg(adapter, CMD,
335 mwifiex_dbg_dump(adapter, CMD_D, "SLEEP_CFM buffer: ", sleep_cfm_buf,
338 if (adapter->iface_type == MWIFIEX_USB) {
343 mwifiex_dbg(adapter, ERROR,
352 adapter->sleep_cfm->data,
354 ret = adapter->if_ops.host_to_card(adapter,
360 skb_push(adapter->sleep_cfm, adapter->intf_hdr_len);
361 ret = adapter->if_ops.host_to_card(adapter, MWIFIEX_TYPE_CMD,
362 adapter->sleep_cfm, NULL);
363 skb_pull(adapter->sleep_cfm, adapter->intf_hdr_len);
367 mwifiex_dbg(adapter, ERROR, "SLEEP_CFM: failed\n");
368 adapter->dbg.num_cmd_sleep_cfm_host_to_card_failure++;
374 adapter->ps_state = PS_STATE_SLEEP;
376 adapter->ps_state = PS_STATE_SLEEP_CFM;
379 (test_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags) &&
380 !adapter->sleep_period.period)) {
381 adapter->pm_wakeup_card_req = true;
383 (adapter, MWIFIEX_BSS_ROLE_ANY), true);
401 int mwifiex_alloc_cmd_buffer(struct mwifiex_adapter *adapter)
412 adapter->cmd_pool = cmd_array;
418 mwifiex_dbg(adapter, ERROR,
425 mwifiex_insert_cmd_to_free_q(adapter, &cmd_array[i]);
436 void mwifiex_free_cmd_buffer(struct mwifiex_adapter *adapter)
442 if (!adapter->cmd_pool) {
443 mwifiex_dbg(adapter, FATAL,
448 cmd_array = adapter->cmd_pool;
453 mwifiex_dbg(adapter, CMD,
460 if (adapter->iface_type == MWIFIEX_USB)
461 adapter->if_ops.cmdrsp_complete(adapter,
467 if (adapter->cmd_pool) {
468 mwifiex_dbg(adapter, CMD,
470 kfree(adapter->cmd_pool);
471 adapter->cmd_pool = NULL;
485 int mwifiex_process_event(struct mwifiex_adapter *adapter)
489 mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
490 struct sk_buff *skb = adapter->event_skb;
494 if ((adapter->event_cause & EVENT_ID_MASK) == EVENT_RADAR_DETECTED) {
495 for (i = 0; i < adapter->priv_num; i++) {
496 priv = adapter->priv[i];
498 adapter->event_cause |=
506 eventcause = adapter->event_cause;
509 adapter->dbg.last_event_index =
510 (adapter->dbg.last_event_index + 1) % DBG_CMD_NUM;
511 adapter->dbg.last_event[adapter->dbg.last_event_index] =
515 priv = mwifiex_get_priv_by_id(adapter, EVENT_GET_BSS_NUM(eventcause),
518 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
522 adapter->event_cause = eventcause;
529 mwifiex_dbg_dump(adapter, EVT_D, "Event Buf:",
533 mwifiex_dbg(adapter, EVENT, "EVENT: cause: %#x\n", eventcause);
540 adapter->event_cause = 0;
541 adapter->event_skb = NULL;
542 adapter->if_ops.event_complete(adapter, skb);
562 struct mwifiex_adapter *adapter = priv->adapter;
566 if (!adapter) {
567 pr_err("PREP_CMD: adapter is NULL\n");
571 if (test_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags)) {
572 mwifiex_dbg(adapter, ERROR,
577 if (test_bit(MWIFIEX_IS_HS_ENABLING, &adapter->work_flags) &&
579 mwifiex_dbg(adapter, ERROR,
584 if (test_bit(MWIFIEX_SURPRISE_REMOVED, &adapter->work_flags)) {
585 mwifiex_dbg(adapter, ERROR,
590 if (test_bit(MWIFIEX_IS_CMD_TIMEDOUT, &adapter->work_flags)) {
591 mwifiex_dbg(adapter, ERROR,
596 if (adapter->hw_status == MWIFIEX_HW_STATUS_RESET) {
598 mwifiex_dbg(adapter, ERROR,
606 if (adapter->mfg_mode && cmd_no) {
607 dev_dbg(adapter->dev, "Ignoring commands in manufacturing mode\n");
613 cmd_node = mwifiex_get_cmd_node(adapter);
616 mwifiex_dbg(adapter, ERROR,
625 mwifiex_dbg(adapter, ERROR,
662 mwifiex_dbg(adapter, ERROR,
665 mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
674 mwifiex_insert_cmd_to_pending_q(adapter, cmd_node);
675 queue_work(adapter->workqueue, &adapter->main_work);
677 ret = mwifiex_wait_queue_complete(adapter, cmd_node);
691 mwifiex_insert_cmd_to_pending_q(struct mwifiex_adapter *adapter,
700 mwifiex_dbg(adapter, ERROR, "QUEUE_CMD: host_cmd is NULL\n");
712 if (adapter->ps_state != PS_STATE_AWAKE)
717 spin_lock_bh(&adapter->cmd_pending_q_lock);
719 list_add_tail(&cmd_node->list, &adapter->cmd_pending_q);
721 list_add(&cmd_node->list, &adapter->cmd_pending_q);
722 spin_unlock_bh(&adapter->cmd_pending_q_lock);
724 atomic_inc(&adapter->cmd_pending);
725 mwifiex_dbg(adapter, CMD,
727 command, atomic_read(&adapter->cmd_pending));
741 int mwifiex_exec_next_cmd(struct mwifiex_adapter *adapter)
749 if (adapter->curr_cmd) {
750 mwifiex_dbg(adapter, FATAL,
755 spin_lock_bh(&adapter->mwifiex_cmd_lock);
757 spin_lock_bh(&adapter->cmd_pending_q_lock);
758 if (list_empty(&adapter->cmd_pending_q)) {
759 spin_unlock_bh(&adapter->cmd_pending_q_lock);
760 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
763 cmd_node = list_first_entry(&adapter->cmd_pending_q,
769 if (adapter->ps_state != PS_STATE_AWAKE) {
770 mwifiex_dbg(adapter, ERROR,
773 spin_unlock_bh(&adapter->cmd_pending_q_lock);
774 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
779 spin_unlock_bh(&adapter->cmd_pending_q_lock);
781 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
783 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
790 if (adapter->hs_activated) {
792 &adapter->work_flags);
806 int mwifiex_process_cmdresp(struct mwifiex_adapter *adapter)
810 mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
816 if (!adapter->curr_cmd || !adapter->curr_cmd->resp_skb) {
817 resp = (struct host_cmd_ds_command *) adapter->upld_buf;
818 mwifiex_dbg(adapter, ERROR,
824 resp = (struct host_cmd_ds_command *)adapter->curr_cmd->resp_skb->data;
828 if (adapter->curr_cmd->cmd_no != cmdresp_no) {
829 mwifiex_dbg(adapter, ERROR,
831 adapter->curr_cmd->cmd_no, cmdresp_no);
835 del_timer_sync(&adapter->cmd_timer);
836 clear_bit(MWIFIEX_IS_CMD_TIMEDOUT, &adapter->work_flags);
838 if (adapter->curr_cmd->cmd_flag & CMD_F_HOSTCMD) {
842 mwifiex_dbg(adapter, INFO,
845 if (adapter->curr_cmd->data_buf) {
846 hostcmd = adapter->curr_cmd->data_buf;
853 priv = mwifiex_get_priv_by_id(adapter,
857 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
865 adapter->dbg.last_cmd_resp_index =
866 (adapter->dbg.last_cmd_resp_index + 1) % DBG_CMD_NUM;
867 adapter->dbg.last_cmd_resp_id[adapter->dbg.last_cmd_resp_index] =
870 mwifiex_dbg(adapter, CMD,
874 mwifiex_dbg_dump(adapter, CMD_D, "CMD_RESP buffer:", resp,
878 mwifiex_dbg(adapter, ERROR, "CMD_RESP: invalid cmd resp\n");
879 if (adapter->curr_cmd->wait_q_enabled)
880 adapter->cmd_wait_q.status = -1;
882 mwifiex_recycle_cmd_node(adapter, adapter->curr_cmd);
883 spin_lock_bh(&adapter->mwifiex_cmd_lock);
884 adapter->curr_cmd = NULL;
885 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
889 if (adapter->curr_cmd->cmd_flag & CMD_F_HOSTCMD) {
890 adapter->curr_cmd->cmd_flag &= ~CMD_F_HOSTCMD;
900 if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING) {
902 mwifiex_dbg(adapter, ERROR,
905 mwifiex_init_fw_complete(adapter);
907 } else if (adapter->last_init_cmd == cmdresp_no)
908 adapter->hw_status = MWIFIEX_HW_STATUS_INIT_DONE;
911 if (adapter->curr_cmd) {
912 if (adapter->curr_cmd->wait_q_enabled)
913 adapter->cmd_wait_q.status = ret;
915 mwifiex_recycle_cmd_node(adapter, adapter->curr_cmd);
917 spin_lock_bh(&adapter->mwifiex_cmd_lock);
918 adapter->curr_cmd = NULL;
919 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
933 struct mwifiex_adapter *adapter = from_timer(adapter, t, cmd_timer);
936 set_bit(MWIFIEX_IS_CMD_TIMEDOUT, &adapter->work_flags);
937 if (!adapter->curr_cmd) {
938 mwifiex_dbg(adapter, ERROR,
942 cmd_node = adapter->curr_cmd;
944 adapter->dbg.timeout_cmd_id =
945 adapter->dbg.last_cmd_id[adapter->dbg.last_cmd_index];
946 adapter->dbg.timeout_cmd_act =
947 adapter->dbg.last_cmd_act[adapter->dbg.last_cmd_index];
948 mwifiex_dbg(adapter, MSG,
950 adapter->dbg.timeout_cmd_id,
951 adapter->dbg.timeout_cmd_act);
953 mwifiex_dbg(adapter, MSG,
955 adapter->dbg.num_tx_host_to_card_failure);
956 mwifiex_dbg(adapter, MSG,
958 adapter->dbg.num_cmd_host_to_card_failure);
960 mwifiex_dbg(adapter, MSG,
963 &adapter->work_flags));
964 mwifiex_dbg(adapter, MSG,
966 adapter->dbg.num_tx_timeout);
968 mwifiex_dbg(adapter, MSG,
970 adapter->dbg.last_cmd_index);
971 mwifiex_dbg(adapter, MSG,
973 (int)sizeof(adapter->dbg.last_cmd_id),
974 adapter->dbg.last_cmd_id);
975 mwifiex_dbg(adapter, MSG,
977 (int)sizeof(adapter->dbg.last_cmd_act),
978 adapter->dbg.last_cmd_act);
980 mwifiex_dbg(adapter, MSG,
982 adapter->dbg.last_cmd_resp_index);
983 mwifiex_dbg(adapter, MSG,
985 (int)sizeof(adapter->dbg.last_cmd_resp_id),
986 adapter->dbg.last_cmd_resp_id);
988 mwifiex_dbg(adapter, MSG,
990 adapter->dbg.last_event_index);
991 mwifiex_dbg(adapter, MSG,
993 (int)sizeof(adapter->dbg.last_event),
994 adapter->dbg.last_event);
996 mwifiex_dbg(adapter, MSG,
998 adapter->data_sent, adapter->cmd_sent);
1000 mwifiex_dbg(adapter, MSG,
1002 adapter->ps_mode, adapter->ps_state);
1005 adapter->cmd_wait_q.status = -ETIMEDOUT;
1006 mwifiex_cancel_pending_ioctl(adapter);
1009 if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING) {
1010 mwifiex_init_fw_complete(adapter);
1014 if (adapter->if_ops.device_dump)
1015 adapter->if_ops.device_dump(adapter);
1017 if (adapter->if_ops.card_reset)
1018 adapter->if_ops.card_reset(adapter);
1022 mwifiex_cancel_pending_scan_cmd(struct mwifiex_adapter *adapter)
1027 spin_lock_bh(&adapter->scan_pending_q_lock);
1029 &adapter->scan_pending_q, list) {
1032 mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
1034 spin_unlock_bh(&adapter->scan_pending_q_lock);
1045 mwifiex_cancel_all_pending_cmd(struct mwifiex_adapter *adapter)
1049 spin_lock_bh(&adapter->mwifiex_cmd_lock);
1051 if ((adapter->curr_cmd) && (adapter->curr_cmd->wait_q_enabled)) {
1052 adapter->cmd_wait_q.status = -1;
1053 mwifiex_complete_cmd(adapter, adapter->curr_cmd);
1054 adapter->curr_cmd->wait_q_enabled = false;
1058 spin_lock_bh(&adapter->cmd_pending_q_lock);
1060 &adapter->cmd_pending_q, list) {
1064 adapter->cmd_wait_q.status = -1;
1065 mwifiex_recycle_cmd_node(adapter, cmd_node);
1067 spin_unlock_bh(&adapter->cmd_pending_q_lock);
1068 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
1070 mwifiex_cancel_scan(adapter);
1084 mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter)
1088 if ((adapter->curr_cmd) &&
1089 (adapter->curr_cmd->wait_q_enabled)) {
1090 spin_lock_bh(&adapter->mwifiex_cmd_lock);
1091 cmd_node = adapter->curr_cmd;
1100 adapter->curr_cmd = NULL;
1101 spin_unlock_bh(&adapter->mwifiex_cmd_lock);
1103 mwifiex_recycle_cmd_node(adapter, cmd_node);
1106 mwifiex_cancel_scan(adapter);
1119 mwifiex_check_ps_cond(struct mwifiex_adapter *adapter)
1121 if (!adapter->cmd_sent && !atomic_read(&adapter->tx_hw_pending) &&
1122 !adapter->curr_cmd && !IS_CARD_RX_RCVD(adapter))
1123 mwifiex_dnld_sleep_confirm_cmd(adapter);
1125 mwifiex_dbg(adapter, CMD,
1127 (adapter->cmd_sent) ? "D" : "",
1128 atomic_read(&adapter->tx_hw_pending) ? "T" : "",
1129 (adapter->curr_cmd) ? "C" : "",
1130 (IS_CARD_RX_RCVD(adapter)) ? "R" : "");
1143 &priv->adapter->work_flags)) {
1144 priv->adapter->hs_activated = true;
1145 mwifiex_update_rxreor_flags(priv->adapter,
1147 mwifiex_dbg(priv->adapter, EVENT,
1149 priv->adapter->hs_activate_wait_q_woken = true;
1151 &priv->adapter->hs_activate_wait_q);
1153 mwifiex_dbg(priv->adapter, EVENT,
1157 mwifiex_dbg(priv->adapter, EVENT,
1159 priv->adapter->hs_activated = false;
1176 struct mwifiex_adapter *adapter = priv->adapter;
1182 adapter->iface_type != MWIFIEX_USB) {
1186 mwifiex_dbg(adapter, CMD,
1194 set_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags);
1195 if (adapter->iface_type == MWIFIEX_USB)
1198 clear_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags);
1199 if (adapter->hs_activated)
1207 * This function wakes up the adapter and generates a Host Sleep
1211 mwifiex_process_hs_config(struct mwifiex_adapter *adapter)
1213 mwifiex_dbg(adapter, INFO,
1218 adapter->if_ops.wakeup(adapter);
1219 adapter->hs_activated = false;
1220 clear_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags);
1221 clear_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags);
1222 mwifiex_hs_activated_event(mwifiex_get_priv(adapter,
1234 mwifiex_process_sleep_confirm_resp(struct mwifiex_adapter *adapter,
1239 mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
1245 mwifiex_dbg(adapter, ERROR,
1250 mwifiex_dbg(adapter, CMD,
1255 priv = mwifiex_get_priv_by_id(adapter, HostCmd_GET_BSS_NO(seq_num),
1258 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY);
1266 mwifiex_dbg(adapter, ERROR,
1273 mwifiex_dbg(adapter, ERROR,
1276 adapter->pm_wakeup_card_req = false;
1277 adapter->ps_state = PS_STATE_AWAKE;
1280 adapter->pm_wakeup_card_req = true;
1281 if (test_bit(MWIFIEX_IS_HS_CONFIGURED, &adapter->work_flags))
1283 (adapter, MWIFIEX_BSS_ROLE_ANY),
1285 adapter->ps_state = PS_STATE_SLEEP;
1331 struct mwifiex_adapter *adapter = priv->adapter;
1340 mwifiex_dbg(priv->adapter, CMD,
1343 cpu_to_le16(adapter->null_pkt_interval);
1345 cpu_to_le16(adapter->multiple_dtim);
1347 cpu_to_le16(adapter->bcn_miss_time_out);
1349 cpu_to_le16(adapter->local_listen_interval);
1351 cpu_to_le16(adapter->adhoc_awake_period);
1353 cpu_to_le16(adapter->delay_to_ps);
1354 ps_mode->mode = cpu_to_le16(adapter->enhanced_ps_mode);
1371 mwifiex_dbg(priv->adapter, CMD,
1391 struct mwifiex_adapter *adapter = priv->adapter;
1399 mwifiex_dbg(adapter, INFO,
1404 mwifiex_dbg(adapter, CMD,
1406 priv->adapter->is_deep_sleep = true;
1409 mwifiex_dbg(adapter, CMD,
1411 if (adapter->sleep_period.period)
1412 mwifiex_dbg(adapter, CMD,
1417 priv->adapter->is_deep_sleep = false;
1418 mwifiex_dbg(adapter, CMD,
1422 mwifiex_dbg(adapter, CMD,
1424 if (adapter->sleep_period.period) {
1425 adapter->delay_null_pkt = false;
1426 adapter->tx_lock_flag = false;
1427 adapter->pps_uapsd_mode = false;
1432 adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_PSP;
1434 adapter->ps_mode = MWIFIEX_802_11_POWER_MODE_CAM;
1436 mwifiex_dbg(adapter, CMD,
1495 struct mwifiex_adapter *adapter = priv->adapter;
1502 adapter->fw_cap_info = le32_to_cpu(hw_spec->fw_cap_info);
1504 if (IS_SUPPORT_MULTI_BANDS(adapter))
1505 adapter->fw_bands = (u8) GET_FW_DEFAULT_BANDS(adapter);
1507 adapter->fw_bands = BAND_B;
1509 adapter->config_bands = adapter->fw_bands;
1511 if (adapter->fw_bands & BAND_A) {
1512 if (adapter->fw_bands & BAND_GN) {
1513 adapter->config_bands |= BAND_AN;
1514 adapter->fw_bands |= BAND_AN;
1516 if (adapter->fw_bands & BAND_AN) {
1517 adapter->adhoc_start_band = BAND_A | BAND_AN;
1518 adapter->adhoc_11n_enabled = true;
1520 adapter->adhoc_start_band = BAND_A;
1523 } else if (adapter->fw_bands & BAND_GN) {
1524 adapter->adhoc_start_band = BAND_G | BAND_B | BAND_GN;
1526 adapter->adhoc_11n_enabled = true;
1527 } else if (adapter->fw_bands & BAND_G) {
1528 adapter->adhoc_start_band = BAND_G | BAND_B;
1530 } else if (adapter->fw_bands & BAND_B) {
1531 adapter->adhoc_start_band = BAND_B;
1535 adapter->fw_release_number = le32_to_cpu(hw_spec->fw_release_number);
1536 adapter->fw_api_ver = (adapter->fw_release_number >> 16) & 0xff;
1537 adapter->number_of_antenna =
1541 adapter->is_hw_11ac_capable = true;
1544 adapter->hw_dot_11ac_dev_cap =
1546 adapter->usr_dot_11ac_dev_cap_bg = adapter->hw_dot_11ac_dev_cap
1548 adapter->usr_dot_11ac_dev_cap_a = adapter->hw_dot_11ac_dev_cap
1552 adapter->hw_dot_11ac_mcs_support =
1554 adapter->usr_dot_11ac_mcs_support =
1555 adapter->hw_dot_11ac_mcs_support;
1557 adapter->is_hw_11ac_capable = false;
1572 adapter->key_api_major_ver =
1574 adapter->key_api_minor_ver =
1576 mwifiex_dbg(adapter, INFO,
1578 adapter->key_api_major_ver,
1579 adapter->key_api_minor_ver);
1582 adapter->fw_api_ver =
1584 mwifiex_dbg(adapter, INFO,
1586 adapter->fw_api_ver,
1590 mwifiex_dbg(adapter, INFO,
1596 mwifiex_dbg(adapter, INFO,
1602 mwifiex_dbg(adapter, FATAL,
1610 adapter->max_p2p_conn = max_conn->max_p2p_conn;
1611 adapter->max_sta_conn = max_conn->max_sta_conn;
1612 mwifiex_dbg(adapter, INFO,
1614 adapter->max_p2p_conn);
1615 mwifiex_dbg(adapter, INFO,
1617 adapter->max_sta_conn);
1620 mwifiex_dbg(adapter, FATAL,
1632 mwifiex_dbg(adapter, INFO,
1634 adapter->fw_release_number);
1635 mwifiex_dbg(adapter, INFO,
1638 mwifiex_dbg(adapter, INFO,
1643 ether_addr_copy(priv->adapter->perm_addr, hw_spec->permanent_addr);
1644 adapter->region_code = le16_to_cpu(hw_spec->region_code);
1648 if (adapter->region_code == region_code_index[i])
1653 adapter->region_code = 0x00;
1654 mwifiex_dbg(adapter, WARN,
1658 adapter->hw_dot_11n_dev_cap = le32_to_cpu(hw_spec->dot_11n_dev_cap);
1659 adapter->hw_dev_mcs_support = hw_spec->dev_mcs_support;
1660 adapter->user_dev_mcs_support = adapter->hw_dev_mcs_support;
1662 if (adapter->if_ops.update_mp_end_port)
1663 adapter->if_ops.update_mp_end_port(adapter,
1666 if (adapter->fw_api_ver == MWIFIEX_FW_V15)
1667 adapter->scan_chan_gap_enabled = true;