diff options
author | Javier Cardona <javier@cozybit.com> | 2009-08-10 15:15:48 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-08-14 09:14:00 -0400 |
commit | 3c5772a5279de9eadfff7adb5ddea08106495fff (patch) | |
tree | 297772521c18283ccfa19aacb090f396fa2b399e /net/mac80211/mesh.h | |
parent | a9e3091bf08ddea35f172549a8a21d5bd6ee6129 (diff) |
mac80211: Use 3-address format for mesh broadcast frames.
The 11s task group recently changed the frame mesh multicast/broadcast frame
format to use 3-address. This was done to avoid interactions with widely
deployed lazy-WDS access points.
This patch changes the format of group addressed frames, both mesh-originated
and proxied, to use the data format defined in draft D2.08 and forward. The
address fields used for group addressed frames is:
In 802.11 header
ToDS:0 FromDS:1
addr1: DA (broadcast/multicast address)
addr2: TA
addr3: Mesh SA
In address extension header:
addr4: SA (only present if frame was proxied)
Note that this change breaks backward compatibility with earlier mesh stack
versions.
Signed-off-by: Andrey Yurovsky <andrey@cozybit.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mesh.h')
-rw-r--r-- | net/mac80211/mesh.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/mac80211/mesh.h b/net/mac80211/mesh.h index 6aaf1ecbcb63..2ebd74cb0380 100644 --- a/net/mac80211/mesh.h +++ b/net/mac80211/mesh.h | |||
@@ -193,8 +193,11 @@ struct mesh_rmc { | |||
193 | 193 | ||
194 | /* Public interfaces */ | 194 | /* Public interfaces */ |
195 | /* Various */ | 195 | /* Various */ |
196 | int ieee80211_fill_mesh_addresses(struct ieee80211_hdr *hdr, __le16 *fc, | ||
197 | char *da, char *sa); | ||
196 | int ieee80211_new_mesh_header(struct ieee80211s_hdr *meshhdr, | 198 | int ieee80211_new_mesh_header(struct ieee80211s_hdr *meshhdr, |
197 | struct ieee80211_sub_if_data *sdata); | 199 | struct ieee80211_sub_if_data *sdata, char *addr4, |
200 | char *addr5, char *addr6); | ||
198 | int mesh_rmc_check(u8 *addr, struct ieee80211s_hdr *mesh_hdr, | 201 | int mesh_rmc_check(u8 *addr, struct ieee80211s_hdr *mesh_hdr, |
199 | struct ieee80211_sub_if_data *sdata); | 202 | struct ieee80211_sub_if_data *sdata); |
200 | bool mesh_matches_local(struct ieee802_11_elems *ie, | 203 | bool mesh_matches_local(struct ieee802_11_elems *ie, |