aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwmc3200wifi/commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/commands.c')
-rw-r--r--drivers/net/wireless/iwmc3200wifi/commands.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/commands.c b/drivers/net/wireless/iwmc3200wifi/commands.c
index 7e12438551ba..46ca7c58f5ac 100644
--- a/drivers/net/wireless/iwmc3200wifi/commands.c
+++ b/drivers/net/wireless/iwmc3200wifi/commands.c
@@ -929,3 +929,34 @@ int iwm_target_reset(struct iwm_priv *iwm)
929 929
930 return iwm_hal_send_target_cmd(iwm, &target_cmd, NULL); 930 return iwm_hal_send_target_cmd(iwm, &target_cmd, NULL);
931} 931}
932
933int iwm_send_umac_stop_resume_tx(struct iwm_priv *iwm,
934 struct iwm_umac_notif_stop_resume_tx *ntf)
935{
936 struct iwm_udma_wifi_cmd udma_cmd = UDMA_UMAC_INIT;
937 struct iwm_umac_cmd umac_cmd;
938 struct iwm_umac_cmd_stop_resume_tx stp_res_cmd;
939 struct iwm_sta_info *sta_info;
940 u8 sta_id = STA_ID_N_COLOR_ID(ntf->sta_id);
941 int i;
942
943 sta_info = &iwm->sta_table[sta_id];
944 if (!sta_info->valid) {
945 IWM_ERR(iwm, "Invalid STA: %d\n", sta_id);
946 return -EINVAL;
947 }
948
949 umac_cmd.id = UMAC_CMD_OPCODE_STOP_RESUME_STA_TX;
950 umac_cmd.resp = 0;
951
952 stp_res_cmd.flags = ntf->flags;
953 stp_res_cmd.sta_id = ntf->sta_id;
954 stp_res_cmd.stop_resume_tid_msk = ntf->stop_resume_tid_msk;
955 for (i = 0; i < IWM_UMAC_TID_NR; i++)
956 stp_res_cmd.last_seq_num[i] =
957 sta_info->tid_info[i].last_seq_num;
958
959 return iwm_hal_send_umac_cmd(iwm, &udma_cmd, &umac_cmd, &stp_res_cmd,
960 sizeof(struct iwm_umac_cmd_stop_resume_tx));
961
962}