Author: adrian
Date: Mon Jun 20 02:04:40 2016
New Revision: 302024
URL: https://svnweb.freebsd.org/changeset/base/302024

Log:
  [ath] fix EDMA TX buffer flags for use when retransmitting frames.
  
  This started showing up when doing lots of aggregate traffic. For TDMA it's
  always no-ACK traffic and I didn't notice this, and I didn't notice it
  when doing 11abg traffic as it didn't fail enough in a bad way to trigger
  this.
  
  This showed up as the fifo depth being < 0.
  
  Eg:
  
  Jun 19 09:23:07 gertrude kernel: ath0: ath_tx_edma_push_staging_list: queued 
2 packets; depth=2, fifo depth=1
  Jun 19 09:23:07 gertrude kernel: ath0: ath_edma_tx_processq: Q1, 
bf=0xfffffe000385f068, start=1, end=1
  Jun 19 09:23:07 gertrude kernel: ath0: ath_edma_tx_processq: Q1: FIFO depth 
is now 0 (1)
  Jun 19 09:23:07 gertrude kernel: ath0: ath_edma_tx_processq: Q1, 
bf=0xfffffe0003866fe8, start=0, end=1
  Jun 19 09:23:07 gertrude kernel: ath0: ath_edma_tx_processq: Q1: FIFO depth 
is now -1 (0)
  
  So, clear the flags before adding them to a TX queue, so if they're
  re-added for the retransmit path it'll clear whatever they were and
  not double-account the FIFOEND flag.  Oops.
  
  Tested:
  
  * AR9380, STA mode, 11n iperf testing (~130mbit)
  
  Approved by:  re (delphij)

Modified:
  head/sys/dev/ath/if_ath_tx_edma.c

Modified: head/sys/dev/ath/if_ath_tx_edma.c
==============================================================================
--- head/sys/dev/ath/if_ath_tx_edma.c   Sun Jun 19 23:36:40 2016        
(r302023)
+++ head/sys/dev/ath/if_ath_tx_edma.c   Mon Jun 20 02:04:40 2016        
(r302024)
@@ -192,6 +192,9 @@ ath_tx_edma_push_staging_list(struct ath
 
                /* Queue it into our staging list */
                TAILQ_INSERT_TAIL(&sq, bf, bf_list);
+
+               /* Ensure the flags are cleared */
+               bf->bf_flags &= ~(ATH_BUF_FIFOPTR | ATH_BUF_FIFOEND);
                sqdepth++;
        }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to