+@@ -2375,7 +2452,7 @@ static void ath_tx_processq(struct ath_s
+ * it with the STALE flag.
+ */
+ bf_held = NULL;
+- if (bf->bf_stale) {
++ if (bf->bf_state.stale) {
+ bf_held = bf;
+ if (list_is_last(&bf_held->list, &txq->axq_q))
+ break;
+@@ -2399,7 +2476,7 @@ static void ath_tx_processq(struct ath_s
+ * however leave the last descriptor back as the holding
+ * descriptor for hw.
+ */
+- lastbf->bf_stale = true;
++ lastbf->bf_state.stale = true;
+ INIT_LIST_HEAD(&bf_head);
+ if (!list_is_singular(&lastbf->list))
+ list_cut_position(&bf_head,
+@@ -2470,7 +2547,7 @@ void ath_tx_edma_tasklet(struct ath_soft
+ }
+
+ bf = list_first_entry(fifo_list, struct ath_buf, list);
+- if (bf->bf_stale) {
++ if (bf->bf_state.stale) {
+ list_del(&bf->list);
+ ath_tx_return_buffer(sc, bf);
+ bf = list_first_entry(fifo_list, struct ath_buf, list);
+@@ -2492,7 +2569,7 @@ void ath_tx_edma_tasklet(struct ath_soft
+ ath_tx_txqaddbuf(sc, txq, &bf_q, true);
+ }
+ } else {
+- lastbf->bf_stale = true;
++ lastbf->bf_state.stale = true;
+ if (bf != lastbf)
+ list_cut_position(&bf_head, fifo_list,
+ lastbf->list.prev);
+@@ -2583,6 +2660,7 @@ void ath_tx_node_init(struct ath_softc *