aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2010-06-24 16:18:33 -0400
committerWey-Yi Guy <wey-yi.w.guy@intel.com>2010-07-02 14:10:15 -0400
commit947279eefb77f79015a79b032eb825a065ab035f (patch)
tree4e1549413c68b46e1091b7297350fb014e1edc43 /drivers
parentad8d8333b12d46f26093eab796cb309ec1a1f5f9 (diff)
iwlwifi: tx fifo queue flush command
Add host command and structure for tx fifo queue flush Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h34
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-hcmd.c1
2 files changed, 35 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index a304f771bcc3..b28cb4ffedc7 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -97,6 +97,7 @@ enum {
97 REPLY_ADD_STA = 0x18, 97 REPLY_ADD_STA = 0x18,
98 REPLY_REMOVE_STA = 0x19, 98 REPLY_REMOVE_STA = 0x19,
99 REPLY_REMOVE_ALL_STA = 0x1a, /* not used */ 99 REPLY_REMOVE_ALL_STA = 0x1a, /* not used */
100 REPLY_TXFIFO_FLUSH = 0x1e,
100 101
101 /* Security */ 102 /* Security */
102 REPLY_WEPKEY = 0x20, 103 REPLY_WEPKEY = 0x20,
@@ -1209,6 +1210,39 @@ struct iwl_rem_sta_cmd {
1209 u8 reserved2[2]; 1210 u8 reserved2[2];
1210} __attribute__ ((packed)); 1211} __attribute__ ((packed));
1211 1212
1213#define IWL_TX_FIFO_BK_MSK cpu_to_le32(BIT(0))
1214#define IWL_TX_FIFO_BE_MSK cpu_to_le32(BIT(1))
1215#define IWL_TX_FIFO_VI_MSK cpu_to_le32(BIT(2))
1216#define IWL_TX_FIFO_VO_MSK cpu_to_le32(BIT(3))
1217#define IWL_AGG_TX_QUEUE_MSK cpu_to_le32(0xffc00)
1218
1219/*
1220 * REPLY_TXFIFO_FLUSH = 0x1e(command and response)
1221 *
1222 * When using full FIFO flush this command checks the scheduler HW block WR/RD
1223 * pointers to check if all the frames were transferred by DMA into the
1224 * relevant TX FIFO queue. Only when the DMA is finished and the queue is
1225 * empty the command can finish.
1226 * This command is used to flush the TXFIFO from transmit commands, it may
1227 * operate on single or multiple queues, the command queue can't be flushed by
1228 * this command. The command response is returned when all the queue flush
1229 * operations are done. Each TX command flushed return response with the FLUSH
1230 * status set in the TX response status. When FIFO flush operation is used,
1231 * the flush operation ends when both the scheduler DMA done and TXFIFO empty
1232 * are set.
1233 *
1234 * @fifo_control: bit mask for which queues to flush
1235 * @flush_control: flush controls
1236 * 0: Dump single MSDU
1237 * 1: Dump multiple MSDU according to PS, INVALID STA, TTL, TID disable.
1238 * 2: Dump all FIFO
1239 */
1240struct iwl_txfifo_flush_cmd {
1241 __le32 fifo_control;
1242 __le16 flush_control;
1243 __le16 reserved;
1244} __attribute__ ((packed));
1245
1212/* 1246/*
1213 * REPLY_WEP_KEY = 0x20 1247 * REPLY_WEP_KEY = 0x20
1214 */ 1248 */
diff --git a/drivers/net/wireless/iwlwifi/iwl-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
index 51f89e7ba681..258d059ef41f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
@@ -49,6 +49,7 @@ const char *get_cmd_string(u8 cmd)
49 IWL_CMD(REPLY_ADD_STA); 49 IWL_CMD(REPLY_ADD_STA);
50 IWL_CMD(REPLY_REMOVE_STA); 50 IWL_CMD(REPLY_REMOVE_STA);
51 IWL_CMD(REPLY_REMOVE_ALL_STA); 51 IWL_CMD(REPLY_REMOVE_ALL_STA);
52 IWL_CMD(REPLY_TXFIFO_FLUSH);
52 IWL_CMD(REPLY_WEPKEY); 53 IWL_CMD(REPLY_WEPKEY);
53 IWL_CMD(REPLY_3945_RX); 54 IWL_CMD(REPLY_3945_RX);
54 IWL_CMD(REPLY_TX); 55 IWL_CMD(REPLY_TX);