fix b/g mode selection for madwifi, update documentation
authorFelix Fietkau <nbd@openwrt.org>
Thu, 4 Jan 2007 01:29:01 +0000 (01:29 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 4 Jan 2007 01:29:01 +0000 (01:29 +0000)
SVN-Revision: 5973

docs/wireless.tex
package/madwifi/files/lib/wifi/madwifi.sh

index 94d74f4fae770239937cdeb8ab5b203ba823b29a..6b3ffbac7aaff1cd9e38aa4d266e89b3273ba34d 100644 (file)
@@ -1,7 +1,9 @@
 The WiFi settings are configured in the file \texttt{/etc/config/wireless}
-(currently supported on Broadcom only). When booting the router for the first time
+(currently supported on Broadcom and Atheros). When booting the router for the first time
 it should detect your card and create a sample configuration that looks like this:
 
+\paragraph{Sample Broadcom wireless config:}
+
 \begin{Verbatim}
 config wifi-device      "wl0"
     option type         "broadcom"
@@ -15,6 +17,22 @@ config wifi-iface
     option encryption   "none"
 \end{Verbatim}
 
+\paragraph{Sample Atheros wireless config:}
+
+\begin{Verbatim}
+config wifi-device      "wifi0"
+    option type         "atheros"
+    option channel      "5"
+       option mode             "11g"
+
+config wifi-iface
+    option device       "wifi0"
+    option mode         "ap"
+    option ssid         "OpenWrt"
+    option hidden       "0"
+    option encryption   "none"
+\end{Verbatim}
+
 There are two types of config sections in this file. The '\texttt{wifi-device}' refers to
 the physical wifi interface and '\texttt{wifi-iface}' configures a virtual interface on top
 of that (if supported by the driver).
@@ -24,12 +42,15 @@ of that (if supported by the driver).
 \begin{itemize}
     \item \texttt{type} \\
         The driver to use for this interface.
+       
+       \item \texttt{mode} \\
+               The frequency band (\texttt{b}, \texttt{g}, \texttt{bg}, \texttt{a})
 
     \item \texttt{country} \\
         The country code used to determine the regulatory settings.
 
     \item \texttt{channel} \\
-        The wifi channel (1-14, depending on your country setting).
+        The wifi channel (e.g. 1-14, depending on your country setting).
 
     \item \texttt{maxassoc} \\
         Maximum number of associated clients
@@ -56,6 +77,7 @@ of that (if supported by the driver).
                 WDS point-to-point link
 
         \end{itemize}
+
     \item \texttt{network} \\
         Selects the interface section from \texttt{/etc/config/network} to be
         used with this interface
@@ -85,10 +107,10 @@ of that (if supported by the driver).
 
 \paragraph{Limitations:}
 
+Only the following mode combinations are supported:
+
 \begin{itemize}
     \item \textbf{Broadcom}: \\
-        Only the following mode combinations are supported:
-
         \begin{itemize}
             \item 1x \texttt{sta}, 0-3x \texttt{ap}
             \item 1-4x \texttt{ap}
@@ -98,6 +120,13 @@ of that (if supported by the driver).
         WDS links can only be used in pure AP mode and can't use WEP (except when sharing the
         settings with the master interface, which is done automatically).
 
+    \item \textbf{Atheros}: \\
+        \begin{itemize}
+            \item 1x \texttt{sta}, 0-4x \texttt{ap}
+            \item 1-4x \texttt{ap}
+            \item 1x \texttt{adhoc}
+        \end{itemize}
+
 \end{itemize}
 
 
index a22b5c4adc8e46c7365ce88253867595ef324324..5ccc52beb6d02eda7be3c34ecfc9a33df35331ef 100755 (executable)
@@ -73,6 +73,7 @@ enable_atheros() {
        config_get vifs "$device" vifs
        
        disable_atheros "$device"
+       local first=1
        for vif in $vifs; do
                nosbeacon=
                config_get ifname "$vif" ifname
@@ -89,8 +90,22 @@ enable_atheros() {
                }
                config_set "$vif" ifname "$ifname"
 
-               config_get "$device" mode
-               iwpriv "$ifname" mode "${mode:-11g}"
+               [ "$first" = 1 ] && {
+                       # only need to change freq band and channel on the first vif
+                       config_get "$device" mode
+                       pureg=0
+                       case "$mode" in
+                               *b) mode=11b;;
+                               *bg) mode=11g;;
+                               *g) mode=11g; pureg=1;;
+                               *a) mode=11a;;
+                               *) mode=11g;;
+                       esac
+                       iwconfig "$ifname" channel 0 
+                       iwpriv "$ifname" mode "$mode"
+                       iwpriv "$ifname" pureg "$pureg"
+                       iwconfig "$ifname" channel "$channel"
+               }
 
                config_get wds "$vif" wds
                case "$wds" in
@@ -120,7 +135,6 @@ enable_atheros() {
                                config_get ssid "$vif" ssid
                        ;;
                esac
-               iwconfig "$ifname" channel "$channel"
                ifconfig "$ifname" up
                
                local net_cfg bridge
@@ -145,6 +159,7 @@ enable_atheros() {
                                # FIXME: implement wpa_supplicant calls here
                        ;;
                esac
+               first=0
        done
 }