Author: adrian
Date: Wed Jun  3 22:30:44 2020
New Revision: 361778
URL: https://svnweb.freebsd.org/changeset/base/361778

Log:
  [run] Fix up tx/rx frame size.
  
  This specifically fixes that TX frames are large enough now to hold a 3900 odd
  byte AMSDU (the little ones); me flipping it on earlier messed up transmit!
  
  Tested:
  
  * if_run, STA mode, TX/RX TCP/UDP iperf.  TCP is now back to normal and
    correctly does ~ 3200 byte AMSDU/fast frames (2x1600ish byte MSDUs).

Modified:
  head/sys/dev/usb/wlan/if_run.c
  head/sys/dev/usb/wlan/if_runvar.h

Modified: head/sys/dev/usb/wlan/if_run.c
==============================================================================
--- head/sys/dev/usb/wlan/if_run.c      Wed Jun  3 22:19:52 2020        
(r361777)
+++ head/sys/dev/usb/wlan/if_run.c      Wed Jun  3 22:30:44 2020        
(r361778)
@@ -3050,10 +3050,11 @@ run_bulk_rx_callback(struct usb_xfer *xfer, usb_error_
 tr_setup:
                if (sc->rx_m == NULL) {
                        sc->rx_m = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR,
-                           MJUMPAGESIZE /* xfer can be bigger than MCLBYTES 
*/);
+                           RUN_MAX_RXSZ);
                }
                if (sc->rx_m == NULL) {
-                       RUN_DPRINTF(sc, RUN_DEBUG_RECV | RUN_DEBUG_RECV_DESC,
+                       RUN_DPRINTF(sc, RUN_DEBUG_RECV |
+                           RUN_DEBUG_RECV_DESC | RUN_DEBUG_USB,
                            "could not allocate mbuf - idle with stall\n");
                        counter_u64_add(ic->ic_ierrors, 1);
                        usbd_xfer_set_stall(xfer);

Modified: head/sys/dev/usb/wlan/if_runvar.h
==============================================================================
--- head/sys/dev/usb/wlan/if_runvar.h   Wed Jun  3 22:19:52 2020        
(r361777)
+++ head/sys/dev/usb/wlan/if_runvar.h   Wed Jun  3 22:30:44 2020        
(r361778)
@@ -23,14 +23,15 @@
 #ifndef _IF_RUNVAR_H_
 #define        _IF_RUNVAR_H_
 
+/* Support up to 4KB frames - useful for A-MSDU/FF. */
 #define        RUN_MAX_RXSZ                    \
        MIN(4096, MJUMPAGESIZE)
 
-/* NB: "11" is the maximum number of padding bytes needed for Tx */
+/* Support up to 8KB frames - useful for A-MSDU/FF. */
 #define        RUN_MAX_TXSZ                    \
        (sizeof (struct rt2870_txd) +   \
         sizeof (struct rt2860_txwi) +  \
-        MCLBYTES + 11)
+        8192 + 11)
 
 #define        RUN_TX_TIMEOUT  5000    /* ms */
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to