Hi, all This is mainly for ath5k.
Regards, Chun-Yeow On Sat, Mar 3, 2012 at 12:50 AM, Yeoh Chun-Yeow <[email protected]>wrote: > This patch allows the possibility of having the mesh point and AP to be > operated > simultaneously in one single radio. Previously, mesh point fails to > generate the > mesh beacon if virtual AP is created for the same radio. > > Signed-off-by: Chun-Yeow Yeoh <[email protected]> > --- > Index: package/mac80211/patches/900-ath5k_allow_mesh_and_ap.patch > =================================================================== > --- package/mac80211/patches/900-ath5k_allow_mesh_and_ap.patch (revision > 0) > +++ package/mac80211/patches/900-ath5k_allow_mesh_and_ap.patch (revision > 0) > @@ -0,0 +1,52 @@ > +--- a/drivers/net/wireless/ath/ath5k/ath5k.h > ++++ b/drivers/net/wireless/ath/ath5k/ath5k.h > +@@ -1320,6 +1320,7 @@ struct ath5k_hw { > + struct ieee80211_vif *bslot[ATH_BCBUF]; > + u16 num_ap_vifs; > + u16 num_adhoc_vifs; > ++ u16 num_mesh_vifs; > + unsigned int bhalq, /* SW q for outgoing > beacons */ > + bmisscount, /* missed beacon transmits > */ > + bintval, /* beacon interval in TU */ > +--- a/drivers/net/wireless/ath/ath5k/base.c > ++++ b/drivers/net/wireless/ath/ath5k/base.c > +@@ -1867,7 +1867,8 @@ ath5k_beacon_send(struct ath5k_hw *ah) > + ah->bmisscount = 0; > + } > + > +- if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs + > ah->num_adhoc_vifs > 1) || > ++ if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs > ++ + ah->num_adhoc_vifs + ah->num_mesh_vifs > 1) || > + ah->opmode == NL80211_IFTYPE_MESH_POINT) { > + u64 tsf = ath5k_hw_get_tsf64(ah); > + u32 tsftu = TSF_TO_TU(tsf); > +@@ -1952,7 +1953,8 @@ ath5k_beacon_update_timers(struct ath5k_ > + u64 hw_tsf; > + > + intval = ah->bintval & AR5K_BEACON_PERIOD; > +- if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs + > ah->num_adhoc_vifs > 1) { > ++ if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs > ++ + ah->num_mesh_vifs + ah->num_adhoc_vifs > 1) { > + intval /= ATH_BCBUF; /* staggered multi-bss beacons */ > + if (intval < 15) > + ATH5K_WARN(ah, "intval %u is too low, min 15\n", > +--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c > ++++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c > +@@ -129,6 +129,8 @@ ath5k_add_interface(struct ieee80211_hw > + ah->num_ap_vifs++; > + else if (avf->opmode == NL80211_IFTYPE_ADHOC) > + ah->num_adhoc_vifs++; > ++ else if (avf->opmode == NL80211_IFTYPE_MESH_POINT) > ++ ah->num_mesh_vifs++; > + } > + > + /* Any MAC address is fine, all others are included through the > +@@ -170,6 +172,8 @@ ath5k_remove_interface(struct ieee80211_ > + ah->num_ap_vifs--; > + else if (avf->opmode == NL80211_IFTYPE_ADHOC) > + ah->num_adhoc_vifs--; > ++ else if (avf->opmode == NL80211_IFTYPE_MESH_POINT) > ++ ah->num_mesh_vifs--; > + > + ath5k_update_bssid_mask_and_opmode(ah, NULL); > + mutex_unlock(&ah->lock); > >
_______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
