carl9170: Add support for NL80211_IFTYPE_MESH_POINT interfaces

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Sat Sep 29 10:59:15 EDT 2012


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=da93c26d0b26139f33cebf9af55715452a10f374
Commit:     da93c26d0b26139f33cebf9af55715452a10f374
Parent:     c071b9f666beee2b27b5a4667f099026ca539bd7
Author:     Javier Lopez <jlopex at cozybit.com>
AuthorDate: Fri Jul 27 11:27:25 2012 -0700
Committer:  John W. Linville <linville at tuxdriver.com>
CommitDate: Mon Aug 6 15:01:56 2012 -0400

    carl9170: Add support for NL80211_IFTYPE_MESH_POINT interfaces
    
    This patch contains following modifications:
    
    - Add mesh capabilities on fw.c to permit creation of mesh
      interfaces using this driver.
    
    - Modify carl9170_set_operating_mode, to use AP-style beaconing
      with mesh interfaces.
    
    - Allow beacon updates for NL80211_IFTYPE_MESH_POINT type in
      carl9170_handle_command_response.
    
    - Add NL80211_IFTYPE_MESH_POINT case on carl9170_op_add_interfaces to
      support mesh/ap/sta virtual interface combinations.
    
    Signed-off-by: Javier Lopez <jlopex at cozybit.com>
    Acked-by: Christian Lamparter <chunkeey at googlemail.com>
    Signed-off-by: John W. Linville <linville at tuxdriver.com>
---
 drivers/net/wireless/ath/carl9170/fw.c   |    1 +
 drivers/net/wireless/ath/carl9170/mac.c  |    2 +-
 drivers/net/wireless/ath/carl9170/main.c |    4 +++-
 drivers/net/wireless/ath/carl9170/rx.c   |    1 +
 4 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/carl9170/fw.c b/drivers/net/wireless/ath/carl9170/fw.c
index c5ca6f1..24ac287 100644
--- a/drivers/net/wireless/ath/carl9170/fw.c
+++ b/drivers/net/wireless/ath/carl9170/fw.c
@@ -341,6 +341,7 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len)
 		if (SUPP(CARL9170FW_WLANTX_CAB)) {
 			if_comb_types |=
 				BIT(NL80211_IFTYPE_AP) |
+				BIT(NL80211_IFTYPE_MESH_POINT) |
 				BIT(NL80211_IFTYPE_P2P_GO);
 		}
 	}
diff --git a/drivers/net/wireless/ath/carl9170/mac.c b/drivers/net/wireless/ath/carl9170/mac.c
index 53415bf..f867628 100644
--- a/drivers/net/wireless/ath/carl9170/mac.c
+++ b/drivers/net/wireless/ath/carl9170/mac.c
@@ -318,10 +318,10 @@ int carl9170_set_operating_mode(struct ar9170 *ar)
 		bssid = common->curbssid;
 
 		switch (vif->type) {
-		case NL80211_IFTYPE_MESH_POINT:
 		case NL80211_IFTYPE_ADHOC:
 			cam_mode |= AR9170_MAC_CAM_IBSS;
 			break;
+		case NL80211_IFTYPE_MESH_POINT:
 		case NL80211_IFTYPE_AP:
 			cam_mode |= AR9170_MAC_CAM_AP;
 
diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c
index 858e58d..18554ab 100644
--- a/drivers/net/wireless/ath/carl9170/main.c
+++ b/drivers/net/wireless/ath/carl9170/main.c
@@ -616,10 +616,12 @@ static int carl9170_op_add_interface(struct ieee80211_hw *hw,
 
 			goto unlock;
 
+		case NL80211_IFTYPE_MESH_POINT:
 		case NL80211_IFTYPE_AP:
 			if ((vif->type == NL80211_IFTYPE_STATION) ||
 			    (vif->type == NL80211_IFTYPE_WDS) ||
-			    (vif->type == NL80211_IFTYPE_AP))
+			    (vif->type == NL80211_IFTYPE_AP) ||
+			    (vif->type == NL80211_IFTYPE_MESH_POINT))
 				break;
 
 			err = -EBUSY;
diff --git a/drivers/net/wireless/ath/carl9170/rx.c b/drivers/net/wireless/ath/carl9170/rx.c
index 6f6a341..b813f43 100644
--- a/drivers/net/wireless/ath/carl9170/rx.c
+++ b/drivers/net/wireless/ath/carl9170/rx.c
@@ -206,6 +206,7 @@ void carl9170_handle_command_response(struct ar9170 *ar, void *buf, u32 len)
 
 		case NL80211_IFTYPE_AP:
 		case NL80211_IFTYPE_ADHOC:
+		case NL80211_IFTYPE_MESH_POINT:
 			carl9170_update_beacon(ar, true);
 			break;
 



More information about the linux-mtd-cvs mailing list