rt2x00: Implement WDS support
authorIvo van Doorn <ivdoorn@gmail.com>
Sat, 20 Dec 2008 09:57:02 +0000 (10:57 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 29 Jan 2009 20:58:38 +0000 (15:58 -0500)
WDS support should be very easy to handle, mac80211 handles
everything for us, so all that is needed is to set the
support flags and handle it in the add_interface() callback.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00config.c
drivers/net/wireless/rt2x00/rt2x00dev.c
drivers/net/wireless/rt2x00/rt2x00mac.c

index a35265cc7540ddb78882f3488dcf77d6ab079bc7..ab139f2698b8499f05f1a488aef0ebd6e76d1aca 100644 (file)
@@ -43,6 +43,7 @@ void rt2x00lib_config_intf(struct rt2x00_dev *rt2x00dev,
        case NL80211_IFTYPE_ADHOC:
        case NL80211_IFTYPE_AP:
        case NL80211_IFTYPE_MESH_POINT:
+       case NL80211_IFTYPE_WDS:
                conf.sync = TSF_SYNC_BEACON;
                break;
        case NL80211_IFTYPE_STATION:
index 6a5712c6614cca9767fdfa6fbd4acccebaefa04b..8c0dae530aeffb80a0a95712a3f9cbe4f6da891c 100644 (file)
@@ -191,7 +191,8 @@ static void rt2x00lib_beacondone_iter(void *data, u8 *mac,
 
        if (vif->type != NL80211_IFTYPE_AP &&
            vif->type != NL80211_IFTYPE_ADHOC &&
-           vif->type != NL80211_IFTYPE_MESH_POINT)
+           vif->type != NL80211_IFTYPE_MESH_POINT &&
+           vif->type != NL80211_IFTYPE_WDS)
                return;
 
        /*
@@ -782,7 +783,8 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
                rt2x00dev->hw->wiphy->interface_modes |=
                    BIT(NL80211_IFTYPE_ADHOC) |
                    BIT(NL80211_IFTYPE_AP) |
-                   BIT(NL80211_IFTYPE_MESH_POINT);
+                   BIT(NL80211_IFTYPE_MESH_POINT) |
+                   BIT(NL80211_IFTYPE_WDS);
 
        /*
         * Let the driver probe the device to detect the capabilities.
@@ -941,7 +943,8 @@ static void rt2x00lib_resume_intf(void *data, u8 *mac,
         */
        if (vif->type == NL80211_IFTYPE_AP ||
            vif->type == NL80211_IFTYPE_ADHOC ||
-           vif->type == NL80211_IFTYPE_MESH_POINT)
+           vif->type == NL80211_IFTYPE_MESH_POINT ||
+           vif->type == NL80211_IFTYPE_WDS)
                intf->delayed_flags |= DELAYED_UPDATE_BEACON;
 
        spin_unlock(&intf->lock);
index 137386ebf68f61273195e69b289a5179dce2d8ac..e6fba830d1d3a6159edf5264619b481f387a84e0 100644 (file)
@@ -227,6 +227,7 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw,
        case NL80211_IFTYPE_STATION:
        case NL80211_IFTYPE_ADHOC:
        case NL80211_IFTYPE_MESH_POINT:
+       case NL80211_IFTYPE_WDS:
                /*
                 * We don't support mixed combinations of
                 * sta and ap interfaces.