Hi, all

This is mainly for ath5k.

Regards,
Chun-Yeow

On Sat, Mar 3, 2012 at 12:50 AM, Yeoh Chun-Yeow <yeohchuny...@gmail.com>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 <yeohchuny...@gmail.com>
> ---
> 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
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to