diff options
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/commands.c')
-rw-r--r-- | drivers/net/wireless/iwmc3200wifi/commands.c | 31 |
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 | |||
933 | int 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 | } | ||