iwlwifi: update tx command response status
Update to include additional tx command response status for "_agn" devices. The following status indicate the transmission was postponed: TX_STATUS_POSTPONE_DELAY TX_STATUS_POSTPONE_FEW_BYTES TX_STATUS_POSTPONE_BT_PRIO TX_STATUS_POSTPONE_QUIET_PERIOD TX_STATUS_POSTPONE_CALC_TTAK Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
This commit is contained in:
committed by
Reinette Chatre
parent
461ef382fd
commit
04569cbe76
@ -1662,7 +1662,7 @@ struct iwl_tx_cmd {
|
||||
struct ieee80211_hdr hdr[0];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* TX command response is sent after *all* transmission attempts.
|
||||
/* TX command response is sent after *3945* transmission attempts.
|
||||
*
|
||||
* NOTES:
|
||||
*
|
||||
@ -1689,25 +1689,66 @@ struct iwl_tx_cmd {
|
||||
* command FIFO has been cleared. The host must then deactivate the TX Abort
|
||||
* control line. Receiving is still allowed in this case.
|
||||
*/
|
||||
enum {
|
||||
TX_3945_STATUS_SUCCESS = 0x01,
|
||||
TX_3945_STATUS_DIRECT_DONE = 0x02,
|
||||
TX_3945_STATUS_FAIL_SHORT_LIMIT = 0x82,
|
||||
TX_3945_STATUS_FAIL_LONG_LIMIT = 0x83,
|
||||
TX_3945_STATUS_FAIL_FIFO_UNDERRUN = 0x84,
|
||||
TX_3945_STATUS_FAIL_MGMNT_ABORT = 0x85,
|
||||
TX_3945_STATUS_FAIL_NEXT_FRAG = 0x86,
|
||||
TX_3945_STATUS_FAIL_LIFE_EXPIRE = 0x87,
|
||||
TX_3945_STATUS_FAIL_DEST_PS = 0x88,
|
||||
TX_3945_STATUS_FAIL_ABORTED = 0x89,
|
||||
TX_3945_STATUS_FAIL_BT_RETRY = 0x8a,
|
||||
TX_3945_STATUS_FAIL_STA_INVALID = 0x8b,
|
||||
TX_3945_STATUS_FAIL_FRAG_DROPPED = 0x8c,
|
||||
TX_3945_STATUS_FAIL_TID_DISABLE = 0x8d,
|
||||
TX_3945_STATUS_FAIL_FRAME_FLUSHED = 0x8e,
|
||||
TX_3945_STATUS_FAIL_INSUFFICIENT_CF_POLL = 0x8f,
|
||||
TX_3945_STATUS_FAIL_TX_LOCKED = 0x90,
|
||||
TX_3945_STATUS_FAIL_NO_BEACON_ON_RADAR = 0x91,
|
||||
};
|
||||
|
||||
/*
|
||||
* TX command response is sent after *agn* transmission attempts.
|
||||
*
|
||||
* both postpone and abort status are expected behavior from uCode. there is
|
||||
* no special operation required from driver; except for RFKILL_FLUSH,
|
||||
* which required tx flush host command to flush all the tx frames in queues
|
||||
*/
|
||||
enum {
|
||||
TX_STATUS_SUCCESS = 0x01,
|
||||
TX_STATUS_DIRECT_DONE = 0x02,
|
||||
/* postpone TX */
|
||||
TX_STATUS_POSTPONE_DELAY = 0x40,
|
||||
TX_STATUS_POSTPONE_FEW_BYTES = 0x41,
|
||||
TX_STATUS_POSTPONE_BT_PRIO = 0x42,
|
||||
TX_STATUS_POSTPONE_QUIET_PERIOD = 0x43,
|
||||
TX_STATUS_POSTPONE_CALC_TTAK = 0x44,
|
||||
/* abort TX */
|
||||
TX_STATUS_FAIL_INTERNAL_CROSSED_RETRY = 0x81,
|
||||
TX_STATUS_FAIL_SHORT_LIMIT = 0x82,
|
||||
TX_STATUS_FAIL_LONG_LIMIT = 0x83,
|
||||
TX_STATUS_FAIL_FIFO_UNDERRUN = 0x84,
|
||||
TX_STATUS_FAIL_MGMNT_ABORT = 0x85,
|
||||
TX_STATUS_FAIL_NEXT_FRAG = 0x86,
|
||||
TX_STATUS_FAIL_DRAIN_FLOW = 0x85,
|
||||
TX_STATUS_FAIL_RFKILL_FLUSH = 0x86,
|
||||
TX_STATUS_FAIL_LIFE_EXPIRE = 0x87,
|
||||
TX_STATUS_FAIL_DEST_PS = 0x88,
|
||||
TX_STATUS_FAIL_ABORTED = 0x89,
|
||||
TX_STATUS_FAIL_HOST_ABORTED = 0x89,
|
||||
TX_STATUS_FAIL_BT_RETRY = 0x8a,
|
||||
TX_STATUS_FAIL_STA_INVALID = 0x8b,
|
||||
TX_STATUS_FAIL_FRAG_DROPPED = 0x8c,
|
||||
TX_STATUS_FAIL_TID_DISABLE = 0x8d,
|
||||
TX_STATUS_FAIL_FRAME_FLUSHED = 0x8e,
|
||||
TX_STATUS_FAIL_FIFO_FLUSHED = 0x8e,
|
||||
TX_STATUS_FAIL_INSUFFICIENT_CF_POLL = 0x8f,
|
||||
TX_STATUS_FAIL_TX_LOCKED = 0x90,
|
||||
TX_STATUS_FAIL_NO_BEACON_ON_RADAR = 0x91,
|
||||
/* uCode drop due to FW drop request */
|
||||
TX_STATUS_FAIL_FW_DROP = 0x90,
|
||||
/*
|
||||
* uCode drop due to station color mismatch
|
||||
* between tx command and station table
|
||||
*/
|
||||
TX_STATUS_FAIL_STA_COLOR_MISMATCH_DROP = 0x91,
|
||||
};
|
||||
|
||||
#define TX_PACKET_MODE_REGULAR 0x0000
|
||||
@ -1729,30 +1770,6 @@ enum {
|
||||
TX_ABORT_REQUIRED_MSK = 0x80000000, /* bits 31:31 */
|
||||
};
|
||||
|
||||
static inline u32 iwl_tx_status_to_mac80211(u32 status)
|
||||
{
|
||||
status &= TX_STATUS_MSK;
|
||||
|
||||
switch (status) {
|
||||
case TX_STATUS_SUCCESS:
|
||||
case TX_STATUS_DIRECT_DONE:
|
||||
return IEEE80211_TX_STAT_ACK;
|
||||
case TX_STATUS_FAIL_DEST_PS:
|
||||
return IEEE80211_TX_STAT_TX_FILTERED;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool iwl_is_tx_success(u32 status)
|
||||
{
|
||||
status &= TX_STATUS_MSK;
|
||||
return (status == TX_STATUS_SUCCESS) ||
|
||||
(status == TX_STATUS_DIRECT_DONE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* *******************************
|
||||
* TX aggregation status
|
||||
******************************* */
|
||||
|
Reference in New Issue
Block a user