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 Introduce a mutex to serialize state machi...



details:   https://anonhg.NetBSD.org/src-all/rev/46d20915ad2c
branches:  trunk
changeset: 371418:46d20915ad2c
user:      Nathanial Sloss <nat%netbsd.org@localhost>
date:      Sat Aug 15 19:51:51 2020 +1000

description:
Introduce a mutex to serialize state machine changes.

diffstat:

 sys/dev/usb/if_urtwn.c    |  4 ++++
 sys/dev/usb/if_urtwnvar.h |  1 +
 2 files changed, 5 insertions(+), 0 deletions(-)

diffs (46 lines):

diff -r 37a7ac2a7e9e -r 46d20915ad2c sys/dev/usb/if_urtwn.c
--- a/sys/dev/usb/if_urtwn.c    Sat Aug 15 19:47:21 2020 +1000
+++ b/sys/dev/usb/if_urtwn.c    Sat Aug 15 19:51:51 2020 +1000
@@ -432,6 +432,7 @@
        mutex_init(&sc->sc_rx_mtx, MUTEX_DEFAULT, IPL_SOFTNET);
        mutex_init(&sc->sc_fwcmd_mtx, MUTEX_DEFAULT, IPL_NONE);
        mutex_init(&sc->sc_write_mtx, MUTEX_DEFAULT, IPL_NONE);
+       mutex_init(&sc->sc_state_mtx, MUTEX_DEFAULT, IPL_NONE);
 
        mutex_enter(&sc->sc_write_mtx);
        usb_init_task(&sc->sc_task, urtwn_task, sc, 0);
@@ -703,6 +704,7 @@
        callout_destroy(&sc->sc_scan_to);
        callout_destroy(&sc->sc_calib_to);
 
+       mutex_destroy(&sc->sc_state_mtx);
        mutex_destroy(&sc->sc_write_mtx);
        mutex_destroy(&sc->sc_fwcmd_mtx);
        mutex_destroy(&sc->sc_tx_mtx);
@@ -2364,6 +2366,7 @@
            ieee80211_state_name[nstate], nstate));
 
        s = splnet();
+       mutex_enter(&sc->sc_state_mtx);
        mutex_enter(&sc->sc_write_mtx);
 
        callout_stop(&sc->sc_scan_to);
@@ -2674,6 +2677,7 @@
 #endif
        error = (*sc->sc_newstate)(vap, nstate, arg);
        
+       mutex_exit(&sc->sc_state_mtx);
        splx(s);
        return error;
 }
diff -r 37a7ac2a7e9e -r 46d20915ad2c sys/dev/usb/if_urtwnvar.h
--- a/sys/dev/usb/if_urtwnvar.h Sat Aug 15 19:47:21 2020 +1000
+++ b/sys/dev/usb/if_urtwnvar.h Sat Aug 15 19:51:51 2020 +1000
@@ -135,6 +135,7 @@
        kmutex_t                        sc_tx_mtx;
        kmutex_t                        sc_rx_mtx;
        kmutex_t                        sc_write_mtx;
+       kmutex_t                        sc_state_mtx;
        kmutex_t                        sc_media_mtx;   /* XXX */
 
        struct usbd_pipe *              rx_pipe[R92C_MAX_EPIN];



Home | Main Index | Thread Index | Old Index