Re: [ath5k-devel] [PATCH 1/1] Ath5k: add AP mode

Previous thread: [PATCH] Drop Vladimir Barinov's e-mail address by Jean Delvare on Saturday, September 27, 2008 - 4:36 am. (3 messages)

Next thread: [RFC PATCH] LTTng relay buffer allocation, read, write by Mathieu Desnoyers on Saturday, September 27, 2008 - 6:40 am. (24 messages)
From: Jiri Slaby
Date: Saturday, September 27, 2008 - 5:48 am

Add support for AP mode. This involves:
- enablement in ath5k_beacon_config -- initialize beacon timer
- add AP to the supported modes in ath5k_add_interface
- handle beacon change even for AP in ath5k_config_interface
- remove useless test for IBSS in ath5k_beacon_update

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Cc: Nick Kossifidis <mickflemm@gmail.com>
Cc: Luis R. Rodriguez <mcgrof@gmail.com>
---
 drivers/net/wireless/ath5k/base.c |   42 +++++++++++++++----------------------
 1 files changed, 17 insertions(+), 25 deletions(-)

diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index e09ed2c..d5d8e2d 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -231,8 +231,7 @@ static int ath5k_get_tx_stats(struct ieee80211_hw *hw,
 		struct ieee80211_tx_queue_stats *stats);
 static u64 ath5k_get_tsf(struct ieee80211_hw *hw);
 static void ath5k_reset_tsf(struct ieee80211_hw *hw);
-static int ath5k_beacon_update(struct ieee80211_hw *hw,
-		struct sk_buff *skb);
+static int ath5k_beacon_update(struct ath5k_softc *sc, struct sk_buff *skb);
 
 static struct ieee80211_ops ath5k_hw_ops = {
 	.tx 		= ath5k_tx,
@@ -2104,8 +2103,6 @@ ath5k_beacon_update_timers(struct ath5k_softc *sc, u64 bc_tsf)
  *
  * In IBSS mode we use a self-linked tx descriptor if possible. We enable SWBA
  * interrupts to detect TSF updates only.
- *
- * AP mode is missing.
  */
 static void
 ath5k_beacon_config(struct ath5k_softc *sc)
@@ -2118,7 +2115,8 @@ ath5k_beacon_config(struct ath5k_softc *sc)
 
 	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_AP) {
 		/*
 		 * In IBSS mode we use a self-linked tx descriptor and let the
 		 * hardware send the beacons automatically. We have to load it
@@ -2130,13 +2128,15 @@ ath5k_beacon_config(struct ath5k_softc *sc)
 
 ...
From: Gregory Nietsky
Date: Sunday, September 28, 2008 - 3:44 am

Gents it is great to see this happen one snippet more and you will be 
able to set the interface into AP mode from userspace hostapd and friends.


diff --git a/drivers/net/wireless/ath5k/base.c 
b/drivers/net/wireless/ath5k/base.c
index e09ed2c..69aad6e 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -488,6 +488,7 @@ ath5k_pci_probe(struct pci_dev *pdev,

        hw->wiphy->interface_modes =
                BIT(NL80211_IFTYPE_STATION) |
+               BIT(NL80211_IFTYPE_AP) |
                BIT(NL80211_IFTYPE_ADHOC) |
                BIT(NL80211_IFTYPE_MESH_POINT);


i have had it working and no complaints so far.

please note that as with mac80211_hwsim it is dependent on a patch

Documentation/networking/mac80211_hwsim/README

Please note that the current Linux kernel does not enable AP mode, so a
simple patch is needed to enable AP mode selection:
http://johannes.sipsolutions.net/patches/kernel/all/LATEST/006-allow-ap-vlan-modes.patch

-->

Subject: mac80211: allow AP and VLAN modes

This patch allows switching interfaces into AP/VLAN modes using
cfg80211 (nl80211). Don't allow doing it with wext because then
people will just attempt to do it manually (without hostapd) and
complain that it doesn't work.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
 net/mac80211/cfg.c |    2 ++
 1 file changed, 2 insertions(+)

--- everything.orig/net/mac80211/cfg.c	2008-09-26 15:07:22.000000000 +0200
+++ everything/net/mac80211/cfg.c	2008-09-26 15:09:06.000000000 +0200
@@ -33,6 +33,8 @@ static bool nl80211_type_check(enum nl80
 #ifdef CONFIG_MAC80211_MESH
 	case NL80211_IFTYPE_MESH_POINT:
 #endif
+	case NL80211_IFTYPE_AP:
+	case NL80211_IFTYPE_AP_VLAN:
 	case NL80211_IFTYPE_WDS:
 		return true;
 	default:


<--


Regards Greg


--
This message has been scanned for viruses and
dangerous content by Network Sentry, and 
is believed to be clean.
http://www.dialandsave.co.za

--

From: Gregory Nietsky
Date: Sunday, September 28, 2008 - 4:06 am

Quick Observation  ...

it appears IEEE80211 types have been replaced with NL80211 types in 
kernel ... so would the following not be more correct and is opmode not 
defined as

struct ath5k_softc {
....
        enum nl80211_iftype     opmode;
.....

@@ -2130,14 +2129,15 @@ ath5k_beacon_config(struct ath5k_softc *sc)

                sc->imask |= AR5K_INT_SWBA;

-               if (ath5k_hw_hasveol(ah)) {
-                       spin_lock(&sc->block);
-                       ath5k_beacon_send(sc);
-                       spin_unlock(&sc->block);
-               }
+               if (sc->opmode == NL80211_IFTYPE_ADHOC) {
+                       if (ath5k_hw_hasveol(ah)) {
+                               spin_lock(&sc->block);
+                               ath5k_beacon_send(sc);
+                               spin_unlock(&sc->block);
+                       }
+               } else
+                       ath5k_beacon_update_timers(sc, -1);
        }
-       /* TODO else AP */
-
        ath5k_hw_set_imr(ah, sc->imask);
 }




--
This message has been scanned for viruses and
dangerous content by Network Sentry, and 
is believed to be clean.
http://www.dialandsave.co.za

--

From: Jiri Slaby
Date: Sunday, September 28, 2008 - 9:14 am

Yeah, that's the correct hunk, thanks. I sent a non-updated version.

--

Previous thread: [PATCH] Drop Vladimir Barinov's e-mail address by Jean Delvare on Saturday, September 27, 2008 - 4:36 am. (3 messages)

Next thread: [RFC PATCH] LTTng relay buffer allocation, read, write by Mathieu Desnoyers on Saturday, September 27, 2008 - 6:40 am. (24 messages)