Correct the descriptor length for AR9462/AR9565 and set the final field

to zero - TX drops are otherwise reported.

Tested:

* AR9462 (WB222), STA mode

Obtained from:	Linux ath9k
This commit is contained in:
Adrian Chadd 2015-01-17 17:37:08 +00:00
parent 091855cd9e
commit f590185223
2 changed files with 10 additions and 4 deletions

View File

@ -68,9 +68,11 @@ ar9300_fill_tx_desc(
const void *ds0)
{
struct ar9300_txc *ads = AR9300TXC(ds);
short desclen;
/* Fill TXC info field */
ads->ds_info = TXC_INFO(qcu);
desclen = (AR_SREV_JUPITER(ah) || AR_SREV_APHRODITE(ah)) ? 0x18 : 0x17;
ads->ds_info = TXC_INFO(qcu, desclen);
/* Set the buffer addresses */
ads->ds_data0 = buf_addr[0];
@ -124,6 +126,9 @@ ar9300_fill_tx_desc(
ads->ds_ctl17 = SM(key_type, AR_encr_type);
}
/* Only relevant for Jupiter/Aphrodite */
ads->ds_ctl23 = 0;
return AH_TRUE;
}

View File

@ -78,7 +78,8 @@ struct ar9300_txc {
u_int32_t ds_ctl20; /* DMA control 20 */
u_int32_t ds_ctl21; /* DMA control 21 */
u_int32_t ds_ctl22; /* DMA control 22 */
u_int32_t ds_pad[9]; /* pad to cache line (128 bytes/32 dwords) */
u_int32_t ds_ctl23; /* DMA control 23 */
u_int32_t ds_pad[8]; /* pad to cache line (128 bytes/32 dwords) */
};
@ -429,11 +430,11 @@ struct ar9300_txc {
#define RXSTATUS_NUMWORDS(ah) 11
#define TXC_INFO(_qcu) (ATHEROS_VENDOR_ID << AR_desc_id_S) \
#define TXC_INFO(_qcu, _desclen) (ATHEROS_VENDOR_ID << AR_desc_id_S) \
| (1 << AR_tx_rx_desc_S) \
| (1 << AR_ctrl_stat_S) \
| (_qcu << AR_tx_qcu_num_S) \
| (0x17)
| (_desclen)
#define VALID_KEY_TYPES \
((1 << HAL_KEY_TYPE_CLEAR) | (1 << HAL_KEY_TYPE_WEP)|\