Lines Matching refs:cmd_node
39 struct cmd_ctrl_node *cmd_node, in mwifiex_init_cmd_node() argument
42 cmd_node->priv = priv; in mwifiex_init_cmd_node()
43 cmd_node->cmd_oid = cmd_oid; in mwifiex_init_cmd_node()
45 cmd_node->wait_q_enabled = true; in mwifiex_init_cmd_node()
46 cmd_node->cmd_wait_q_woken = false; in mwifiex_init_cmd_node()
47 cmd_node->condition = &cmd_node->cmd_wait_q_woken; in mwifiex_init_cmd_node()
49 cmd_node->data_buf = data_buf; in mwifiex_init_cmd_node()
50 cmd_node->cmd_skb = cmd_node->skb; in mwifiex_init_cmd_node()
60 struct cmd_ctrl_node *cmd_node; in mwifiex_get_cmd_node() local
70 cmd_node = list_first_entry(&adapter->cmd_free_q, in mwifiex_get_cmd_node()
72 list_del(&cmd_node->list); in mwifiex_get_cmd_node()
75 return cmd_node; in mwifiex_get_cmd_node()
91 struct cmd_ctrl_node *cmd_node) in mwifiex_clean_cmd_node() argument
93 cmd_node->cmd_oid = 0; in mwifiex_clean_cmd_node()
94 cmd_node->cmd_flag = 0; in mwifiex_clean_cmd_node()
95 cmd_node->data_buf = NULL; in mwifiex_clean_cmd_node()
96 cmd_node->wait_q_enabled = false; in mwifiex_clean_cmd_node()
98 if (cmd_node->cmd_skb) in mwifiex_clean_cmd_node()
99 skb_trim(cmd_node->cmd_skb, 0); in mwifiex_clean_cmd_node()
101 if (cmd_node->resp_skb) { in mwifiex_clean_cmd_node()
102 adapter->if_ops.cmdrsp_complete(adapter, cmd_node->resp_skb); in mwifiex_clean_cmd_node()
103 cmd_node->resp_skb = NULL; in mwifiex_clean_cmd_node()
134 struct cmd_ctrl_node *cmd_node) in mwifiex_dnld_cmd_to_fw() argument
145 if (!adapter || !cmd_node) in mwifiex_dnld_cmd_to_fw()
148 host_cmd = (struct host_cmd_ds_command *) (cmd_node->cmd_skb->data); in mwifiex_dnld_cmd_to_fw()
155 if (cmd_node->wait_q_enabled) in mwifiex_dnld_cmd_to_fw()
157 mwifiex_recycle_cmd_node(adapter, cmd_node); in mwifiex_dnld_cmd_to_fw()
170 mwifiex_recycle_cmd_node(adapter, cmd_node); in mwifiex_dnld_cmd_to_fw()
179 cmd_node->priv->bss_num, in mwifiex_dnld_cmd_to_fw()
180 cmd_node->priv->bss_type)); in mwifiex_dnld_cmd_to_fw()
183 adapter->curr_cmd = cmd_node; in mwifiex_dnld_cmd_to_fw()
187 if (cmd_node->cmd_skb->len > cmd_size) in mwifiex_dnld_cmd_to_fw()
192 skb_trim(cmd_node->cmd_skb, cmd_size); in mwifiex_dnld_cmd_to_fw()
193 else if (cmd_node->cmd_skb->len < cmd_size) in mwifiex_dnld_cmd_to_fw()
199 skb_put(cmd_node->cmd_skb, cmd_size - cmd_node->cmd_skb->len); in mwifiex_dnld_cmd_to_fw()
210 skb_push(cmd_node->cmd_skb, MWIFIEX_TYPE_LEN); in mwifiex_dnld_cmd_to_fw()
211 memcpy(cmd_node->cmd_skb->data, &tmp, MWIFIEX_TYPE_LEN); in mwifiex_dnld_cmd_to_fw()
215 cmd_node->cmd_skb, NULL); in mwifiex_dnld_cmd_to_fw()
216 skb_pull(cmd_node->cmd_skb, MWIFIEX_TYPE_LEN); in mwifiex_dnld_cmd_to_fw()
218 cmd_node->cmd_skb = NULL; in mwifiex_dnld_cmd_to_fw()
220 skb_push(cmd_node->cmd_skb, INTF_HEADER_LEN); in mwifiex_dnld_cmd_to_fw()
222 cmd_node->cmd_skb, NULL); in mwifiex_dnld_cmd_to_fw()
223 skb_pull(cmd_node->cmd_skb, INTF_HEADER_LEN); in mwifiex_dnld_cmd_to_fw()
231 if (cmd_node->wait_q_enabled) in mwifiex_dnld_cmd_to_fw()
504 struct cmd_ctrl_node *cmd_node; in mwifiex_send_cmd() local
545 cmd_node = mwifiex_get_cmd_node(adapter); in mwifiex_send_cmd()
547 if (!cmd_node) { in mwifiex_send_cmd()
554 mwifiex_init_cmd_node(priv, cmd_node, cmd_oid, data_buf, sync); in mwifiex_send_cmd()
556 if (!cmd_node->cmd_skb) { in mwifiex_send_cmd()
562 memset(skb_put(cmd_node->cmd_skb, sizeof(struct host_cmd_ds_command)), in mwifiex_send_cmd()
565 cmd_ptr = (struct host_cmd_ds_command *) (cmd_node->cmd_skb->data); in mwifiex_send_cmd()
590 cmd_node->cmd_flag |= CMD_F_HOSTCMD; in mwifiex_send_cmd()
598 mwifiex_insert_cmd_to_free_q(adapter, cmd_node); in mwifiex_send_cmd()
605 mwifiex_queue_scan_cmd(priv, cmd_node); in mwifiex_send_cmd()
607 mwifiex_insert_cmd_to_pending_q(adapter, cmd_node, true); in mwifiex_send_cmd()
609 if (cmd_node->wait_q_enabled) in mwifiex_send_cmd()
610 ret = mwifiex_wait_queue_complete(adapter, cmd_node); in mwifiex_send_cmd()
624 struct cmd_ctrl_node *cmd_node) in mwifiex_insert_cmd_to_free_q() argument
628 if (!cmd_node) in mwifiex_insert_cmd_to_free_q()
631 if (cmd_node->wait_q_enabled) in mwifiex_insert_cmd_to_free_q()
632 mwifiex_complete_cmd(adapter, cmd_node); in mwifiex_insert_cmd_to_free_q()
634 mwifiex_clean_cmd_node(adapter, cmd_node); in mwifiex_insert_cmd_to_free_q()
638 list_add_tail(&cmd_node->list, &adapter->cmd_free_q); in mwifiex_insert_cmd_to_free_q()
644 struct cmd_ctrl_node *cmd_node) in mwifiex_recycle_cmd_node() argument
646 struct host_cmd_ds_command *host_cmd = (void *)cmd_node->cmd_skb->data; in mwifiex_recycle_cmd_node()
648 mwifiex_insert_cmd_to_free_q(adapter, cmd_node); in mwifiex_recycle_cmd_node()
666 struct cmd_ctrl_node *cmd_node, u32 add_tail) in mwifiex_insert_cmd_to_pending_q() argument
672 host_cmd = (struct host_cmd_ds_command *) (cmd_node->cmd_skb->data); in mwifiex_insert_cmd_to_pending_q()
693 list_add_tail(&cmd_node->list, &adapter->cmd_pending_q); in mwifiex_insert_cmd_to_pending_q()
695 list_add(&cmd_node->list, &adapter->cmd_pending_q); in mwifiex_insert_cmd_to_pending_q()
718 struct cmd_ctrl_node *cmd_node; in mwifiex_exec_next_cmd() local
740 cmd_node = list_first_entry(&adapter->cmd_pending_q, in mwifiex_exec_next_cmd()
745 host_cmd = (struct host_cmd_ds_command *) (cmd_node->cmd_skb->data); in mwifiex_exec_next_cmd()
746 priv = cmd_node->priv; in mwifiex_exec_next_cmd()
757 list_del(&cmd_node->list); in mwifiex_exec_next_cmd()
762 ret = mwifiex_dnld_cmd_to_fw(priv, cmd_node); in mwifiex_exec_next_cmd()
908 struct cmd_ctrl_node *cmd_node; in mwifiex_cmd_timeout_func() local
916 cmd_node = adapter->curr_cmd; in mwifiex_cmd_timeout_func()
917 if (cmd_node) { in mwifiex_cmd_timeout_func()
977 if (cmd_node->wait_q_enabled) { in mwifiex_cmd_timeout_func()
1004 struct cmd_ctrl_node *cmd_node = NULL, *tmp_node; in mwifiex_cancel_all_pending_cmd() local
1019 list_for_each_entry_safe(cmd_node, tmp_node, in mwifiex_cancel_all_pending_cmd()
1021 list_del(&cmd_node->list); in mwifiex_cancel_all_pending_cmd()
1024 if (cmd_node->wait_q_enabled) in mwifiex_cancel_all_pending_cmd()
1026 mwifiex_recycle_cmd_node(adapter, cmd_node); in mwifiex_cancel_all_pending_cmd()
1034 list_for_each_entry_safe(cmd_node, tmp_node, in mwifiex_cancel_all_pending_cmd()
1036 list_del(&cmd_node->list); in mwifiex_cancel_all_pending_cmd()
1038 cmd_node->wait_q_enabled = false; in mwifiex_cancel_all_pending_cmd()
1039 mwifiex_insert_cmd_to_free_q(adapter, cmd_node); in mwifiex_cancel_all_pending_cmd()
1073 struct cmd_ctrl_node *cmd_node = NULL, *tmp_node = NULL; in mwifiex_cancel_pending_ioctl() local
1082 cmd_node = adapter->curr_cmd; in mwifiex_cancel_pending_ioctl()
1094 mwifiex_recycle_cmd_node(adapter, cmd_node); in mwifiex_cancel_pending_ioctl()
1100 list_for_each_entry_safe(cmd_node, tmp_node, in mwifiex_cancel_pending_ioctl()
1102 list_del(&cmd_node->list); in mwifiex_cancel_pending_ioctl()
1103 cmd_node->wait_q_enabled = false; in mwifiex_cancel_pending_ioctl()
1104 mwifiex_insert_cmd_to_free_q(adapter, cmd_node); in mwifiex_cancel_pending_ioctl()