aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2x00queue.h
diff options
context:
space:
mode:
authorIvo van Doorn <ivdoorn@gmail.com>2008-05-10 07:42:06 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-05-21 21:47:30 -0400
commitfb55f4d1fa252ba1e479284b79da1049d658c371 (patch)
tree0922dcd4e12037026293dd41914d774f06955641 /drivers/net/wireless/rt2x00/rt2x00queue.h
parent5a6e59991b82580c3ca00115603b85762ec76104 (diff)
rt2x00: Fix TX status reporting
The tx_status enumeration was broken since the introduction of rt61pci. That driver uses different values to report the status of the tx action. This would lead to frames that were reported as success but actually failed to be send out, or frames that were neither successfull or failure which were reported as failure. Fix this by change the TX status reporting and more explicitely check for failure or success. Note that a third possibility is added "unknown". Not all hardware (USB) can report the actual TX status, for rt61pci some frames will receive this status because the TXdone handler is never called for those frames. This unknown will now be handled as neither success or failure, so we no longer increment the failure counter while this conclusion could not be determined from the real status of the frame. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00queue.h')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00queue.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.h b/drivers/net/wireless/rt2x00/rt2x00queue.h
index c3493ed7f4c3..f361f784965e 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.h
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.h
@@ -168,18 +168,34 @@ struct rxdone_entry_desc {
168}; 168};
169 169
170/** 170/**
171 * enum txdone_entry_desc_flags: Flags for &struct txdone_entry_desc
172 *
173 * @TXDONE_UNKNOWN: Hardware could not determine success of transmission.
174 * @TXDONE_SUCCESS: Frame was successfully send
175 * @TXDONE_FAILURE: Frame was not successfully send
176 * @TXDONE_EXCESSIVE_RETRY: In addition to &TXDONE_FAILURE, the
177 * frame transmission failed due to excessive retries.
178 */
179enum txdone_entry_desc_flags {
180 TXDONE_UNKNOWN = 1 << 0,
181 TXDONE_SUCCESS = 1 << 1,
182 TXDONE_FAILURE = 1 << 2,
183 TXDONE_EXCESSIVE_RETRY = 1 << 3,
184};
185
186/**
171 * struct txdone_entry_desc: TX done entry descriptor 187 * struct txdone_entry_desc: TX done entry descriptor
172 * 188 *
173 * Summary of information that has been read from the TX frame descriptor 189 * Summary of information that has been read from the TX frame descriptor
174 * after the device is done with transmission. 190 * after the device is done with transmission.
175 * 191 *
176 * @control: Control structure which was used to transmit the frame. 192 * @control: Control structure which was used to transmit the frame.
177 * @status: TX status (See &enum tx_status). 193 * @flags: TX done flags (See &enum txdone_entry_desc_flags).
178 * @retry: Retry count. 194 * @retry: Retry count.
179 */ 195 */
180struct txdone_entry_desc { 196struct txdone_entry_desc {
181 struct ieee80211_tx_control *control; 197 struct ieee80211_tx_control *control;
182 int status; 198 unsigned long flags;
183 int retry; 199 int retry;
184}; 200};
185 201