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 Initialise channels and media state.



details:   https://anonhg.NetBSD.org/src-all/rev/f04879cb6a17
branches:  trunk
changeset: 374858:f04879cb6a17
user:      Nathanial Sloss <nat%NetBSD.org@localhost>
date:      Fri May 01 00:16:58 2020 +1000

description:
Initialise channels and media state.

diffstat:

 sys/dev/usb/if_urtwn.c |  13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diffs (52 lines):

diff -r 457c2e23b2c6 -r f04879cb6a17 sys/dev/usb/if_urtwn.c
--- a/sys/dev/usb/if_urtwn.c    Mon Apr 27 07:37:01 2020 +0000
+++ b/sys/dev/usb/if_urtwn.c    Fri May 01 00:16:58 2020 +1000
@@ -2356,7 +2356,6 @@ urtwn_newstate(struct ieee80211vap *vap,
                urtwn_set_chan(sc, ic->ic_curchan,
                    IEEE80211_HTINFO_2NDCHAN_NONE);
 #endif
-
                if (ic->ic_opmode == IEEE80211_M_IBSS ||
                    ic->ic_opmode == IEEE80211_M_HOSTAP) {
                        /* Stop BCN */
@@ -3485,6 +3484,7 @@ urtwn_vap_create(struct ieee80211com *ic
 
        ifp = vap->iv_ifp;
         if_initialize(ifp);
+       ifp->if_softc = vap;
        ifp->if_init = urtwn_init;
        ifp->if_ioctl = urtwn_ioctl;
        ifp->if_start = urtwn_start;
@@ -3808,7 +3808,9 @@ urtwn_ioctl(struct ifnet *ifp, u_long cm
                break;
 
        default:
+               splx(s);
                error = ieee80211_ioctl(ifp, cmd, data);
+               s = splnet();
                break;
        }
        if (error == ENETRESET) {
@@ -5507,6 +5509,7 @@ urtwn_init(struct ifnet *ifp)
 {
        struct ieee80211vap *vap = ifp->if_softc;
        struct ieee80211com *ic = vap->iv_ic;
+       struct ifmediareq imr;
        struct urtwn_softc *sc = ic->ic_softc;
        struct urtwn_rx_data *data;
        uint32_t reg;
@@ -5764,6 +5767,14 @@ urtwn_init(struct ifnet *ifp)
                ieee80211_new_state(vap, IEEE80211_S_SCAN, -1);
        urtwn_wait_async(sc);
 
+       urtwn_getradiocaps(ic, IEEE80211_CHAN_MAX, &ic->ic_nchans,
+           ic->ic_channels);
+       ieee80211_chan_init(ic);
+       ieee80211_media_status(ifp, &imr);
+       imr.ifm_active |= IFM_AUTO;
+       ifmedia_set(&vap->iv_media,
+           imr.ifm_active &~ (IFM_MMASK | IFM_IEEE80211_TURBO));
+
        /* Init the rest of the 802.11 stuff */
        ieee80211_init(ifp);
 



Home | Main Index | Thread Index | Old Index