Source-Changes-HG archive

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

[src-draft/trunk]: src/sys/net80211 Add and use mbuf context accessors



details:   https://anonhg.NetBSD.org/src-all/rev/ee809eaa1174
branches:  trunk
changeset: 376951:ee809eaa1174
user:      Martin Husemann <martin%NetBSD.org@localhost>
date:      Thu Dec 10 18:07:58 2020 +0100

description:
Add and use mbuf context accessors

diffstat:

 sys/net80211/ieee80211_ageq.c   |  22 ++++------------------
 sys/net80211/ieee80211_hwmp.c   |   7 +------
 sys/net80211/ieee80211_mesh.c   |   6 +-----
 sys/net80211/ieee80211_netbsd.h |  10 ++++++++++
 sys/net80211/ieee80211_output.c |  12 ++----------
 sys/net80211/ieee80211_power.c  |   7 ++-----
 sys/net80211/ieee80211_superg.c |  11 +++++++----
 sys/net80211/ieee80211_wds.c    |  13 ++-----------
 8 files changed, 29 insertions(+), 59 deletions(-)

diffs (211 lines):

diff -r da30e04e1458 -r ee809eaa1174 sys/net80211/ieee80211_ageq.c
--- a/sys/net80211/ieee80211_ageq.c     Thu Dec 10 17:35:39 2020 +0100
+++ b/sys/net80211/ieee80211_ageq.c     Thu Dec 10 18:07:58 2020 +0100
@@ -96,14 +96,11 @@ ieee80211_ageq_cleanup(struct ieee80211_
 static void
 ageq_mfree(struct mbuf *m)
 {
-#ifdef __FreeBSD__             
        if (m->m_flags & M_ENCAP) {
-               struct ieee80211_node *ni = (void *) m->m_pkthdr.rcvif;
+               struct ieee80211_node *ni = IEEE80211_MBUF_GETNODE(m,
+                   struct ieee80211_node *);
                ieee80211_free_node(ni);
        }
-#elif __NetBSD__
-       /* NNN how does one free the rcvif??? */
-#endif
 
        m->m_nextpkt = NULL;
        m_freem(m);
@@ -227,22 +224,11 @@ ieee80211_ageq_remove(struct ieee80211_a
        prev = &aq->aq_head;
        phead = &head;
        while ((m = *prev) != NULL) {
-#ifdef __FreeBSD__             
-               if (match != NULL && m->m_pkthdr.rcvif != (void *) match) {
+               if (match != NULL &&
+                   IEEE80211_MBUF_GETNODE(m, void*) != (void *) match) {
                        prev = &m->m_nextpkt;
                        continue;
                }
-#elif __NetBSD__
-               int s;
-               struct ifnet *ifp = m_get_rcvif(m,&s);
-               if ((void *)match != (void *)ifp) {
-                       prev = &m->m_nextpkt;
-                       m_put_rcvif(ifp,&s);
-                       continue;
-               }
-               m_put_rcvif(ifp,&s);
-                       
-#endif
                /*
                 * Adjust q length.
                 */
diff -r da30e04e1458 -r ee809eaa1174 sys/net80211/ieee80211_hwmp.c
--- a/sys/net80211/ieee80211_hwmp.c     Thu Dec 10 17:35:39 2020 +0100
+++ b/sys/net80211/ieee80211_hwmp.c     Thu Dec 10 18:07:58 2020 +0100
@@ -2041,13 +2041,8 @@ done:
                        IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_HWMP, dest,
                            "%s", "queue frame until path found");
                        KASSERT((m->m_pkthdr.csum_flags & CSUM_SND_TAG) == 0);
-#ifdef __FreeBSD__
-                       m->m_pkthdr.rcvif = (void *)(uintptr_t)
-                           ieee80211_mac_hash(ic, dest);
-#elif __NetBSD__
-                       m_set_rcvif(m,  (void *)(uintptr_t)
+                       IEEE80211_MBUF_SETNODE(m, (uintptr_t)
                            ieee80211_mac_hash(ic, dest));
-#endif                       
                        /* XXX age chosen randomly */
                        ieee80211_ageq_append(&ic->ic_stageq, m,
                            IEEE80211_INACT_WAIT);
diff -r da30e04e1458 -r ee809eaa1174 sys/net80211/ieee80211_mesh.c
--- a/sys/net80211/ieee80211_mesh.c     Thu Dec 10 17:35:39 2020 +0100
+++ b/sys/net80211/ieee80211_mesh.c     Thu Dec 10 18:07:58 2020 +0100
@@ -1264,11 +1264,7 @@ mesh_forward(struct ieee80211vap *vap, s
 
        /* XXX do we know m_nextpkt is NULL? */
        KASSERT((mcopy->m_pkthdr.csum_flags & CSUM_SND_TAG) == 0);
-#if __FreeBSD__
-       mcopy->m_pkthdr.rcvif = (void *) ni;
-#elif __NetBSD__
-       m_set_rcvif(mcopy,(void *)ni);
-#endif
+       IEEE80211_MBUF_SETNODE(mcopy, ni);
 
        /*
         * XXX this bypasses all of the VAP TX handling; it passes frames
diff -r da30e04e1458 -r ee809eaa1174 sys/net80211/ieee80211_netbsd.h
--- a/sys/net80211/ieee80211_netbsd.h   Thu Dec 10 17:35:39 2020 +0100
+++ b/sys/net80211/ieee80211_netbsd.h   Thu Dec 10 18:07:58 2020 +0100
@@ -611,6 +611,16 @@ struct mbuf *ieee80211_getmgtframe(uint8
 #define        M_WME_GETAC(m)  ((m)->m_pkthdr.ether_vtag)
 
 /*
+ * Store a node pointer in the mbuf context
+ *
+ * FreeBSD version: 
+ *     (M)->m_pkthdr.rcvif = (void *)(N);
+ *     (T)(M)->m_pkthdr.rcvif
+ */
+#define IEEE80211_MBUF_SETNODE(M, N)   M_SETCTX(M, N)
+#define        IEEE80211_MBUF_GETNODE(M, T)    M_GETCTX(M, T)
+
+/*
  * Mbufs on the power save queue are tagged with an age and
  * timed out.  We reuse the hardware checksum field in the
  * mbuf packet header to store this data.
diff -r da30e04e1458 -r ee809eaa1174 sys/net80211/ieee80211_output.c
--- a/sys/net80211/ieee80211_output.c   Thu Dec 10 17:35:39 2020 +0100
+++ b/sys/net80211/ieee80211_output.c   Thu Dec 10 18:07:58 2020 +0100
@@ -193,11 +193,7 @@ ieee80211_vap_pkt_send_dest(struct ieee8
         * interface it (might have been) received on.
         */
        KASSERT((m->m_pkthdr.csum_flags & CSUM_SND_TAG) == 0);
-#if __FreeBSD__
-       m->m_pkthdr.rcvif = (void *)ni;
-#elif __NetBSD__
-       m_set_rcvif(m, (void *)ni);
-#endif
+       IEEE80211_MBUF_SETNODE(m, ni);
        mcast = (m->m_flags & (M_MCAST | M_BCAST)) ? 1: 0;
 
        BPF_MTAP(ifp, m);               /* 802.3 tx */
@@ -602,11 +598,7 @@ ieee80211_raw_output(struct ieee80211vap
         * it would if it were going via the normal path.
         */
        KASSERT((m->m_pkthdr.csum_flags & CSUM_SND_TAG) == 0);
-#if __FreeBSD__
-       m->m_pkthdr.rcvif = (void *)ni;
-#elif __NetBSD__
-       m_set_rcvif(m, (void*)ni);
-#endif
+       IEEE80211_MBUF_SETNODE(m, ni);
 
        /*
         * Attempt to add bpf transmit parameters.
diff -r da30e04e1458 -r ee809eaa1174 sys/net80211/ieee80211_power.c
--- a/sys/net80211/ieee80211_power.c    Thu Dec 10 17:35:39 2020 +0100
+++ b/sys/net80211/ieee80211_power.c    Thu Dec 10 18:07:58 2020 +0100
@@ -187,11 +187,8 @@ static void
 psq_mfree(struct mbuf *m)
 {
        if (m->m_flags & M_ENCAP) {
-#ifdef __FreeBSD__
-               struct ieee80211_node *ni = (void *) m->m_pkthdr.rcvif;
-#elif __NetBSD__
-               struct ieee80211_node *ni = (void *) m_get_rcvif_NOMPSAFE(m);
-#endif
+               struct ieee80211_node *ni = IEEE80211_MBUF_GETNODE(m,
+                   struct ieee80211_node *);
                ieee80211_free_node(ni);
        }
        m->m_nextpkt = NULL;
diff -r da30e04e1458 -r ee809eaa1174 sys/net80211/ieee80211_superg.c
--- a/sys/net80211/ieee80211_superg.c   Thu Dec 10 17:35:39 2020 +0100
+++ b/sys/net80211/ieee80211_superg.c   Thu Dec 10 18:07:58 2020 +0100
@@ -637,7 +637,8 @@ ff_flush(struct mbuf *head, struct mbuf 
                next = m->m_nextpkt;
                m->m_nextpkt = NULL;
 
-               ni = (struct ieee80211_node *) m->m_pkthdr.rcvif;
+               ni = (struct ieee80211_node *) IEEE80211_MBUF_GETNODE(m,
+                   struct ieee80211_node *);
                vap = ni->ni_vap;
 
                IEEE80211_NOTE(vap, IEEE80211_MSG_SUPERG, ni,
@@ -671,7 +672,8 @@ ieee80211_ff_age(struct ieee80211com *ic
                int tid = WME_AC_TO_TID(M_WME_GETAC(m));
 
                /* clear staging ref to frame */
-               ni = (struct ieee80211_node *) m->m_pkthdr.rcvif;
+               ni = (struct ieee80211_node *) IEEE80211_MBUF_GETNODE(m,
+                   struct ieee80211_node *);
                KASSERT(ni->ni_tx_superg[tid] == m, ("staging queue empty"));
                ni->ni_tx_superg[tid] = NULL;
 
@@ -886,8 +888,9 @@ ieee80211_ff_check(struct ieee80211_node
                 * Release the node reference; we only need
                 * the one already in mstaged.
                 */
-               KASSERT(mstaged->m_pkthdr.rcvif == (void *)ni,
-                   ("rcvif %p ni %p", mstaged->m_pkthdr.rcvif, ni));
+               KASSERTMSG(
+                   IEEE80211_MBUF_GETNODE(mstaged, void*) == (void *)ni,
+                   "rcvif %p ni %p", mstaged->m_pkthdr.rcvif, ni);
                ieee80211_free_node(ni);
 
                m->m_nextpkt = NULL;
diff -r da30e04e1458 -r ee809eaa1174 sys/net80211/ieee80211_wds.c
--- a/sys/net80211/ieee80211_wds.c      Thu Dec 10 17:35:39 2020 +0100
+++ b/sys/net80211/ieee80211_wds.c      Thu Dec 10 18:07:58 2020 +0100
@@ -321,11 +321,7 @@ ieee80211_dwds_mcast(struct ieee80211vap
                }
                mcopy->m_flags |= M_MCAST;
                KASSERT((mcopy->m_pkthdr.csum_flags & CSUM_SND_TAG) == 0);
-#ifdef __FreeBSD__             
-               mcopy->m_pkthdr.rcvif = (void *) ni;
-#elif __NetBSD__
-               m_set_rcvif(mcopy, (void *)ni);
-#endif
+               IEEE80211_MBUF_SETNODE(mcopy, ni);
 
                err = ieee80211_parent_xmitpkt(ic, mcopy);
                IEEE80211_TX_UNLOCK(ic);
@@ -359,13 +355,8 @@ ieee80211_dwds_discover(struct ieee80211
         * XXX per/vap beacon interval?
         */
        KASSERT((m->m_pkthdr.csum_flags & CSUM_SND_TAG) == 0);
-#ifdef __FreeBSD__
-       m->m_pkthdr.rcvif = (void *)(uintptr_t)
-           ieee80211_mac_hash(ic, ni->ni_macaddr);
-#elif __NetBSD__
-       m_set_rcvif(m, (void *)(uintptr_t)
+       IEEE80211_MBUF_SETNODE(m, (uintptr_t)
            ieee80211_mac_hash(ic, ni->ni_macaddr));
-#endif
        (void) ieee80211_ageq_append(&ic->ic_stageq, m,
            ((ni->ni_intval * ic->ic_lintval) << 2) / 1024);
        ieee80211_notify_wds_discover(ni);



Home | Main Index | Thread Index | Old Index