svn commit: r191997 - projects/mesh11s/sys/net80211
Rui Paulo
rpaulo at FreeBSD.org
Mon May 11 18:20:35 UTC 2009
Author: rpaulo
Date: Mon May 11 18:20:34 2009
New Revision: 191997
URL: http://svn.freebsd.org/changeset/base/191997
Log:
Checkpoint input data processing.
Sponsored by: The FreeBSD Foundation
Modified:
projects/mesh11s/sys/net80211/ieee80211_mesh.c
projects/mesh11s/sys/net80211/ieee80211_mesh.h
Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.c Mon May 11 17:29:11 2009 (r191996)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.c Mon May 11 18:20:34 2009 (r191997)
@@ -264,7 +264,10 @@ mesh_input(struct ieee80211_node *ni, st
switch (type) {
case IEEE80211_FC0_TYPE_DATA:
- hdrspace = ieee80211_hdrspace(ic, wh);
+ IEEE80211_NOTE(vap, IEEE80211_MSG_MESH, ni,
+ "%s", "received data frame");
+ hdrspace = ieee80211_hdrspace(ic, wh)
+ + sizeof(struct ieee80211_meshcontrol);
if (m->m_len < hdrspace &&
(m = m_pullup(m, hdrspace)) == NULL) {
IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY,
@@ -291,7 +294,6 @@ mesh_input(struct ieee80211_node *ni, st
/*
* Next up, any fragmentation.
*/
-#if 0
if (!IEEE80211_IS_MULTICAST(wh->i_addr3)) {
m = ieee80211_defrag(ni, m, hdrspace);
if (m == NULL) {
@@ -299,7 +301,6 @@ mesh_input(struct ieee80211_node *ni, st
goto out;
}
}
-#endif
wh = NULL; /* no longer valid, catch any uses */
if (bpf_peers_present(vap->iv_rawbpf))
bpf_mtap(vap->iv_rawbpf, m);
@@ -320,6 +321,7 @@ mesh_input(struct ieee80211_node *ni, st
IEEE80211_NODE_STAT(ni, rx_decap);
goto err;
}
+
/* XXX SuperG/HT */
ieee80211_deliver_data(vap, ni, m);
return type;
Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.h Mon May 11 17:29:11 2009 (r191996)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.h Mon May 11 18:20:34 2009 (r191997)
@@ -264,6 +264,13 @@ struct ieee80211_meshpuc_ie {
#define IEEE80211_ACTION_MESHPEERING_CONFIRM 1
#define IEEE80211_ACTION_MESHPEERING_CLOSE 2
+struct ieee80211_meshcontrol {
+ uint8_t mc_flags;
+ uint8_t mc_ttl;
+ uint32_t mc_seq;
+ /* more mesh addresses follow */
+} __packed;
+
void ieee80211_mesh_attach(struct ieee80211com *);
void ieee80211_mesh_detach(struct ieee80211com *);
void ieee80211_parse_meshid(struct ieee80211_node *, const uint8_t *);
More information about the svn-src-projects
mailing list