Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src-draft/trunk]: src/sys/dev/usb Move alloc of rx/tx buffers back into urtw...



details:   https://anonhg.NetBSD.org/src-all/rev/09949f182cf0
branches:  trunk
changeset: 365324:09949f182cf0
user:      Nathanial Sloss <nat%netbsd.org@localhost>
date:      Sun May 03 20:45:26 2020 +1000

description:
Move alloc of rx/tx buffers back into urtwn_init.
Move free of buffers back into urtwn_stop.

diffstat:

 sys/dev/usb/if_urtwn.c |  34 ++++++++++++++++++----------------
 1 files changed, 18 insertions(+), 16 deletions(-)

diffs (73 lines):

diff -r 1570be8e35ee -r 09949f182cf0 sys/dev/usb/if_urtwn.c
--- a/sys/dev/usb/if_urtwn.c    Sun May 03 19:16:20 2020 +1000
+++ b/sys/dev/usb/if_urtwn.c    Sun May 03 20:45:26 2020 +1000
@@ -602,21 +602,6 @@
                goto fail;
        }
        
-       /* Allocate Tx/Rx buffers. */
-       error = urtwn_alloc_rx_list(sc);
-       if (error != 0) {
-               aprint_error_dev(sc->sc_dev,
-                   "could not allocate Rx buffers\n");
-               goto fail;
-       }
-
-       error = urtwn_alloc_tx_list(sc);
-       if (error != 0) {
-               aprint_error_dev(sc->sc_dev,
-                   "could not allocate Tx buffers\n");
-               goto fail;
-       }
-
        return;
 
  fail:
@@ -900,8 +885,8 @@
        return 0;
 
  fail:
+       mutex_exit(&sc->sc_tx_mtx);
        urtwn_free_tx_list(sc);
-       mutex_exit(&sc->sc_tx_mtx);
        return error;
 }
 
@@ -5742,6 +5727,21 @@
        /* Set default channel. */
        urtwn_set_chan(sc, ic->ic_curchan, IEEE80211_HTINFO_2NDCHAN_NONE);
 
+       /* Allocate Tx/Rx buffers. */
+       error = urtwn_alloc_rx_list(sc);
+       if (error != 0) {
+               aprint_error_dev(sc->sc_dev,
+                   "could not allocate Rx buffers\n");
+               goto fail;
+       }
+
+       error = urtwn_alloc_tx_list(sc);
+       if (error != 0) {
+               aprint_error_dev(sc->sc_dev,
+                   "could not allocate Tx buffers\n");
+               goto fail;
+       }
+
        /* Queue Rx xfers. */
        for (size_t j = 0; j < sc->rx_npipe; j++) {
                mutex_enter(&sc->sc_rx_mtx); 
@@ -5820,6 +5820,7 @@
                        usbd_abort_pipe(sc->tx_pipe[i]);
        }
        mutex_exit(&sc->sc_tx_mtx);
+       urtwn_free_tx_list(sc);
 
        mutex_enter(&sc->sc_rx_mtx);
        /* Stop Rx pipe. */
@@ -5828,6 +5829,7 @@
                        usbd_abort_pipe(sc->rx_pipe[i]);
        }
        mutex_exit(&sc->sc_rx_mtx);
+       urtwn_free_rx_list(sc);
 
        sc->sc_running = false;
        if (disable)



Home | Main Index | Thread Index | Old Index