From patchwork Fri Oct 1 15:20:41 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bill Jordan X-Patchwork-Id: 224372 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id o91FL5C5007443 for ; Fri, 1 Oct 2010 15:21:10 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932664Ab0JAPVF (ORCPT ); Fri, 1 Oct 2010 11:21:05 -0400 Received: from mail-qy0-f174.google.com ([209.85.216.174]:43854 "EHLO mail-qy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932662Ab0JAPVE (ORCPT ); Fri, 1 Oct 2010 11:21:04 -0400 Received: by qyk36 with SMTP id 36so3447006qyk.19 for ; Fri, 01 Oct 2010 08:21:03 -0700 (PDT) Received: by 10.224.54.68 with SMTP id p4mr3961451qag.114.1285946463491; Fri, 01 Oct 2010 08:21:03 -0700 (PDT) Received: from localhost.localdomain (static-72-92-88-10.phlapa.fios.verizon.net [72.92.88.10]) by mx.google.com with ESMTPS id x34sm1376802qci.18.2010.10.01.08.21.02 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 01 Oct 2010 08:21:02 -0700 (PDT) From: Bill Jordan To: "John W. Linville" Cc: linux-wireless@vger.kernel.org, "Luis R. Rodriguez" , Johannes Berg , Bill Jordan Subject: [PATCH 3/3] mac80211: fix for WDS interfaces Date: Fri, 1 Oct 2010 11:20:41 -0400 Message-Id: <1285946441-20152-4-git-send-email-bjordan@rajant.com> X-Mailer: git-send-email 1.7.2.3 In-Reply-To: <1285946441-20152-1-git-send-email-bjordan@rajant.com> References: <1285946441-20152-1-git-send-email-bjordan@rajant.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Fri, 01 Oct 2010 15:21:10 +0000 (UTC) diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 6678573..1e91984 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -24,6 +24,7 @@ #include "led.h" #include "driver-ops.h" #include "wme.h" +#include "rate.h" /** * DOC: Interface list locking @@ -301,6 +302,8 @@ static int ieee80211_do_open(struct net_device *dev, bool coming_up) /* STA has been freed */ goto err_del_interface; } + + rate_control_rate_init(sta); } /* diff --git a/net/mac80211/main.c b/net/mac80211/main.c index e24fa5b..4ea88dd 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -201,6 +201,8 @@ void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata, sdata->vif.bss_conf.bssid = sdata->u.ibss.bssid; else if (sdata->vif.type == NL80211_IFTYPE_AP) sdata->vif.bss_conf.bssid = sdata->vif.addr; + else if (sdata->vif.type == NL80211_IFTYPE_WDS) + sdata->vif.bss_conf.bssid = NULL; else if (ieee80211_vif_is_mesh(&sdata->vif)) { sdata->vif.bss_conf.bssid = zero; } else { @@ -211,6 +213,7 @@ void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata, switch (sdata->vif.type) { case NL80211_IFTYPE_AP: case NL80211_IFTYPE_ADHOC: + case NL80211_IFTYPE_WDS: case NL80211_IFTYPE_MESH_POINT: break; default: diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 0b0e83e..b3e161f 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -819,6 +819,7 @@ ieee80211_rx_h_check(struct ieee80211_rx_data *rx) if (unlikely((ieee80211_is_data(hdr->frame_control) || ieee80211_is_pspoll(hdr->frame_control)) && rx->sdata->vif.type != NL80211_IFTYPE_ADHOC && + rx->sdata->vif.type != NL80211_IFTYPE_WDS && (!rx->sta || !test_sta_flags(rx->sta, WLAN_STA_ASSOC)))) { if ((!ieee80211_has_fromds(hdr->frame_control) && !ieee80211_has_tods(hdr->frame_control) && diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index e1733dc..258fbdb 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -273,6 +273,9 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx) */ return TX_DROP; + if (tx->sdata->vif.type == NL80211_IFTYPE_WDS) + return TX_CONTINUE; + if (tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT) return TX_CONTINUE;