lkml.org 
[lkml]   [2009]   [Jan]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 01/43] ath5k: fix mesh point operation
    2.6.28-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Andrey Yurovsky <andrey@cozybit.com>

    commit b706e65b40417e03c2451bb3f92488f3736843fa upstream.

    This patch fixes mesh point operation (thanks to YanBo for pointing
    out the problem): make mesh point interfaces start beaconing when
    they come up and configure the RX filter in mesh mode so that mesh
    beacons and action frames are received. Add mesh point to the check
    in ath5k_add_interface. Tested with multiple AR5211 cards.

    Signed-off-by: Andrey Yurovsky <andrey@cozybit.com>
    Acked-by: Nick Kossifidis <mickflemm@gmail.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Cc: Bob Copeland <me@bobcopeland.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/net/wireless/ath5k/base.c | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    --- a/drivers/net/wireless/ath5k/base.c
    +++ b/drivers/net/wireless/ath5k/base.c
    @@ -2157,7 +2157,8 @@ ath5k_beacon_config(struct ath5k_softc *

    if (sc->opmode == NL80211_IFTYPE_STATION) {
    sc->imask |= AR5K_INT_BMISS;
    - } else if (sc->opmode == NL80211_IFTYPE_ADHOC) {
    + } else if (sc->opmode == NL80211_IFTYPE_ADHOC ||
    + sc->opmode == NL80211_IFTYPE_MESH_POINT) {
    /*
    * In IBSS mode we use a self-linked tx descriptor and let the
    * hardware send the beacons automatically. We have to load it
    @@ -2748,6 +2749,7 @@ static int ath5k_add_interface(struct ie
    switch (conf->type) {
    case NL80211_IFTYPE_STATION:
    case NL80211_IFTYPE_ADHOC:
    + case NL80211_IFTYPE_MESH_POINT:
    case NL80211_IFTYPE_MONITOR:
    sc->opmode = conf->type;
    break;
    @@ -2819,7 +2821,8 @@ ath5k_config_interface(struct ieee80211_
    }

    if (conf->changed & IEEE80211_IFCC_BEACON &&
    - vif->type == NL80211_IFTYPE_ADHOC) {
    + (vif->type == NL80211_IFTYPE_ADHOC ||
    + vif->type == NL80211_IFTYPE_MESH_POINT)) {
    struct sk_buff *beacon = ieee80211_beacon_get(hw, vif);
    if (!beacon) {
    ret = -ENOMEM;
    @@ -2951,6 +2954,9 @@ static void ath5k_configure_filter(struc
    sc->opmode == NL80211_IFTYPE_ADHOC) {
    rfilt |= AR5K_RX_FILTER_BEACON;
    }
    + if (sc->opmode == NL80211_IFTYPE_MESH_POINT)
    + rfilt |= AR5K_RX_FILTER_CONTROL | AR5K_RX_FILTER_BEACON |
    + AR5K_RX_FILTER_PROBEREQ | AR5K_RX_FILTER_PROM;

    /* Set filters */
    ath5k_hw_set_rx_filter(ah,rfilt);


    \
     
     \ /
      Last update: 2009-01-31 04:01    [W:3.715 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site