Author: avos
Date: Wed Apr 20 18:29:30 2016
New Revision: 298359
URL: https://svnweb.freebsd.org/changeset/base/298359

Log:
  net80211: replace internal LE_READ_*/LE_WRITE_* macro with system
  le*dec / le*enc functions.
  
  Replace net80211 specific macros with system-wide bytestream
  encoding/decoding functions:
  - LE_READ_2 ->  le16dec
  - LE_READ_4 ->  le32dec
  - LE_WRITE_2 -> le16enc
  - LE_WRITE_4 -> le32enc
  
  + drop ieee80211_input.h include, where it was included for these
  operations only.
  
  Reviewed by:  adrian
  Differential Revision:        https://reviews.freebsd.org/D6030

Modified:
  head/sys/dev/ath/if_ath.c
  head/sys/dev/ath/if_ath_beacon.c
  head/sys/dev/ath/if_ath_misc.h
  head/sys/dev/ath/if_ath_rx.c
  head/sys/dev/otus/if_otus.c
  head/sys/dev/rtwn/if_rtwn.c
  head/sys/dev/rtwn/if_rtwnreg.h
  head/sys/dev/urtwn/if_urtwn.c
  head/sys/net80211/ieee80211_hostap.c
  head/sys/net80211/ieee80211_ht.c
  head/sys/net80211/ieee80211_hwmp.c
  head/sys/net80211/ieee80211_input.c
  head/sys/net80211/ieee80211_input.h
  head/sys/net80211/ieee80211_mesh.c
  head/sys/net80211/ieee80211_output.c
  head/sys/net80211/ieee80211_scan_sta.c
  head/sys/net80211/ieee80211_sta.c
  head/sys/net80211/ieee80211_superg.c

Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c   Wed Apr 20 17:58:13 2016        (r298358)
+++ head/sys/dev/ath/if_ath.c   Wed Apr 20 18:29:30 2016        (r298359)
@@ -3483,10 +3483,10 @@ ath_update_mcast_hw(struct ath_softc *sc
                                /* calculate XOR of eight 6bit values */
                                dl = LLADDR((struct sockaddr_dl *)
                                    ifma->ifma_addr);
-                               val = LE_READ_4(dl + 0);
+                               val = le32dec(dl + 0);
                                pos = (val >> 18) ^ (val >> 12) ^ (val >> 6) ^
                                    val;
-                               val = LE_READ_4(dl + 3);
+                               val = le32dec(dl + 3);
                                pos ^= (val >> 18) ^ (val >> 12) ^ (val >> 6) ^
                                    val;
                                pos &= 0x3f;

Modified: head/sys/dev/ath/if_ath_beacon.c
==============================================================================
--- head/sys/dev/ath/if_ath_beacon.c    Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/dev/ath/if_ath_beacon.c    Wed Apr 20 18:29:30 2016        
(r298359)
@@ -942,11 +942,11 @@ ath_beacon_config(struct ath_softc *sc, 
        ATH_UNLOCK(sc);
 
        /* extract tstamp from last beacon and convert to TU */
-       nexttbtt = TSF_TO_TU(LE_READ_4(ni->ni_tstamp.data + 4),
-                            LE_READ_4(ni->ni_tstamp.data));
+       nexttbtt = TSF_TO_TU(le32dec(ni->ni_tstamp.data + 4),
+                            le32dec(ni->ni_tstamp.data));
 
-       tsf_beacon = ((uint64_t) LE_READ_4(ni->ni_tstamp.data + 4)) << 32;
-       tsf_beacon |= LE_READ_4(ni->ni_tstamp.data);
+       tsf_beacon = ((uint64_t) le32dec(ni->ni_tstamp.data + 4)) << 32;
+       tsf_beacon |= le32dec(ni->ni_tstamp.data);
 
        if (ic->ic_opmode == IEEE80211_M_HOSTAP ||
            ic->ic_opmode == IEEE80211_M_MBSS) {

Modified: head/sys/dev/ath/if_ath_misc.h
==============================================================================
--- head/sys/dev/ath/if_ath_misc.h      Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/dev/ath/if_ath_misc.h      Wed Apr 20 18:29:30 2016        
(r298359)
@@ -39,15 +39,6 @@
  * and into something else.
  */
 
-/* unaligned little endian access */
-#define LE_READ_2(p)                                                   \
-       ((u_int16_t)                                                    \
-        ((((u_int8_t *)(p))[0]      ) | (((u_int8_t *)(p))[1] <<  8)))
-#define LE_READ_4(p)                                                   \
-       ((u_int32_t)                                                    \
-        ((((u_int8_t *)(p))[0]      ) | (((u_int8_t *)(p))[1] <<  8) | \
-         (((u_int8_t *)(p))[2] << 16) | (((u_int8_t *)(p))[3] << 24)))
-
 extern int ath_rxbuf;
 extern int ath_txbuf;
 extern int ath_txbuf_mgmt;

Modified: head/sys/dev/ath/if_ath_rx.c
==============================================================================
--- head/sys/dev/ath/if_ath_rx.c        Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/dev/ath/if_ath_rx.c        Wed Apr 20 18:29:30 2016        
(r298359)
@@ -344,8 +344,8 @@ ath_recv_mgmt(struct ieee80211_node *ni,
        uint64_t tsf_beacon_target;
        int tsf_intval;
 
-       tsf_beacon_old = ((uint64_t) LE_READ_4(ni->ni_tstamp.data + 4)) << 32;
-       tsf_beacon_old |= LE_READ_4(ni->ni_tstamp.data);
+       tsf_beacon_old = ((uint64_t) le32dec(ni->ni_tstamp.data + 4)) << 32;
+       tsf_beacon_old |= le32dec(ni->ni_tstamp.data);
 
 #define        TU_TO_TSF(_tu)  (((u_int64_t)(_tu)) << 10)
        tsf_intval = 1;
@@ -378,8 +378,8 @@ ath_recv_mgmt(struct ieee80211_node *ni,
                        ATH_RSSI_LPF(sc->sc_halstats.ns_avgbrssi, rssi);
 
 
-                       tsf_beacon = ((uint64_t) LE_READ_4(ni->ni_tstamp.data + 
4)) << 32;
-                       tsf_beacon |= LE_READ_4(ni->ni_tstamp.data);
+                       tsf_beacon = ((uint64_t) le32dec(ni->ni_tstamp.data + 
4)) << 32;
+                       tsf_beacon |= le32dec(ni->ni_tstamp.data);
 
                        nexttbtt = ath_hal_getnexttbtt(sc->sc_ah);
 

Modified: head/sys/dev/otus/if_otus.c
==============================================================================
--- head/sys/dev/otus/if_otus.c Wed Apr 20 17:58:13 2016        (r298358)
+++ head/sys/dev/otus/if_otus.c Wed Apr 20 18:29:30 2016        (r298359)
@@ -62,7 +62,6 @@ __FBSDID("$FreeBSD$");
 #include <net80211/ieee80211_regdomain.h>
 #include <net80211/ieee80211_radiotap.h>
 #include <net80211/ieee80211_ratectl.h>
-#include <net80211/ieee80211_input.h>
 #ifdef IEEE80211_SUPPORT_SUPERG
 #include <net80211/ieee80211_superg.h>
 #endif
@@ -2307,7 +2306,7 @@ otus_set_multi(struct otus_softc *sc)
                                uint32_t val;
 
                                dl = LLADDR((struct sockaddr_dl *) 
ifma->ifma_addr);
-                               val = LE_READ_4(dl + 4);
+                               val = le32dec(dl + 4);
                                /* Get address byte 5 */
                                val = val & 0x0000ff00;
                                val = val >> 8;

Modified: head/sys/dev/rtwn/if_rtwn.c
==============================================================================
--- head/sys/dev/rtwn/if_rtwn.c Wed Apr 20 17:58:13 2016        (r298358)
+++ head/sys/dev/rtwn/if_rtwn.c Wed Apr 20 18:29:30 2016        (r298359)
@@ -1265,8 +1265,8 @@ rtwn_newstate(struct ieee80211vap *vap, 
                rtwn_write_4(sc, R92C_CR, reg);
 
                /* Set BSSID. */
-               rtwn_write_4(sc, R92C_BSSID + 0, LE_READ_4(&ni->ni_bssid[0]));
-               rtwn_write_4(sc, R92C_BSSID + 4, LE_READ_2(&ni->ni_bssid[4]));
+               rtwn_write_4(sc, R92C_BSSID + 0, le32dec(&ni->ni_bssid[0]));
+               rtwn_write_4(sc, R92C_BSSID + 4, le16dec(&ni->ni_bssid[4]));
 
                if (ic->ic_curmode == IEEE80211_MODE_11B)
                        rtwn_write_1(sc, R92C_INIRTS_RATE_SEL, 0);

Modified: head/sys/dev/rtwn/if_rtwnreg.h
==============================================================================
--- head/sys/dev/rtwn/if_rtwnreg.h      Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/dev/rtwn/if_rtwnreg.h      Wed Apr 20 18:29:30 2016        
(r298359)
@@ -895,10 +895,6 @@
 #define R92C_RAID_11B  6
 
 
-/* Macros to access unaligned little-endian memory. */
-#define LE_READ_2(x)   ((x)[0] | (x)[1] << 8)
-#define LE_READ_4(x)   ((x)[0] | (x)[1] << 8 | (x)[2] << 16 | (x)[3] << 24)
-
 /*
  * Macros to access subfields in registers.
  */

Modified: head/sys/dev/urtwn/if_urtwn.c
==============================================================================
--- head/sys/dev/urtwn/if_urtwn.c       Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/dev/urtwn/if_urtwn.c       Wed Apr 20 18:29:30 2016        
(r298359)
@@ -66,7 +66,6 @@ __FBSDID("$FreeBSD$");
 #include <netinet/ip.h>
 
 #include <net80211/ieee80211_var.h>
-#include <net80211/ieee80211_input.h>
 #include <net80211/ieee80211_regdomain.h>
 #include <net80211/ieee80211_radiotap.h>
 #include <net80211/ieee80211_ratectl.h>
@@ -2266,20 +2265,20 @@ urtwn_key_set_cb(struct urtwn_softc *sc,
        /* Write key. */
        for (i = 0; i < 4; i++) {
                error = urtwn_cam_write(sc, R92C_CAM_KEY(k->wk_keyix, i),
-                   LE_READ_4(&k->wk_key[i * 4]));
+                   le32dec(&k->wk_key[i * 4]));
                if (error != 0)
                        goto fail;
        }
 
        /* Write CTL0 last since that will validate the CAM entry. */
        error = urtwn_cam_write(sc, R92C_CAM_CTL1(k->wk_keyix),
-           LE_READ_4(&k->wk_macaddr[2]));
+           le32dec(&k->wk_macaddr[2]));
        if (error != 0)
                goto fail;
        error = urtwn_cam_write(sc, R92C_CAM_CTL0(k->wk_keyix),
            SM(R92C_CAM_ALGO, algo) |
            SM(R92C_CAM_KEYID, keyid) |
-           SM(R92C_CAM_MACLO, LE_READ_2(&k->wk_macaddr[0])) |
+           SM(R92C_CAM_MACLO, le16dec(&k->wk_macaddr[0])) |
            R92C_CAM_VALID);
        if (error != 0)
                goto fail;
@@ -2579,8 +2578,8 @@ urtwn_newstate(struct ieee80211vap *vap,
                urtwn_set_mode(sc, mode);
 
                /* Set BSSID. */
-               urtwn_write_4(sc, R92C_BSSID + 0, LE_READ_4(&ni->ni_bssid[0]));
-               urtwn_write_4(sc, R92C_BSSID + 4, LE_READ_2(&ni->ni_bssid[4]));
+               urtwn_write_4(sc, R92C_BSSID + 0, le32dec(&ni->ni_bssid[0]));
+               urtwn_write_4(sc, R92C_BSSID + 4, le16dec(&ni->ni_bssid[4]));
 
                if (ic->ic_curmode == IEEE80211_MODE_11B)
                        urtwn_write_1(sc, R92C_INIRTS_RATE_SEL, 0);

Modified: head/sys/net80211/ieee80211_hostap.c
==============================================================================
--- head/sys/net80211/ieee80211_hostap.c        Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_hostap.c        Wed Apr 20 18:29:30 2016        
(r298359)
@@ -1165,7 +1165,7 @@ static int
 wpa_cipher(const uint8_t *sel, uint8_t *keylen)
 {
 #define        WPA_SEL(x)      (((x)<<24)|WPA_OUI)
-       uint32_t w = LE_READ_4(sel);
+       uint32_t w = le32dec(sel);
 
        switch (w) {
        case WPA_SEL(WPA_CSE_NULL):
@@ -1195,7 +1195,7 @@ static int
 wpa_keymgmt(const uint8_t *sel)
 {
 #define        WPA_SEL(x)      (((x)<<24)|WPA_OUI)
-       uint32_t w = LE_READ_4(sel);
+       uint32_t w = le32dec(sel);
 
        switch (w) {
        case WPA_SEL(WPA_ASE_8021X_UNSPEC):
@@ -1242,7 +1242,7 @@ ieee80211_parse_wpa(struct ieee80211vap 
        }
        frm += 6, len -= 4;             /* NB: len is payload only */
        /* NB: iswpaoui already validated the OUI and type */
-       w = LE_READ_2(frm);
+       w = le16dec(frm);
        if (w != WPA_VERSION) {
                IEEE80211_DISCARD_IE(vap,
                    IEEE80211_MSG_ELEMID | IEEE80211_MSG_WPA,
@@ -1258,7 +1258,7 @@ ieee80211_parse_wpa(struct ieee80211vap 
        frm += 4, len -= 4;
 
        /* unicast ciphers */
-       n = LE_READ_2(frm);
+       n = le16dec(frm);
        frm += 2, len -= 2;
        if (len < n*4+2) {
                IEEE80211_DISCARD_IE(vap,
@@ -1278,7 +1278,7 @@ ieee80211_parse_wpa(struct ieee80211vap 
                rsn->rsn_ucastcipher = IEEE80211_CIPHER_AES_CCM;
 
        /* key management algorithms */
-       n = LE_READ_2(frm);
+       n = le16dec(frm);
        frm += 2, len -= 2;
        if (len < n*4) {
                IEEE80211_DISCARD_IE(vap,
@@ -1298,7 +1298,7 @@ ieee80211_parse_wpa(struct ieee80211vap 
                rsn->rsn_keymgmt = WPA_ASE_8021X_PSK;
 
        if (len > 2)            /* optional capabilities */
-               rsn->rsn_caps = LE_READ_2(frm);
+               rsn->rsn_caps = le16dec(frm);
 
        return 0;
 }
@@ -1312,7 +1312,7 @@ static int
 rsn_cipher(const uint8_t *sel, uint8_t *keylen)
 {
 #define        RSN_SEL(x)      (((x)<<24)|RSN_OUI)
-       uint32_t w = LE_READ_4(sel);
+       uint32_t w = le32dec(sel);
 
        switch (w) {
        case RSN_SEL(RSN_CSE_NULL):
@@ -1344,7 +1344,7 @@ static int
 rsn_keymgmt(const uint8_t *sel)
 {
 #define        RSN_SEL(x)      (((x)<<24)|RSN_OUI)
-       uint32_t w = LE_READ_4(sel);
+       uint32_t w = le32dec(sel);
 
        switch (w) {
        case RSN_SEL(RSN_ASE_8021X_UNSPEC):
@@ -1389,7 +1389,7 @@ ieee80211_parse_rsn(struct ieee80211vap 
                return IEEE80211_REASON_IE_INVALID;
        }
        frm += 2;
-       w = LE_READ_2(frm);
+       w = le16dec(frm);
        if (w != RSN_VERSION) {
                IEEE80211_DISCARD_IE(vap,
                    IEEE80211_MSG_ELEMID | IEEE80211_MSG_WPA,
@@ -1405,7 +1405,7 @@ ieee80211_parse_rsn(struct ieee80211vap 
        frm += 4, len -= 4;
 
        /* unicast ciphers */
-       n = LE_READ_2(frm);
+       n = le16dec(frm);
        frm += 2, len -= 2;
        if (len < n*4+2) {
                IEEE80211_DISCARD_IE(vap,
@@ -1425,7 +1425,7 @@ ieee80211_parse_rsn(struct ieee80211vap 
                rsn->rsn_ucastcipher = IEEE80211_CIPHER_AES_CCM;
 
        /* key management algorithms */
-       n = LE_READ_2(frm);
+       n = le16dec(frm);
        frm += 2, len -= 2;
        if (len < n*4) {
                IEEE80211_DISCARD_IE(vap,
@@ -1446,7 +1446,7 @@ ieee80211_parse_rsn(struct ieee80211vap 
 
        /* optional RSN capabilities */
        if (len > 2)
-               rsn->rsn_caps = LE_READ_2(frm);
+               rsn->rsn_caps = le16dec(frm);
        /* XXXPMKID */
 
        return 0;

Modified: head/sys/net80211/ieee80211_ht.c
==============================================================================
--- head/sys/net80211/ieee80211_ht.c    Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_ht.c    Wed Apr 20 18:29:30 2016        
(r298359)
@@ -1424,7 +1424,7 @@ ieee80211_parse_htcap(struct ieee80211_n
        } else
                ni->ni_flags &= ~IEEE80211_NODE_HTCOMPAT;
 
-       ni->ni_htcap = LE_READ_2(ie +
+       ni->ni_htcap = le16dec(ie +
                __offsetof(struct ieee80211_ie_htcap, hc_cap));
        ni->ni_htparam = ie[__offsetof(struct ieee80211_ie_htcap, hc_param)];
 }
@@ -1437,9 +1437,9 @@ htinfo_parse(struct ieee80211_node *ni,
 
        ni->ni_htctlchan = htinfo->hi_ctrlchannel;
        ni->ni_ht2ndchan = SM(htinfo->hi_byte1, IEEE80211_HTINFO_2NDCHAN);
-       w = LE_READ_2(&htinfo->hi_byte2);
+       w = le16dec(&htinfo->hi_byte2);
        ni->ni_htopmode = SM(w, IEEE80211_HTINFO_OPMODE);
-       w = LE_READ_2(&htinfo->hi_byte45);
+       w = le16dec(&htinfo->hi_byte45);
        ni->ni_htstbc = SM(w, IEEE80211_HTINFO_BASIC_STBCMCS);
 }
 
@@ -1932,9 +1932,9 @@ ht_recv_action_ba_addba_request(struct i
        int tid;
 
        dialogtoken = frm[2];
-       baparamset = LE_READ_2(frm+3);
-       batimeout = LE_READ_2(frm+5);
-       baseqctl = LE_READ_2(frm+7);
+       baparamset = le16dec(frm+3);
+       batimeout = le16dec(frm+5);
+       baseqctl = le16dec(frm+7);
 
        tid = MS(baparamset, IEEE80211_BAPS_TID);
 
@@ -1997,12 +1997,12 @@ ht_recv_action_ba_addba_response(struct 
        int tid, bufsiz;
 
        dialogtoken = frm[2];
-       code = LE_READ_2(frm+3);
-       baparamset = LE_READ_2(frm+5);
+       code = le16dec(frm+3);
+       baparamset = le16dec(frm+5);
        tid = MS(baparamset, IEEE80211_BAPS_TID);
        bufsiz = MS(baparamset, IEEE80211_BAPS_BUFSIZ);
        policy = MS(baparamset, IEEE80211_BAPS_POLICY);
-       batimeout = LE_READ_2(frm+7);
+       batimeout = le16dec(frm+7);
 
        tap = &ni->ni_tx_ampdu[tid];
        if ((tap->txa_flags & IEEE80211_AGGR_XCHGPEND) == 0) {
@@ -2069,8 +2069,8 @@ ht_recv_action_ba_delba(struct ieee80211
        uint16_t baparamset, code;
        int tid;
 
-       baparamset = LE_READ_2(frm+2);
-       code = LE_READ_2(frm+4);
+       baparamset = le16dec(frm+2);
+       code = le16dec(frm+4);
 
        tid = MS(baparamset, IEEE80211_DELBAPS_TID);
 

Modified: head/sys/net80211/ieee80211_hwmp.c
==============================================================================
--- head/sys/net80211/ieee80211_hwmp.c  Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_hwmp.c  Wed Apr 20 18:29:30 2016        
(r298359)
@@ -118,18 +118,6 @@ static void        hwmp_peerdown(struct ieee802
 static struct timeval ieee80211_hwmp_preqminint = { 0, 100000 };
 static struct timeval ieee80211_hwmp_perrminint = { 0, 100000 };
 
-/* unalligned little endian access */
-#define LE_WRITE_2(p, v) do {                          \
-       ((uint8_t *)(p))[0] = (v) & 0xff;               \
-       ((uint8_t *)(p))[1] = ((v) >> 8) & 0xff;        \
-} while (0)
-#define LE_WRITE_4(p, v) do {                          \
-       ((uint8_t *)(p))[0] = (v) & 0xff;               \
-       ((uint8_t *)(p))[1] = ((v) >> 8) & 0xff;        \
-       ((uint8_t *)(p))[2] = ((v) >> 16) & 0xff;       \
-       ((uint8_t *)(p))[3] = ((v) >> 24) & 0xff;       \
-} while (0)
-
 
 /* NB: the Target Address set in a Proactive PREQ is the broadcast address. */
 static const uint8_t   broadcastaddr[IEEE80211_ADDR_LEN] =
@@ -440,18 +428,18 @@ hwmp_recv_action_meshpath(struct ieee802
                        preq->preq_flags = *iefrm_t++;
                        preq->preq_hopcount = *iefrm_t++;
                        preq->preq_ttl = *iefrm_t++;
-                       preq->preq_id = LE_READ_4(iefrm_t); iefrm_t += 4;
+                       preq->preq_id = le32dec(iefrm_t); iefrm_t += 4;
                        IEEE80211_ADDR_COPY(preq->preq_origaddr, iefrm_t);
                        iefrm_t += 6;
-                       preq->preq_origseq = LE_READ_4(iefrm_t); iefrm_t += 4;
+                       preq->preq_origseq = le32dec(iefrm_t); iefrm_t += 4;
                        /* NB: may have Originator Proxied Address */
                        if (preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_AE)  {
                                IEEE80211_ADDR_COPY(
                                    preq->preq_orig_ext_addr, iefrm_t);
                                iefrm_t += 6;
                        }
-                       preq->preq_lifetime = LE_READ_4(iefrm_t); iefrm_t += 4;
-                       preq->preq_metric = LE_READ_4(iefrm_t); iefrm_t += 4;
+                       preq->preq_lifetime = le32dec(iefrm_t); iefrm_t += 4;
+                       preq->preq_metric = le32dec(iefrm_t); iefrm_t += 4;
                        preq->preq_tcount = *iefrm_t++;
                        
                        for (i = 0; i < preq->preq_tcount; i++) {
@@ -460,7 +448,7 @@ hwmp_recv_action_meshpath(struct ieee802
                                    preq->preq_targets[i].target_addr, iefrm_t);
                                iefrm_t += 6;
                                preq->preq_targets[i].target_seq =
-                                   LE_READ_4(iefrm_t);
+                                   le32dec(iefrm_t);
                                iefrm_t += 4;
                        }
 
@@ -489,18 +477,18 @@ hwmp_recv_action_meshpath(struct ieee802
                        prep->prep_ttl = *iefrm_t++;
                        IEEE80211_ADDR_COPY(prep->prep_targetaddr, iefrm_t);
                        iefrm_t += 6;
-                       prep->prep_targetseq = LE_READ_4(iefrm_t); iefrm_t += 4;
+                       prep->prep_targetseq = le32dec(iefrm_t); iefrm_t += 4;
                        /* NB: May have Target Proxied Address */
                        if (prep->prep_flags & IEEE80211_MESHPREP_FLAGS_AE)  {
                                IEEE80211_ADDR_COPY(
                                    prep->prep_target_ext_addr, iefrm_t);
                                iefrm_t += 6;
                        }
-                       prep->prep_lifetime = LE_READ_4(iefrm_t); iefrm_t += 4;
-                       prep->prep_metric = LE_READ_4(iefrm_t); iefrm_t += 4;
+                       prep->prep_lifetime = le32dec(iefrm_t); iefrm_t += 4;
+                       prep->prep_metric = le32dec(iefrm_t); iefrm_t += 4;
                        IEEE80211_ADDR_COPY(prep->prep_origaddr, iefrm_t);
                        iefrm_t += 6;
-                       prep->prep_origseq = LE_READ_4(iefrm_t); iefrm_t += 4;
+                       prep->prep_origseq = le32dec(iefrm_t); iefrm_t += 4;
 
                        hwmp_recv_prep(vap, ni, wh, prep);
                        IEEE80211_FREE(prep, M_80211_MESH_PREP);
@@ -533,7 +521,7 @@ hwmp_recv_action_meshpath(struct ieee802
                                IEEE80211_ADDR_COPY(
                                    perr->perr_dests[i].dest_addr, iefrm_t);
                                iefrm_t += 6;
-                               perr->perr_dests[i].dest_seq = 
LE_READ_4(iefrm_t);
+                               perr->perr_dests[i].dest_seq = le32dec(iefrm_t);
                                iefrm_t += 4;
                                /* NB: May have Target Proxied Address */
                                if (perr->perr_dests[i].dest_flags &
@@ -544,7 +532,7 @@ hwmp_recv_action_meshpath(struct ieee802
                                        iefrm_t += 6;
                                }
                                perr->perr_dests[i].dest_rcode =
-                                   LE_READ_2(iefrm_t);
+                                   le16dec(iefrm_t);
                                iefrm_t += 2;
                        }
 
@@ -566,9 +554,9 @@ hwmp_recv_action_meshpath(struct ieee802
                                return 1;
                        }
                        memcpy(&rann, mrann, sizeof(rann));
-                       rann.rann_seq = LE_READ_4(&mrann->rann_seq);
-                       rann.rann_interval = LE_READ_4(&mrann->rann_interval);
-                       rann.rann_metric = LE_READ_4(&mrann->rann_metric);
+                       rann.rann_seq = le32dec(&mrann->rann_seq);
+                       rann.rann_interval = le32dec(&mrann->rann_interval);
+                       rann.rann_metric = le32dec(&mrann->rann_metric);
                        hwmp_recv_rann(vap, ni, wh, &rann);
                        found++;
                        break;
@@ -682,12 +670,11 @@ hwmp_send_action(struct ieee80211vap *va
 }
 
 #define ADDSHORT(frm, v) do {          \
-       frm[0] = (v) & 0xff;            \
-       frm[1] = (v) >> 8;              \
+       le16enc(frm, v);                \
        frm += 2;                       \
 } while (0)
 #define ADDWORD(frm, v) do {           \
-       LE_WRITE_4(frm, v);             \
+       le32enc(frm, v);                \
        frm += 4;                       \
 } while (0)
 /*

Modified: head/sys/net80211/ieee80211_input.c
==============================================================================
--- head/sys/net80211/ieee80211_input.c Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_input.c Wed Apr 20 18:29:30 2016        
(r298359)
@@ -549,7 +549,7 @@ ieee80211_parse_beacon(struct ieee80211_
                        break;
                case IEEE80211_ELEMID_FHPARMS:
                        if (ic->ic_phytype == IEEE80211_T_FH) {
-                               scan->fhdwell = LE_READ_2(&frm[2]);
+                               scan->fhdwell = le16dec(&frm[2]);
                                scan->chan = IEEE80211_FH_CHAN(frm[4], frm[5]);
                                scan->fhindex = frm[6];
                        }

Modified: head/sys/net80211/ieee80211_input.h
==============================================================================
--- head/sys/net80211/ieee80211_input.h Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_input.h Wed Apr 20 18:29:30 2016        
(r298359)
@@ -80,70 +80,58 @@ void        ieee80211_ssid_mismatch(struct ieee
 } while (0)
 #endif /* !IEEE80211_DEBUG */
 
-/* unalligned little endian access */     
-#define LE_READ_2(p)                                   \
-       ((uint16_t)                                     \
-        ((((const uint8_t *)(p))[0]      ) |           \
-         (((const uint8_t *)(p))[1] <<  8)))
-#define LE_READ_4(p)                                   \
-       ((uint32_t)                                     \
-        ((((const uint8_t *)(p))[0]      ) |           \
-         (((const uint8_t *)(p))[1] <<  8) |           \
-         (((const uint8_t *)(p))[2] << 16) |           \
-         (((const uint8_t *)(p))[3] << 24)))
+#include <sys/endian.h>                /* For le16toh() / le32dec() */
 
 static __inline int
 iswpaoui(const uint8_t *frm)
 {
-       return frm[1] > 3 && LE_READ_4(frm+2) == ((WPA_OUI_TYPE<<24)|WPA_OUI);
+       return frm[1] > 3 && le32dec(frm+2) == ((WPA_OUI_TYPE<<24)|WPA_OUI);
 }
 
 static __inline int
 iswmeoui(const uint8_t *frm)
 {
-       return frm[1] > 3 && LE_READ_4(frm+2) == ((WME_OUI_TYPE<<24)|WME_OUI);
+       return frm[1] > 3 && le32dec(frm+2) == ((WME_OUI_TYPE<<24)|WME_OUI);
 }
 
 static __inline int
 iswmeparam(const uint8_t *frm)
 {
-       return frm[1] > 5 && LE_READ_4(frm+2) == ((WME_OUI_TYPE<<24)|WME_OUI) &&
+       return frm[1] > 5 && le32dec(frm+2) == ((WME_OUI_TYPE<<24)|WME_OUI) &&
                frm[6] == WME_PARAM_OUI_SUBTYPE;
 }
 
 static __inline int
 iswmeinfo(const uint8_t *frm)
 {
-       return frm[1] > 5 && LE_READ_4(frm+2) == ((WME_OUI_TYPE<<24)|WME_OUI) &&
+       return frm[1] > 5 && le32dec(frm+2) == ((WME_OUI_TYPE<<24)|WME_OUI) &&
                frm[6] == WME_INFO_OUI_SUBTYPE;
 }
 
 static __inline int
 isatherosoui(const uint8_t *frm)
 {
-       return frm[1] > 3 && LE_READ_4(frm+2) == ((ATH_OUI_TYPE<<24)|ATH_OUI);
+       return frm[1] > 3 && le32dec(frm+2) == ((ATH_OUI_TYPE<<24)|ATH_OUI);
 }
 
 static __inline int
 istdmaoui(const uint8_t *frm)
 {
-       return frm[1] > 3 && LE_READ_4(frm+2) == ((TDMA_OUI_TYPE<<24)|TDMA_OUI);
+       return frm[1] > 3 && le32dec(frm+2) == ((TDMA_OUI_TYPE<<24)|TDMA_OUI);
 }
 
 static __inline int
 ishtcapoui(const uint8_t *frm)
 {
-       return frm[1] > 3 && LE_READ_4(frm+2) == ((BCM_OUI_HTCAP<<24)|BCM_OUI);
+       return frm[1] > 3 && le32dec(frm+2) == ((BCM_OUI_HTCAP<<24)|BCM_OUI);
 }
 
 static __inline int
 ishtinfooui(const uint8_t *frm)
 {
-       return frm[1] > 3 && LE_READ_4(frm+2) == ((BCM_OUI_HTINFO<<24)|BCM_OUI);
+       return frm[1] > 3 && le32dec(frm+2) == ((BCM_OUI_HTINFO<<24)|BCM_OUI);
 }
 
-#include <sys/endian.h>                /* For le16toh() */
-
 /*
  * Check the current frame sequence number against the current TID
  * state and return whether it's in sequence or should be dropped.

Modified: head/sys/net80211/ieee80211_mesh.c
==============================================================================
--- head/sys/net80211/ieee80211_mesh.c  Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_mesh.c  Wed Apr 20 18:29:30 2016        
(r298359)
@@ -1710,7 +1710,7 @@ mesh_input(struct ieee80211_node *ni, st
                }
                /* XXX: are we sure there is no reallocating after m_pullup? */
 
-               seq = LE_READ_4(mc->mc_seq);
+               seq = le32dec(mc->mc_seq);
                if (IEEE80211_IS_MULTICAST(wh->i_addr1))
                        addr = wh->i_addr3;
                else if (ae == IEEE80211_MESH_AE_01)
@@ -2135,12 +2135,12 @@ mesh_parse_meshpeering_action(struct iee
                        mpie = (const struct ieee80211_meshpeer_ie *) frm;
                        memset(mp, 0, sizeof(*mp));
                        mp->peer_len = mpie->peer_len;
-                       mp->peer_proto = LE_READ_2(&mpie->peer_proto);
-                       mp->peer_llinkid = LE_READ_2(&mpie->peer_llinkid);
+                       mp->peer_proto = le16dec(&mpie->peer_proto);
+                       mp->peer_llinkid = le16dec(&mpie->peer_llinkid);
                        switch (subtype) {
                        case IEEE80211_ACTION_MESHPEERING_CONFIRM:
                                mp->peer_linkid =
-                                   LE_READ_2(&mpie->peer_linkid);
+                                   le16dec(&mpie->peer_linkid);
                                break;
                        case IEEE80211_ACTION_MESHPEERING_CLOSE:
                                /* NB: peer link ID is optional */
@@ -2148,12 +2148,12 @@ mesh_parse_meshpeering_action(struct iee
                                    (IEEE80211_MPM_BASE_SZ + 2)) {
                                        mp->peer_linkid = 0;
                                        mp->peer_rcode =
-                                           LE_READ_2(&mpie->peer_linkid);
+                                           le16dec(&mpie->peer_linkid);
                                } else {
                                        mp->peer_linkid =
-                                           LE_READ_2(&mpie->peer_linkid);
+                                           le16dec(&mpie->peer_linkid);
                                        mp->peer_rcode =
-                                           LE_READ_2(&mpie->peer_rcode);
+                                           le16dec(&mpie->peer_rcode);
                                }
                                break;
                        }
@@ -2550,8 +2550,8 @@ mesh_parse_meshgate_action(struct ieee80
                        ie->gann_hopcount = gannie->gann_hopcount;
                        ie->gann_ttl = gannie->gann_ttl;
                        IEEE80211_ADDR_COPY(ie->gann_addr, gannie->gann_addr);
-                       ie->gann_seq = LE_READ_4(&gannie->gann_seq);
-                       ie->gann_interval = LE_READ_2(&gannie->gann_interval);
+                       ie->gann_seq = le32dec(&gannie->gann_seq);
+                       ie->gann_interval = le16dec(&gannie->gann_interval);
                        break;
                }
                frm += frm[1] + 2;

Modified: head/sys/net80211/ieee80211_output.c
==============================================================================
--- head/sys/net80211/ieee80211_output.c        Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_output.c        Wed Apr 20 18:29:30 2016        
(r298359)
@@ -77,18 +77,6 @@ __FBSDID("$FreeBSD$");
 #define        ETHER_HEADER_COPY(dst, src) \
        memcpy(dst, src, sizeof(struct ether_header))
 
-/* unalligned little endian access */     
-#define LE_WRITE_2(p, v) do {                          \
-       ((uint8_t *)(p))[0] = (v) & 0xff;               \
-       ((uint8_t *)(p))[1] = ((v) >> 8) & 0xff;        \
-} while (0)
-#define LE_WRITE_4(p, v) do {                          \
-       ((uint8_t *)(p))[0] = (v) & 0xff;               \
-       ((uint8_t *)(p))[1] = ((v) >> 8) & 0xff;        \
-       ((uint8_t *)(p))[2] = ((v) >> 16) & 0xff;       \
-       ((uint8_t *)(p))[3] = ((v) >> 24) & 0xff;       \
-} while (0)
-
 static int ieee80211_fragment(struct ieee80211vap *, struct mbuf *,
        u_int hdrsize, u_int ciphdrsize, u_int mtu);
 static void ieee80211_tx_mgt_cb(struct ieee80211_node *, void *, int);
@@ -1518,7 +1506,7 @@ ieee80211_encap(struct ieee80211vap *vap
                }
                mc->mc_ttl = ms->ms_ttl;
                ms->ms_seq++;
-               LE_WRITE_4(mc->mc_seq, ms->ms_seq);
+               le32enc(mc->mc_seq, ms->ms_seq);
                break;
 #endif
        case IEEE80211_M_WDS:           /* NB: is4addr should always be true */
@@ -1843,7 +1831,7 @@ static uint8_t *
 ieee80211_add_cfparms(uint8_t *frm, struct ieee80211com *ic)
 {
 #define        ADDSHORT(frm, v) do {   \
-       LE_WRITE_2(frm, v);     \
+       le16enc(frm, v);        \
        frm += 2;               \
 } while (0)
        *frm++ = IEEE80211_ELEMID_CFPARMS;
@@ -1898,7 +1886,7 @@ ieee80211_add_wme_param(uint8_t *frm, st
 {
 #define        SM(_v, _f)      (((_v) << _f##_S) & _f)
 #define        ADDSHORT(frm, v) do {   \
-       LE_WRITE_2(frm, v);     \
+       le16enc(frm, v);        \
        frm += 2;               \
 } while (0)
        /* NB: this works 'cuz a param has an info at the front */

Modified: head/sys/net80211/ieee80211_scan_sta.c
==============================================================================
--- head/sys/net80211/ieee80211_scan_sta.c      Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_scan_sta.c      Wed Apr 20 18:29:30 2016        
(r298359)
@@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
+#include <sys/endian.h>
 #include <sys/malloc.h>
 #include <sys/module.h>
 
@@ -785,7 +786,7 @@ maxrate(const struct ieee80211_scan_entr
                } else
                        for (i = 31; i >= 0 && isclr(htcap->hc_mcsset, i); i--);
                if (i >= 0) {
-                       caps = LE_READ_2(&htcap->hc_cap);
+                       caps = le16dec(&htcap->hc_cap);
                        if ((caps & IEEE80211_HTCAP_CHWIDTH40) &&
                            (caps & IEEE80211_HTCAP_SHORTGI40))
                                rmax = ieee80211_htrates[i].ht40_rate_400ns;

Modified: head/sys/net80211/ieee80211_sta.c
==============================================================================
--- head/sys/net80211/ieee80211_sta.c   Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_sta.c   Wed Apr 20 18:29:30 2016        
(r298359)
@@ -1120,7 +1120,7 @@ ieee80211_parse_wmeparams(struct ieee802
                wmep->wmep_aifsn = MS(frm[0], WME_PARAM_AIFSN);
                wmep->wmep_logcwmin = MS(frm[1], WME_PARAM_LOGCWMIN);
                wmep->wmep_logcwmax = MS(frm[1], WME_PARAM_LOGCWMAX);
-               wmep->wmep_txopLimit = LE_READ_2(frm+2);
+               wmep->wmep_txopLimit = le16dec(frm+2);
                frm += 4;
        }
        wme->wme_wmeChanParams.cap_info = qosinfo;

Modified: head/sys/net80211/ieee80211_superg.c
==============================================================================
--- head/sys/net80211/ieee80211_superg.c        Wed Apr 20 17:58:13 2016        
(r298358)
+++ head/sys/net80211/ieee80211_superg.c        Wed Apr 20 18:29:30 2016        
(r298359)
@@ -195,7 +195,7 @@ ieee80211_parse_ath(struct ieee80211_nod
                (const struct ieee80211_ath_ie *) ie;
 
        ni->ni_ath_flags = ath->ath_capability;
-       ni->ni_ath_defkeyix = LE_READ_2(&ath->ath_defkeyix);
+       ni->ni_ath_defkeyix = le16dec(&ath->ath_defkeyix);
 }
 
 int
@@ -216,7 +216,7 @@ ieee80211_parse_athparams(struct ieee802
        }
        ath = (const struct ieee80211_ath_ie *)frm;
        capschanged = (ni->ni_ath_flags != ath->ath_capability);
-       defkeyix = LE_READ_2(ath->ath_defkeyix);
+       defkeyix = le16dec(ath->ath_defkeyix);
        if (capschanged || defkeyix != ni->ni_ath_defkeyix) {
                ni->ni_ath_flags = ath->ath_capability;
                ni->ni_ath_defkeyix = defkeyix;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to