Have you tried submitting this to linux-wireless?

On 03/02/2012 11:52 AM, Yeoh Chun-Yeow wrote:
Hi, all

This is mainly for ath5k.

Regards,
Chun-Yeow

On Sat, Mar 3, 2012 at 12:50 AM, Yeoh Chun-Yeow <[email protected]
<mailto:[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]
    <mailto:[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
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to