Loading include/linux/ieee80211.h +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ struct ieee80211_hdr { struct ieee80211s_hdr { u8 flags; u8 ttl; u8 seqnum[3]; __le32 seqnum; u8 eaddr1[6]; u8 eaddr2[6]; u8 eaddr3[6]; Loading net/mac80211/ieee80211_i.h +1 −1 Original line number Diff line number Diff line Loading @@ -354,7 +354,7 @@ struct ieee80211_if_sta { int preq_queue_len; struct mesh_stats mshstats; struct mesh_config mshcfg; u8 mesh_seqnum[3]; u32 mesh_seqnum; bool accepting_plinks; #endif u16 aid; Loading net/mac80211/mesh.c +5 −12 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ #include <asm/unaligned.h> #include "ieee80211_i.h" #include "mesh.h" Loading Loading @@ -167,8 +168,8 @@ int mesh_rmc_check(u8 *sa, struct ieee80211s_hdr *mesh_hdr, struct rmc_entry *p, *n; /* Don't care about endianness since only match matters */ memcpy(&seqnum, mesh_hdr->seqnum, sizeof(mesh_hdr->seqnum)); idx = mesh_hdr->seqnum[0] & rmc->idx_mask; memcpy(&seqnum, &mesh_hdr->seqnum, sizeof(mesh_hdr->seqnum)); idx = le32_to_cpu(mesh_hdr->seqnum) & rmc->idx_mask; list_for_each_entry_safe(p, n, &rmc->bucket[idx].list, list) { ++entries; if (time_after(jiffies, p->exp_time) || Loading Loading @@ -393,16 +394,8 @@ int ieee80211_new_mesh_header(struct ieee80211s_hdr *meshhdr, { meshhdr->flags = 0; meshhdr->ttl = sdata->u.sta.mshcfg.dot11MeshTTL; meshhdr->seqnum[0] = sdata->u.sta.mesh_seqnum[0]++; meshhdr->seqnum[1] = sdata->u.sta.mesh_seqnum[1]; meshhdr->seqnum[2] = sdata->u.sta.mesh_seqnum[2]; if (sdata->u.sta.mesh_seqnum[0] == 0) { sdata->u.sta.mesh_seqnum[1]++; if (sdata->u.sta.mesh_seqnum[1] == 0) sdata->u.sta.mesh_seqnum[2]++; } put_unaligned(cpu_to_le32(sdata->u.sta.mesh_seqnum), &meshhdr->seqnum); sdata->u.sta.mesh_seqnum++; return 5; } Loading net/mac80211/mesh.h +1 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ struct rmc_entry { struct mesh_rmc { struct rmc_entry bucket[RMC_BUCKETS]; u8 idx_mask; u32 idx_mask; }; Loading Loading
include/linux/ieee80211.h +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ struct ieee80211_hdr { struct ieee80211s_hdr { u8 flags; u8 ttl; u8 seqnum[3]; __le32 seqnum; u8 eaddr1[6]; u8 eaddr2[6]; u8 eaddr3[6]; Loading
net/mac80211/ieee80211_i.h +1 −1 Original line number Diff line number Diff line Loading @@ -354,7 +354,7 @@ struct ieee80211_if_sta { int preq_queue_len; struct mesh_stats mshstats; struct mesh_config mshcfg; u8 mesh_seqnum[3]; u32 mesh_seqnum; bool accepting_plinks; #endif u16 aid; Loading
net/mac80211/mesh.c +5 −12 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ * published by the Free Software Foundation. */ #include <asm/unaligned.h> #include "ieee80211_i.h" #include "mesh.h" Loading Loading @@ -167,8 +168,8 @@ int mesh_rmc_check(u8 *sa, struct ieee80211s_hdr *mesh_hdr, struct rmc_entry *p, *n; /* Don't care about endianness since only match matters */ memcpy(&seqnum, mesh_hdr->seqnum, sizeof(mesh_hdr->seqnum)); idx = mesh_hdr->seqnum[0] & rmc->idx_mask; memcpy(&seqnum, &mesh_hdr->seqnum, sizeof(mesh_hdr->seqnum)); idx = le32_to_cpu(mesh_hdr->seqnum) & rmc->idx_mask; list_for_each_entry_safe(p, n, &rmc->bucket[idx].list, list) { ++entries; if (time_after(jiffies, p->exp_time) || Loading Loading @@ -393,16 +394,8 @@ int ieee80211_new_mesh_header(struct ieee80211s_hdr *meshhdr, { meshhdr->flags = 0; meshhdr->ttl = sdata->u.sta.mshcfg.dot11MeshTTL; meshhdr->seqnum[0] = sdata->u.sta.mesh_seqnum[0]++; meshhdr->seqnum[1] = sdata->u.sta.mesh_seqnum[1]; meshhdr->seqnum[2] = sdata->u.sta.mesh_seqnum[2]; if (sdata->u.sta.mesh_seqnum[0] == 0) { sdata->u.sta.mesh_seqnum[1]++; if (sdata->u.sta.mesh_seqnum[1] == 0) sdata->u.sta.mesh_seqnum[2]++; } put_unaligned(cpu_to_le32(sdata->u.sta.mesh_seqnum), &meshhdr->seqnum); sdata->u.sta.mesh_seqnum++; return 5; } Loading
net/mac80211/mesh.h +1 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ struct rmc_entry { struct mesh_rmc { struct rmc_entry bucket[RMC_BUCKETS]; u8 idx_mask; u32 idx_mask; }; Loading