Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153705618
D50404.id155638.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D50404.id155638.diff
View Options
diff --git a/sys/net80211/ieee80211_freebsd.h b/sys/net80211/ieee80211_freebsd.h
--- a/sys/net80211/ieee80211_freebsd.h
+++ b/sys/net80211/ieee80211_freebsd.h
@@ -542,6 +542,7 @@
void ieee80211_vap_sync_mac_address(struct ieee80211vap *);
void ieee80211_vap_copy_mac_address(struct ieee80211vap *);
+void ieee80211_vap_deliver_data(struct ieee80211vap *, struct mbuf *);
#endif /* _KERNEL */
diff --git a/sys/net80211/ieee80211_freebsd.c b/sys/net80211/ieee80211_freebsd.c
--- a/sys/net80211/ieee80211_freebsd.c
+++ b/sys/net80211/ieee80211_freebsd.c
@@ -1221,6 +1221,28 @@
NET_EPOCH_EXIT(et);
}
+/**
+ * @brief Deliver data into the upper ifp of the VAP interface
+ *
+ * This delivers an 802.3 frame from net80211 up to the operating
+ * system network interface layer.
+ *
+ * @param vap the current VAP
+ * @param m the 802.3 frame to pass up to the VAP interface
+ *
+ * Note: this API consumes the mbuf.
+ */
+void
+ieee80211_vap_deliver_data(struct ieee80211vap *vap, struct mbuf *m)
+{
+ struct ifnet *ifp = vap->iv_ifp;
+ struct epoch_tracker et;
+
+ NET_EPOCH_ENTER(et);
+ if_input(ifp, m);
+ NET_EPOCH_EXIT(et);
+}
+
/**
* @brief Initial MAC address setup for a VAP.
*
diff --git a/sys/net80211/ieee80211_hostap.c b/sys/net80211/ieee80211_hostap.c
--- a/sys/net80211/ieee80211_hostap.c
+++ b/sys/net80211/ieee80211_hostap.c
@@ -416,8 +416,6 @@
(void) ieee80211_vap_xmitpkt(vap, mcopy);
}
if (m != NULL) {
- struct epoch_tracker et;
-
/*
* Mark frame as coming from vap's interface.
*/
@@ -434,9 +432,8 @@
m->m_pkthdr.ether_vtag = ni->ni_vlan;
m->m_flags |= M_VLANTAG;
}
- NET_EPOCH_ENTER(et);
- ifp->if_input(ifp, m);
- NET_EPOCH_EXIT(et);
+
+ ieee80211_vap_deliver_data(vap, m);
}
}
diff --git a/sys/net80211/ieee80211_input.c b/sys/net80211/ieee80211_input.c
--- a/sys/net80211/ieee80211_input.c
+++ b/sys/net80211/ieee80211_input.c
@@ -274,7 +274,6 @@
ieee80211_deliver_data(struct ieee80211vap *vap,
struct ieee80211_node *ni, struct mbuf *m)
{
- struct epoch_tracker et;
struct ether_header *eh = mtod(m, struct ether_header *);
struct ifnet *ifp = vap->iv_ifp;
@@ -305,9 +304,8 @@
m->m_pkthdr.ether_vtag = ni->ni_vlan;
m->m_flags |= M_VLANTAG;
}
- NET_EPOCH_ENTER(et);
- ifp->if_input(ifp, m);
- NET_EPOCH_EXIT(et);
+
+ ieee80211_vap_deliver_data(vap, m);
}
struct mbuf *
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 24, 2:08 AM (15 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32055495
Default Alt Text
D50404.id155638.diff (2 KB)
Attached To
Mode
D50404: net80211: refactor the if_input call into ieee80211_vap_deliver_data()
Attached
Detach File
Event Timeline
Log In to Comment