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