From c15d0725419aa4c3c23d792542923c6b7c0efb5f Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 4 Jan 2007 01:29:01 +0000 Subject: [PATCH] fix b/g mode selection for madwifi, update documentation SVN-Revision: 5973 --- docs/wireless.tex | 37 ++++++++++++++++++++--- package/madwifi/files/lib/wifi/madwifi.sh | 21 +++++++++++-- 2 files changed, 51 insertions(+), 7 deletions(-) diff --git a/docs/wireless.tex b/docs/wireless.tex index 94d74f4fae..6b3ffbac7a 100644 --- a/docs/wireless.tex +++ b/docs/wireless.tex @@ -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} diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh index a22b5c4adc..5ccc52beb6 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -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 }