/*
* Header for the ath9k.ko driver core *only* -- hw code nor any other driver
-@@ -559,6 +560,7 @@ struct ath_ant_comb {
+@@ -544,6 +545,7 @@ struct ath_ant_comb {
#define SC_OP_BT_PRIORITY_DETECTED BIT(12)
#define SC_OP_BT_SCAN BIT(13)
#define SC_OP_ANI_RUN BIT(14)
/* Powersave flags */
#define PS_WAIT_FOR_BEACON BIT(0)
-@@ -635,6 +637,10 @@ struct ath_softc {
+@@ -621,6 +623,10 @@ struct ath_softc {
#ifdef CONFIG_ATH9K_DEBUGFS
struct ath9k_debug debug;
#endif
static inline void ath9k_hw_set11n_txdesc(struct ath_hw *ah, void *ds,
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -2140,7 +2140,7 @@ void ath9k_hw_setrxfilter(struct ath_hw
+@@ -2143,7 +2143,7 @@ void ath9k_hw_setrxfilter(struct ath_hw
phybits |= AR_PHY_ERR_RADAR;
if (bits & ATH9K_RX_FILTER_PHYERR)
phybits |= AR_PHY_ERR_OFDM_TIMING | AR_PHY_ERR_CCK_TIMING;
REG_WRITE(ah, AR_RXCFG,
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -580,7 +580,7 @@ struct ath_hw_ops {
+@@ -616,7 +616,7 @@ struct ath_hw_ops {
const void *ds0, dma_addr_t buf_addr,
unsigned int qcu);
int (*proc_txdesc)(struct ath_hw *ah, void *ds,
void (*set11n_txdesc)(struct ath_hw *ah, void *ds,
u32 pktLen, enum ath9k_pkt_type type,
u32 txPower, u32 keyIx,
-@@ -804,6 +804,8 @@ struct ath_hw {
- * this register when in sleep states.
- */
- u32 WARegVal;
+@@ -845,6 +845,8 @@ struct ath_hw {
+
+ /* Enterprise mode cap */
+ u32 ent_mode;
+
+ bool is_pkt_logging;
};
}
static const
-@@ -1374,7 +1381,8 @@ static void ath_tx_status(void *priv, st
+@@ -1358,7 +1365,8 @@ static void ath_tx_status(void *priv, st
tx_status = 1;
ath_rc_tx_status(sc, ath_rc_priv, tx_info, final_ts_idx, tx_status,
bf->bf_buf_addr = dma_map_single(sc->dev, requeue_skb->data,
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -436,6 +436,8 @@ static void ath_tx_complete_aggr(struct
+@@ -476,6 +476,8 @@ static void ath_tx_complete_aggr(struct
list_move_tail(&bf->list, &bf_head);
}
if (!txpending || (tid->state & AGGR_CLEANUP)) {
/*
* complete the acked-ones/xretried ones; update
-@@ -2069,7 +2071,7 @@ static void ath_tx_processq(struct ath_s
+@@ -2004,7 +2006,7 @@ static void ath_tx_processq(struct ath_s
ds = lastbf->bf_desc;
memset(&ts, 0, sizeof(ts));
if (status == -EINPROGRESS) {
spin_unlock_bh(&txq->axq_lock);
break;
-@@ -2108,10 +2110,14 @@ static void ath_tx_processq(struct ath_s
+@@ -2043,11 +2045,15 @@ static void ath_tx_processq(struct ath_s
qnum = skb_get_queue_mapping(bf->bf_mpdu);
- if (bf_isampdu(bf))
+ if (bf_isampdu(bf)) {
- ath_tx_complete_aggr(sc, txq, bf, &bf_head, &ts, txok);
+ ath_tx_complete_aggr(sc, txq, bf, &bf_head, &ts, txok,
+ true);
- else
+ } else {
+ ath9k_pktlog_txctrl(sc, &bf_head, lastbf);
if (txq == sc->tx.txq_map[qnum])
ath_wake_mac80211_queue(sc, qnum);
-@@ -2185,9 +2191,11 @@ void ath_tx_edma_tasklet(struct ath_soft
+@@ -2121,9 +2127,11 @@ void ath_tx_edma_tasklet(struct ath_soft
int status;
int txok;
int qnum;
if (status == -EINPROGRESS)
break;
if (status == -EIO) {
-@@ -2230,15 +2238,19 @@ void ath_tx_edma_tasklet(struct ath_soft
+@@ -2166,16 +2174,20 @@ void ath_tx_edma_tasklet(struct ath_soft
qnum = skb_get_queue_mapping(bf->bf_mpdu);
- if (bf_isampdu(bf))
+ if (bf_isampdu(bf)) {
- ath_tx_complete_aggr(sc, txq, bf, &bf_head, &txs, txok);
+ ath_tx_complete_aggr(sc, txq, bf, &bf_head, &txs,
+ txok, true);
- else
+ } else {
+ ath9k_pktlog_txctrl(sc, &bf_head, lastbf);