Lines Matching +full:un +full:-
3 /*-
6 * Copyright (c) 2015-2016 Andriy Voskoboinyk <avos@FreeBSD.org>
81 for (i = 0; i < rs->rs_nrates; i++) {
83 ridx = rate2ridx(IEEE80211_RV(rs->rs_rates[i]));
86 if (((rs->rs_rates[i] & IEEE80211_RATE_BASIC) != 0) ||
96 for (i = 0; i < rs_ht->rs_nrates; i++) {
97 uint8_t rate = rs_ht->rs_rates[i] & 0x7f;
98 bool is_basic = rs_ht->rs_rates[i] &
100 /* Only do up to 2-stream rates for now */
147 * as the highest available rate - that may end up
159 device_printf(sc->sc_dev,
163 ridx = fls(rates) - 1;
173 rtwn_update_avgrssi(struct rtwn_softc *sc, struct rtwn_node *un, int8_t rssi,
179 if (rssi <= -100 || rssi >= 20)
191 pwdb -= 4;
193 pwdb -= 8;
195 pwdb -= 6;
197 pwdb -= 2;
200 if (un->avg_pwdb == -1) /* Init. */
201 un->avg_pwdb = pwdb;
202 else if (un->avg_pwdb < pwdb)
203 un->avg_pwdb = ((un->avg_pwdb * 19 + pwdb) / 20) + 1;
205 un->avg_pwdb = ((un->avg_pwdb * 19 + pwdb) / 20);
208 "MACID %d, PWDB %d, EMA %d\n", un->id, pwdb, un->avg_pwdb);
253 rxdw3 = le32toh(stat->rxdw3);
254 tsfl = le32toh(stat->tsf_low);
270 if (abs(tsfl0 - tsfl) < abs(tsfl1 - tsfl)) {
283 tsft--;
293 struct ieee80211com *ic = &sc->sc_ic;
297 struct rtwn_node *un;
305 rxdw0 = le32toh(stat->rxdw0);
313 if ((wh->i_fc[1] & IEEE80211_FC1_PROTECTED) &&
315 m->m_flags |= M_WEP;
319 if (ni != NULL && (ni->ni_flags & IEEE80211_NODE_HT))
320 m->m_flags |= M_AMPDU;
323 un = RTWN_NODE(ni);
328 physt = (un != NULL) ? &un->last_physt : &sc->last_physt;
334 memcpy(&sc->last_physt, physt, sizeof(sc->last_physt));
335 if (un != NULL)
336 memcpy(&un->last_physt, physt, sizeof(sc->last_physt));
350 if (sc->sc_ena_tsf64) {
355 rxs.c_rx_tsf = le32toh(stat->tsf_low);
362 /* XXX TODO: we really need a rate-to-string method */
365 if (un != NULL && infosz != 0 && (rxdw0 & RTWN_RXDW0_PHYST)) {
367 rtwn_update_avgrssi(sc, un, rssi, is_cck);
372 rxs.c_rssi = rssi - rxs.c_nf;
376 struct rtwn_rx_radiotap_header *tap = &sc->sc_rxtap;
378 tap->wr_flags = rtwn_rx_radiotap_flags(sc, desc);
379 tap->wr_tsft = htole64(rxs.c_rx_tsf);
380 tap->wr_rate = rxs.c_rate;
381 tap->wr_dbm_antsignal = rssi;
382 tap->wr_dbm_antnoise = rxs.c_nf;
389 if (sc->rcr & R92C_RCR_APPFCS)
390 m_adj(m, -IEEE80211_CRC_LEN);
400 struct ieee80211vap *vap = ni->ni_vap;
401 struct rtwn_softc *sc = vap->iv_ic->ic_softc;
405 uvp->recv_mgmt(ni, m, subtype, rxs, rssi, nf);
407 if (vap->iv_state == IEEE80211_S_RUN &&
410 ni_tstamp = le64toh(ni->ni_tstamp.tsf);
412 rtwn_get_tsf(sc, &curr_tstamp, uvp->id);
430 pos ^= (mask >> (i * 8 + j - 1));
452 struct ieee80211com *ic = &sc->sc_ic;
458 if (ic->ic_allmulti == 0) {
465 TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
466 if_foreach_llmaddr(vap->iv_ifp, rtwm_hash_maddr, mfilt);
483 if (sc->bcn_vaps == 0) { /* STA and/or MONITOR mode vaps */
489 if (sc->ap_vaps == sc->nvaps - sc->mon_vaps) { /* AP vaps only */
526 sc->rcr |= R92C_RCR_AM | R92C_RCR_AB | R92C_RCR_APM |
537 sc->rcr |= R92C_RCR_APPFCS;
546 if (!(sc->sc_flags & RTWN_RCR_LOCKED))
547 rtwn_write_4(sc, R92C_RCR, sc->rcr);
555 sc->rcr &= ~R92C_RCR_CBSSID_BCN;
557 sc->rcr |= R92C_RCR_CBSSID_BCN;
564 struct ieee80211com *ic = &sc->sc_ic;
572 if (sc->bcn_vaps == 0)
574 if (sc->ap_vaps == 0)
577 if (ic->ic_promisc == 0 && sc->mon_vaps == 0) {
578 if (sc->bcn_vaps != 0)
580 if (sc->ap_vaps != 0) /* for Null data frames */
583 sc->rcr &= ~mask_all;
584 sc->rcr |= mask_min;
586 sc->rcr &= ~mask_min;
587 sc->rcr |= mask_all;
594 sc->rcr |= R92C_RCR_APPFCS;