* Re: [PATCH v2 04/18] wl1271: AP-mode high level commands
From: Luciano Coelho @ 2010-12-22 21:16 UTC (permalink / raw)
To: ext Arik Nemtsov; +Cc: linux-wireless
In-Reply-To: <1293028057-6212-5-git-send-email-arik@wizery.com>
On Wed, 2010-12-22 at 16:27 +0200, ext Arik Nemtsov wrote:
> Add commands to start/stop BSS, add/remove STA and configure encryption
> keys. Split the encryption commands "set key" and "set default key" into
> AP and STA specific versions.
>
> Signed-off-by: Arik Nemtsov <arik@wizery.com>
> ---
[...]
> @@ -850,3 +943,178 @@ out_free:
> out:
> return ret;
> }
> +
> +int wl1271_cmd_start_bss(struct wl1271 *wl)
> +{
> + struct wl1271_cmd_bss_start *cmd;
> + struct ieee80211_bss_conf *bss_conf = &wl->vif->bss_conf;
> + int ret;
> +
> + wl1271_debug(DEBUG_CMD, "cmd start bss");
> +
> + /*
> + * FIXME: We currently do not support hidden SSID. The real SSID
> + * should be fetched from mac80211 first.
> + */
> + if (wl->ssid_len == 0) {
> + wl1271_warning("Hidden SSID currently not supported for AP");
> + return -EINVAL;
> + }
> +
> + cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
> + if (!cmd) {
> + ret = -ENOMEM;
> + goto out;
> + }
Please decide if you want to return directly here or set ret and goto
out. For consistency, I'd suggest to set ret and goto out, since this
is how (most of) the rest of the code does.
> +int wl1271_cmd_add_sta(struct wl1271 *wl, struct ieee80211_sta *sta, u8 hlid)
> +{
> + struct wl1271_cmd_add_sta *cmd;
> + int ret;
> +
> + wl1271_debug(DEBUG_CMD, "cmd add sta %d", (int)hlid);
> +
> + cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
> + if (!cmd) {
> + ret = -ENOMEM;
> + goto out;
> + }
> +
> + /* currently we don't support UAPSD */
> + memset(cmd->psd_type, 0, sizeof(cmd->psd_type));
> + cmd->sp_len = 0;
No need to memset, since you're kzalloc'ing anyway. I guess just a good
comment here is enough.
> diff --git a/drivers/net/wireless/wl12xx/cmd.h b/drivers/net/wireless/wl12xx/cmd.h
> index 2a1d9db..02f843c 100644
> --- a/drivers/net/wireless/wl12xx/cmd.h
> +++ b/drivers/net/wireless/wl12xx/cmd.h
> @@ -54,12 +54,20 @@ struct sk_buff *wl1271_cmd_build_ap_probe_req(struct wl1271 *wl,
> int wl1271_cmd_build_arp_rsp(struct wl1271 *wl, __be32 ip_addr);
> int wl1271_build_qos_null_data(struct wl1271 *wl);
> int wl1271_cmd_build_klv_null_data(struct wl1271 *wl);
> -int wl1271_cmd_set_default_wep_key(struct wl1271 *wl, u8 id);
> -int wl1271_cmd_set_key(struct wl1271 *wl, u16 action, u8 id, u8 key_type,
> +int wl1271_cmd_set_sta_default_wep_key(struct wl1271 *wl, u8 id);
> +int wl1271_cmd_set_ap_default_wep_key(struct wl1271 *wl, u8 id);
> +int wl1271_cmd_set_sta_key(struct wl1271 *wl, u16 action, u8 id, u8 key_type,
> u8 key_size, const u8 *key, const u8 *addr,
> u32 tx_seq_32, u16 tx_seq_16);
Indentation?
> +int wl1271_cmd_set_ap_key(struct wl1271 *wl, u16 action, u8 id, u8 key_type,
> + u8 key_size, const u8 *key, u8 hlid, u32 tx_seq_32,
> + u16 tx_seq_16);
Ditto.
--
Cheers,
Luca.
^ permalink raw reply
* [PATCH] compat: remove print_mac et al
From: Johannes Berg @ 2010-12-22 21:11 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: linux-wireless@vger.kernel.org
From: Johannes Berg <johannes.berg@intel.com>
This has disappeared upstream and is no longer used.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
compat/compat-2.6.24.c | 9 ---------
include/linux/compat-2.6.24.h | 7 -------
2 files changed, 0 insertions(+), 16 deletions(-)
diff --git a/compat/compat-2.6.24.c b/compat/compat-2.6.24.c
index 5e2a77d..b9ae16b 100644
--- a/compat/compat-2.6.24.c
+++ b/compat/compat-2.6.24.c
@@ -18,15 +18,6 @@
struct net init_net;
EXPORT_SYMBOL(init_net);
-/* Part of net/ethernet/eth.c as of 2.6.24 */
-char *print_mac(char *buf, const u8 *addr)
-{
- sprintf(buf, MAC_FMT,
- addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
- return buf;
-}
-EXPORT_SYMBOL(print_mac);
-
/* 2.6.22 and 2.6.23 have eth_header_cache_update defined as extern in include/linux/etherdevice.h
* and actually defined in net/ethernet/eth.c but 2.6.24 exports it. Lets export it here */
diff --git a/include/linux/compat-2.6.24.h b/include/linux/compat-2.6.24.h
index 6e09530..456dcb6 100644
--- a/include/linux/compat-2.6.24.h
+++ b/include/linux/compat-2.6.24.h
@@ -162,13 +162,6 @@ struct ssb_device_id {
#define dev_get_by_index(a, b) dev_get_by_index(b)
#define __dev_get_by_index(a, b) __dev_get_by_index(b)
-/*
- * Display a 6 byte device address (MAC) in a readable format.
- */
-#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
-extern char *print_mac(char *buf, const u8 *addr);
-#define DECLARE_MAC_BUF(var) char var[18] __maybe_unused
-
extern int eth_header(struct sk_buff *skb, struct net_device *dev,
unsigned short type, void *daddr,
void *saddr, unsigned len);
--
1.7.2.3
^ permalink raw reply related
* Re: Backporting wl1271 driver to kernel-2.6.32 using compat-wireless
From: Elvis Dowson @ 2010-12-22 21:07 UTC (permalink / raw)
To: Hauke Mehrtens; +Cc: Linux Wireless Mailing List
In-Reply-To: <4D1266FA.7080305@hauke-m.de>
On Dec 23, 2010, at 1:00 AM, Hauke Mehrtens wrote:
> Compat-wireless does not check what patches you applied to your kernel
> yet, it just checks what kernel version you are using and want patches
> are applied to it in the vanilla version. If you add some patches
> yourself to the kernel to backport some stuff you have to manually edit
> compat-wireless's config.mk file.
I was just thinking, run-time PM never made it to 2.6.32 right ? So, I might
not need to add those run-time PM patches ?
> You also have to backport the CONFIG_WL12XX_PLATFORM_DATA and activate
> it in your kernel config, wl1271_sdio depends on that.
Ok, you mean back port that structure from 2.6.37-rc6 to the android-2.6.32 kernel?
> Probably you have to change some other stuff on your architecture code
> so that your device finds this sdio card, but I do not know what you
> have to do exactly.
I've already got the required kernel modifications for the kernel board-omap3beagle.c
file, and have already tested it out with vanilla linux-2.6.37-rc6 with the wl1271 driver,
and it works.
So, I'll just need to port those changes across to the android-2.6.32 kernel and see if it
all works together.
"What are my chances, doc?" ;-)
Elvis Dowson
^ permalink raw reply
* Re: Backporting wl1271 driver to kernel-2.6.32 using compat-wireless
From: Hauke Mehrtens @ 2010-12-22 21:00 UTC (permalink / raw)
To: Elvis Dowson; +Cc: Linux Wireless Mailing List
In-Reply-To: <A8ED3E8F-FA2A-46B9-95C6-F2C175581539@mac.com>
On 12/22/2010 09:34 PM, Elvis Dowson wrote:
>
> On Dec 23, 2010, at 12:12 AM, Hauke Mehrtens wrote:
>
>> Is CONFIG_CRC7=y set in your kernel config, the wl12xx module needs
>> this? If it is not set the module will not be build.
>
> It wasn't :-). After enabling it in the kernel and recompiling both the kernel and
> compat-wireless wl12xx, it generated the following modules:
>
> cfg80211.ko
> compat.ko
> compat_firmware_class.ko
> mac80211.ko
> wl1251.ko
> wl1251_sdio.ko
> wl1251_spi.ko
> wl1271.ko
> wl1271_spi.ko
>
> I haven't applied the SDIO runtime PM patches yet.
>
> http://www.spinics.net/lists/linux-mmc/msg03966.html
>
> So, is a wl1271_sdio.ko also supposed to be generated, but didn't because I didn't add the SDIO pm patches?
>
> To use this at run-time on the target, should I do insmod for multiple modules:
>
> insmod cfg80211.ko
> insmod compat.ko
> insmod compat_firmware_class.ko
> insmod mac80211.ko
> insmod wl1271.ko
>
>
> Elvis Dowson
Compat-wireless does not check what patches you applied to your kernel
yet, it just checks what kernel version you are using and want patches
are applied to it in the vanilla version. If you add some patches
yourself to the kernel to backport some stuff you have to manually edit
compat-wireless's config.mk file.
You also have to backport the CONFIG_WL12XX_PLATFORM_DATA and activate
it in your kernel config, wl1271_sdio depends on that.
Probably you have to change some other stuff on your architecture code
so that your device finds this sdio card, but I do not know what you
have to do exactly.
Hauke
^ permalink raw reply
* Re: [PATCH v2 02/18] wl1271: AP mode - AP specific CMD_CONFIGURE sub-commands
From: Luciano Coelho @ 2010-12-22 20:44 UTC (permalink / raw)
To: ext Arik Nemtsov; +Cc: linux-wireless
In-Reply-To: <1293028057-6212-3-git-send-email-arik@wizery.com>
On Wed, 2010-12-22 at 16:27 +0200, ext Arik Nemtsov wrote:
> Add AP max retries and rate policy configuration.
> Rename STA rate policy configuration function.
>
> Signed-off-by: Arik Nemtsov <arik@wizery.com>
> ---
[...]
> diff --git a/drivers/net/wireless/wl12xx/acx.h b/drivers/net/wireless/wl12xx/acx.h
> index 9cbc3f4..d2a68bf 100644
> --- a/drivers/net/wireless/wl12xx/acx.h
> +++ b/drivers/net/wireless/wl12xx/acx.h
[...]
> + __le32 rate_policy_idx; /* The index of the rate policy */
This comment is quite useless. ;)
> @@ -1062,6 +1072,19 @@ struct wl1271_acx_fw_tsf_information {
> u8 padding[3];
> } __packed;
>
> +#define WL1271_AP_MAX_TX_RETRY 100
Should this be part of the conf.h settings? Should it be made more
easily configurable?
--
Cheers,
Luca.
^ permalink raw reply
* [PATCH] compat: simplify pci_try_set_mwi
From: Johannes Berg @ 2010-12-22 20:37 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: linux-wireless@vger.kernel.org
From: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
compat/compat-2.6.23.c | 13 ++++---------
1 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/compat/compat-2.6.23.c b/compat/compat-2.6.23.c
index 87f2a8c..67d0075 100644
--- a/compat/compat-2.6.23.c
+++ b/compat/compat-2.6.23.c
@@ -217,14 +217,6 @@ void __dev_set_rx_mode(struct net_device *dev)
dev->set_multicast_list(dev);
}
-#ifndef HAVE_PCI_SET_MWI
-int pci_try_set_mwi(struct pci_dev *dev)
-{
- return 0;
-}
-EXPORT_SYMBOL(pci_try_set_mwi);
-#else
-
/**
* pci_try_set_mwi - enables memory-write-invalidate PCI transaction
* @dev: the PCI device for which MWI is enabled
@@ -236,7 +228,10 @@ EXPORT_SYMBOL(pci_try_set_mwi);
*/
int pci_try_set_mwi(struct pci_dev *dev)
{
- int rc = pci_set_mwi(dev);
+ int rc = 0;
+#ifdef HAVE_PCI_SET_MWI
+ rc = pci_set_mwi(dev);
+#endif
return rc;
}
EXPORT_SYMBOL(pci_try_set_mwi);
--
1.7.2.3
^ permalink raw reply related
* Re: Backporting wl1271 driver to kernel-2.6.32 using compat-wireless
From: Elvis Dowson @ 2010-12-22 20:34 UTC (permalink / raw)
To: Hauke Mehrtens; +Cc: Linux Wireless Mailing List
In-Reply-To: <4D125B9F.7090503@hauke-m.de>
On Dec 23, 2010, at 12:12 AM, Hauke Mehrtens wrote:
> Is CONFIG_CRC7=y set in your kernel config, the wl12xx module needs
> this? If it is not set the module will not be build.
It wasn't :-). After enabling it in the kernel and recompiling both the kernel and
compat-wireless wl12xx, it generated the following modules:
cfg80211.ko
compat.ko
compat_firmware_class.ko
mac80211.ko
wl1251.ko
wl1251_sdio.ko
wl1251_spi.ko
wl1271.ko
wl1271_spi.ko
I haven't applied the SDIO runtime PM patches yet.
http://www.spinics.net/lists/linux-mmc/msg03966.html
So, is a wl1271_sdio.ko also supposed to be generated, but didn't because I didn't add the SDIO pm patches?
To use this at run-time on the target, should I do insmod for multiple modules:
insmod cfg80211.ko
insmod compat.ko
insmod compat_firmware_class.ko
insmod mac80211.ko
insmod wl1271.ko
Elvis Dowson
^ permalink raw reply
* Re: [ath5k-devel] [PATCH] ath5k: Move mac80211 functions into new file
From: Nick Kossifidis @ 2010-12-22 20:30 UTC (permalink / raw)
To: Luis R. Rodriguez
Cc: sedat.dilek, Bruno Randolf, ath5k-devel, linux-wireless, linville
In-Reply-To: <AANLkTim-Dj-oSdKBXtO=3F1sFTaVE=4RD3Jbc00nBD=i@mail.gmail.com>
2010/12/22 Luis R. Rodriguez <mcgrof@gmail.com>:
> On Wed, Dec 22, 2010 at 7:08 AM, Sedat Dilek <sedat.dilek@googlemail.com> wrote:
>> On Wed, Dec 22, 2010 at 11:20 AM, Bruno Randolf <br1@einfach.org> wrote:
>>> Move mac80211 functions into new file mac80211-ops.c to have a better
>>> separation and to make base.c smaller.
>>>
>>> Signed-off-by: Bruno Randolf <br1@einfach.org>
>>> ---
>>> drivers/net/wireless/ath/ath5k/Makefile | 1
>>> drivers/net/wireless/ath/ath5k/base.c | 763 ++-----------------------
>>> drivers/net/wireless/ath/ath5k/mac80211-ops.c | 774 +++++++++++++++++++++++++
>>> 3 files changed, 825 insertions(+), 713 deletions(-)
>
> How about just a main.c ?
>
> Luis
We already have base.c, having both main.c and base.c could be
misleading, i think mac80211-ops.c is fine.
--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick
^ permalink raw reply
* pull request: wireless-next-2.6 2010-12-22
From: John W. Linville @ 2010-12-22 20:23 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev
Dave,
Here is another monster round of udpates intended for 2.6.28...phew!
And the patches are still coming...
The biggest point of interest in this pull is the new rtlwifi family
of drivers for hardware from Realtek, along with the first member of
that family (rtl8192ce). Also, the b43 N-phy support continues to
roll forward towards usability. There are, of course, the usual driver
updates for ath9k, rt2x00, iwlwifi, wl1271, and several others. There
are also the usual handful (or two) of mac80211 updates, including
some mesh fixes from Javier and support for a throughput-based LED
trigger from Johannes.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 503b1a529a6b62b31904bab4699752c523cf76b2:
Merge branch '20101221_static_const' of git://repo.or.cz/linux-2.6/trivial-mods (2010-12-21 13:26:15 -0800)
are available in the git repository at:
ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6.git for-davem
Anisse Astier (1):
rtl8192ce: Fix typo in Kconfig description
Bing Zhao (1):
ieee80211: add Parameter Set Count bitmask
Bruno Randolf (5):
cfg80211: Add antenna availability information
ath5k: Fix survey
cfg80211: Separate available antennas for RX and TX
nl80211: Export available antennas
ath5k: Set available antenna information for cfg80211
Dan Carpenter (1):
wl1251: wl12xx_get_platform_data() returns an ERR_PTR
Eliad Peller (4):
wl1271: use debugfs_remove_recursive
wl1271: move wl12xx debugfs directory to under wiphy's debugfs
wl12xx: add auto-arp support
wl12xx: allow runtime changing of debug_level
Felix Fietkau (23):
ath9k: fix sequence number assigment for non-AMPDU QoS data frames
ath9k_hw: only use the PCIe disable register write sequence for AR5416
ath9k_hw: clean up duplicate and unnused eeprom related defines
ath9k_hw: merge ath9k_hw_get_gain_boundaries_pdadcs between eeprom_def.c and eeprom_4k.c
ath9k_hw: merge the ar9287 version of ath9k_hw_get_gain_boundaries_pdadcs
ath9k_hw: remove antenna configuration eeprom ops and variables
ath9k_hw: clean up SREV version checks
ath9k_hw: remove ah->beacon_interval
ath9k_hw: remove ah->txpower_indexoffset
ath9k_hw: initialize ah->slottime
ath9k_hw: fix the slot time setting for long distance links
ath9k: fix PA predistortion thermal measurement handling
ath9k_hw: fix the PA predistortion rate mask
ath9k_hw: fix PA predistortion training power selection
ath9k_hw: update AR9003 initvals for improved radar detection
ath9k_hw: update AR9003 initvals to improve carrier leak calibration/correction
ath9k: fix queue depth check for forming new aggregates
ath9k_hw: remove baseband rfsilent support
mac80211: fix initialization of skb->cb in ieee80211_subif_start_xmit
mac80211: skip unnecessary pskb_expand_head calls
mac80211: fix potentially redundant skb data copying
ath9k_hw: fix PA predistortion HT40 mask
ath9k: do not limit the chainmask to 1 for legacy mode
Gertjan van Wingerde (1):
rt2x00: Ensure TX-ed frames are returned in the original state.
Guy Eilam (1):
wl1271: fixed problem with WPS IEs in probe requests
Helmut Schaa (2):
rt2x00: Implement get_survey callback for rt2800
rt2x00: Don't frequently reset beacon interval in AdHoc mode
Ivo van Doorn (7):
rt2x00: Introduce 3 queue commands in drivers (start, kick, stop).
rt2x00: Reorganize queue callback functions
rt2x00: Protect queue control with mutex
rt2x00: Add "flush" queue command
rt2x00: Cleanup RX index counting
rt2x00: Introduce extra queue entry sanity flag
rt2x00: Fix WMM Queue naming
Javier Cardona (4):
mac80211: Rename mesh_params to mesh_config to prepare for mesh_setup
mac80211: Let userspace enable and configure vendor specific path selection.
mac80211: Send mesh non-HWMP path selection frames to userspace
mac80211: Remove unused third address from mesh address extension header.
Johannes Berg (12):
mac80211: clean up RX key checks
cfg80211/nl80211: separate unicast/multicast default TX keys
mac80211: support separate default keys
mac80211: support IBSS RSN with SW crypto
iwlagn: fix debug variable access
iwlagn: rename enhanced txpower fields
iwlagn: implement layout-agnostic EEPROM reading
iwlagn: remove old EEPROM TX power reading
nl80211: advertise maximum remain-on-channel duration
mac80211: make LED trigger names available early
mac80211: add throughput based LED blink trigger
mac80211: selective throughput LED trigger active
Johannes Stezenbach (3):
rt2x00: fix hang when unplugging USB device in use
rt2x00: trivial: add missing \n on warnings
rt2x00: remove stray semicolon
John W. Linville (7):
Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6
Merge branch 'wireless-next-2.6' of git://git.kernel.org/.../iwlwifi/iwlwifi-2.6
rtlwifi: convert to __packed notation
Merge branch 'wl12xx-next' of git://git.kernel.org/.../luca/wl12xx
rtl8192ce: drop 'rtl8192c-' prefix from files
rtlwifi: use alloc_workqueue
Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem
Jouni Malinen (1):
nl80211: Add notification for dropped Deauth/Disassoc
Juuso Oikarinen (4):
wl12xx: Fix kernel crash related to hw recovery and interface shutdown
wl1271: Fix setting of the hardware connection monitoring probe-req template
wl12xx: Remove 11j channels from the supported channels list.
wl12xx: Change TX queue to be per AC
Larry Finger (6):
rtl8192ce: Add new driver
rtl8192ce: Fix build on powerpc
rtl8192ce: Update MAINTAINERS
rtlwifi: Switch locking from semaphores to mutexes
MAINTAINERS: Fix typo in rtl8192ce entry
rtlwifi: Fix use of mutex in interrupt code
Luciano Coelho (5):
wl12xx: disable 11a channels when regulatory changes if 11a is not supported
wl12xx: fix illegal memset if debugfs is not enabled
wl12xx: disable 11a channels when wl->enable_11a is known
wl12xx_sdio_test: rename files to match current style
mac80211: check for CONFIG_MAC80211_LEDS in the tpt_led_trigger declaration
Luis R. Rodriguez (4):
ath9k: Fix power save count imbalance on ath_radio_enable()
ath9k: fix assumptions for idle calls on suspend/resume
cfg80211: fix null pointer dereference with a custom regulatory request
ath: fix NULL pointer dereference on reg_notifier()
Mohammed Shafi Shajakhan (4):
ath9k: clean up hardware code for beacon handling
ath9k: Make PM-QOS value as user configurable
ath9k: Add comments for making pm-qos as modparam
ath9k: Properly initialize channel table for 2GHz
RA-Jay Hung (2):
rt2x00: Add rt2800 EEPROM definition
rt2x00: Add RF chip definition
Rafał Miłecki (4):
b43: N-PHY: use correct bit for controlling MAC and PHY
b43: N-PHY: one more fix for order of tables initialization
b43: N-PHY: use designed function and macro for writing tables
b43: rename TMS defines, drop useless condition from core reset
Rajkumar Manoharan (2):
ath9k: Add change_interface callback
ath: Missed to clear key4 of micentry
Roger Quadros (2):
wl1271: Add wl1271_load_firmware() and export some functions
wl1271_sdio_test: Add module for sdio RX/TX testing
Sedat Dilek (1):
iwlwifi: Fix error: struct iwl_lq_sta has no member named dbg_fixed_rate
Shan Wei (1):
wireless:mac80211: kill unuse macro MESH_CFG_CMP_LEN in mesh.h
Shanyu Zhao (2):
iwlwifi: clear dbg_fixed_rate during init
iwlagn: check ready in iwlagn_bss_info_changed()
Sujith Manoharan (4):
ath9k: Use power save wrappers for TSF get/set
ath9k_htc: Add Ubiquiti wifistation ext to supported devices
mac80211: Add timeout to BA session start API
ath9k_htc: Remove PCI specific configuration
Sven Neumann (1):
cfg80211: update information elements in cached BSS struct
Tim Harvey (1):
mac80211 default tx_last_beacon false (congestion)
Vasanthakumar Thiagarajan (7):
ath9k_hw: Remove delay during regwrite of analog shift registers
ath9k_hw: Remove unnecessary Rx IQ cal register configuration in ar9003_hw_tx_iq_cal()
ath9k_hw: Move get_streams() to hw.h
ath9k_hw: Tx IQ cal changes for AR9003
ath9k_hw: Add a helper to get paprd scale factor
ath9k_hw: Disable PAPRD for rates with low Tx power
ath9k_hw: Configure appropriate Tx power when PAPRD fails
Wey-Yi Guy (9):
iwlagn: change led compensation for 6005 and 6030 devices
iwlagn: rx antenna diversity
iwlwifi: add new EEPROM debug log type
iwlwifi: use IWL_DEBUG_EEPROM for EEPROM related info
iwlagn: More detail tx power logging
iwlwifi: do not reload fw if WiMAX own the RF
iwlwifi: keep track of bt coex enable/disable stage
iwlagn: code clean up to remove duplicate code
iwlagn: fix witespace damage
Wolfgang Kufner (2):
rt2x00: Pad beacon to multiple of 32 bits.
rt2x00: Fix firmware loading regression on x86_64.
MAINTAINERS | 10 +
drivers/net/wireless/Kconfig | 1 +
drivers/net/wireless/Makefile | 1 +
drivers/net/wireless/ath/ath5k/base.c | 39 +-
drivers/net/wireless/ath/ath5k/base.h | 2 +
drivers/net/wireless/ath/ath9k/ar5008_phy.c | 13 -
drivers/net/wireless/ath/ath9k/ar9002_hw.c | 19 -
drivers/net/wireless/ath/ath9k/ar9002_mac.c | 1 -
.../net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 104 +-
drivers/net/wireless/ath/ath9k/ar9003_calib.c | 225 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 136 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h | 44 +-
drivers/net/wireless/ath/ath9k/ar9003_hw.c | 13 -
drivers/net/wireless/ath/ath9k/ar9003_mac.c | 1 -
drivers/net/wireless/ath/ath9k/ar9003_paprd.c | 125 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.c | 28 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.h | 8 +
drivers/net/wireless/ath/ath9k/ath9k.h | 5 +-
drivers/net/wireless/ath/ath9k/eeprom.c | 215 ++-
drivers/net/wireless/ath/ath9k/eeprom.h | 57 +-
drivers/net/wireless/ath/ath9k/eeprom_4k.c | 209 +--
drivers/net/wireless/ath/ath9k/eeprom_9287.c | 213 +--
drivers/net/wireless/ath/ath9k/eeprom_def.c | 211 +--
drivers/net/wireless/ath/ath9k/hif_usb.c | 1 +
drivers/net/wireless/ath/ath9k/htc_drv_main.c | 4 -
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 2 +-
drivers/net/wireless/ath/ath9k/hw-ops.h | 5 -
drivers/net/wireless/ath/ath9k/hw.c | 57 +-
drivers/net/wireless/ath/ath9k/hw.h | 18 +-
drivers/net/wireless/ath/ath9k/init.c | 5 +
drivers/net/wireless/ath/ath9k/main.c | 220 +-
drivers/net/wireless/ath/ath9k/pci.c | 3 +
drivers/net/wireless/ath/ath9k/rc.c | 2 +-
drivers/net/wireless/ath/ath9k/virtual.c | 1 -
drivers/net/wireless/ath/ath9k/xmit.c | 30 +-
drivers/net/wireless/ath/key.c | 2 +
drivers/net/wireless/ath/regd.c | 8 +
drivers/net/wireless/b43/b43.h | 8 +-
drivers/net/wireless/b43/main.c | 8 +-
drivers/net/wireless/b43/phy_n.c | 35 +-
drivers/net/wireless/b43/tables_nphy.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-1000.c | 71 +-
drivers/net/wireless/iwlwifi/iwl-5000.c | 88 +-
drivers/net/wireless/iwlwifi/iwl-6000.c | 338 +--
drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c | 3 +
drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c | 304 +--
drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 1 +
drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 6 +-
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 9 +-
drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 9 +-
drivers/net/wireless/iwlwifi/iwl-core.c | 17 +
drivers/net/wireless/iwlwifi/iwl-core.h | 5 +-
drivers/net/wireless/iwlwifi/iwl-debug.h | 2 +
drivers/net/wireless/iwlwifi/iwl-debugfs.c | 7 +
drivers/net/wireless/iwlwifi/iwl-dev.h | 1 +
drivers/net/wireless/iwlwifi/iwl-eeprom.c | 25 +-
drivers/net/wireless/iwlwifi/iwl-eeprom.h | 53 -
drivers/net/wireless/iwlwifi/iwl-prph.h | 2 +-
drivers/net/wireless/iwmc3200wifi/cfg80211.c | 3 +-
drivers/net/wireless/libertas/cfg.c | 3 +-
drivers/net/wireless/rndis_wlan.c | 4 +-
drivers/net/wireless/rt2x00/rt2400pci.c | 132 +-
drivers/net/wireless/rt2x00/rt2500pci.c | 132 +-
drivers/net/wireless/rt2x00/rt2500usb.c | 78 +-
drivers/net/wireless/rt2x00/rt2800.h | 158 +-
drivers/net/wireless/rt2x00/rt2800lib.c | 169 +-
drivers/net/wireless/rt2x00/rt2800lib.h | 2 +
drivers/net/wireless/rt2x00/rt2800pci.c | 133 +-
drivers/net/wireless/rt2x00/rt2800usb.c | 83 +-
drivers/net/wireless/rt2x00/rt2x00.h | 85 +-
drivers/net/wireless/rt2x00/rt2x00config.c | 6 +-
drivers/net/wireless/rt2x00/rt2x00debug.c | 5 +-
drivers/net/wireless/rt2x00/rt2x00dev.c | 35 +-
drivers/net/wireless/rt2x00/rt2x00lib.h | 9 -
drivers/net/wireless/rt2x00/rt2x00mac.c | 40 +-
drivers/net/wireless/rt2x00/rt2x00pci.c | 7 +
drivers/net/wireless/rt2x00/rt2x00pci.h | 2 +-
drivers/net/wireless/rt2x00/rt2x00queue.c | 239 ++-
drivers/net/wireless/rt2x00/rt2x00queue.h | 41 +-
drivers/net/wireless/rt2x00/rt2x00reg.h | 2 -
drivers/net/wireless/rt2x00/rt2x00usb.c | 282 ++-
drivers/net/wireless/rt2x00/rt2x00usb.h | 12 +-
drivers/net/wireless/rt2x00/rt61pci.c | 159 +-
drivers/net/wireless/rt2x00/rt61pci.h | 62 +-
drivers/net/wireless/rt2x00/rt73usb.c | 87 +-
drivers/net/wireless/rt2x00/rt73usb.h | 36 +-
drivers/net/wireless/rtlwifi/Kconfig | 15 +
drivers/net/wireless/rtlwifi/Makefile | 13 +
drivers/net/wireless/rtlwifi/base.c | 958 +++++++
drivers/net/wireless/rtlwifi/base.h | 120 +
drivers/net/wireless/rtlwifi/cam.c | 291 +++
drivers/net/wireless/rtlwifi/cam.h | 53 +
drivers/net/wireless/rtlwifi/core.c | 1029 ++++++++
drivers/net/wireless/rtlwifi/core.h | 42 +
drivers/net/wireless/rtlwifi/debug.c | 50 +
drivers/net/wireless/rtlwifi/debug.h | 212 ++
drivers/net/wireless/rtlwifi/efuse.c | 1189 +++++++++
drivers/net/wireless/rtlwifi/efuse.h | 124 +
drivers/net/wireless/rtlwifi/pci.c | 1933 ++++++++++++++
drivers/net/wireless/rtlwifi/pci.h | 302 +++
drivers/net/wireless/rtlwifi/ps.c | 493 ++++
drivers/net/wireless/rtlwifi/ps.h | 43 +
drivers/net/wireless/rtlwifi/rc.c | 329 +++
drivers/net/wireless/rtlwifi/rc.h | 40 +
drivers/net/wireless/rtlwifi/regd.c | 400 +++
drivers/net/wireless/rtlwifi/regd.h | 61 +
drivers/net/wireless/rtlwifi/rtl8192ce/Makefile | 12 +
drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 257 ++
drivers/net/wireless/rtlwifi/rtl8192ce/dm.c | 1473 +++++++++++
drivers/net/wireless/rtlwifi/rtl8192ce/dm.h | 196 ++
drivers/net/wireless/rtlwifi/rtl8192ce/fw.c | 804 ++++++
drivers/net/wireless/rtlwifi/rtl8192ce/fw.h | 98 +
drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 2173 ++++++++++++++++
drivers/net/wireless/rtlwifi/rtl8192ce/hw.h | 57 +
drivers/net/wireless/rtlwifi/rtl8192ce/led.c | 144 ++
drivers/net/wireless/rtlwifi/rtl8192ce/led.h | 41 +
drivers/net/wireless/rtlwifi/rtl8192ce/phy.c | 2676 ++++++++++++++++++++
drivers/net/wireless/rtlwifi/rtl8192ce/phy.h | 237 ++
drivers/net/wireless/rtlwifi/rtl8192ce/reg.h | 2065 +++++++++++++++
drivers/net/wireless/rtlwifi/rtl8192ce/rf.c | 523 ++++
drivers/net/wireless/rtlwifi/rtl8192ce/rf.h | 44 +
drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 282 ++
drivers/net/wireless/rtlwifi/rtl8192ce/sw.h | 37 +
drivers/net/wireless/rtlwifi/rtl8192ce/table.c | 1224 +++++++++
drivers/net/wireless/rtlwifi/rtl8192ce/table.h | 58 +
drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 1031 ++++++++
drivers/net/wireless/rtlwifi/rtl8192ce/trx.h | 714 ++++++
drivers/net/wireless/rtlwifi/wifi.h | 1532 +++++++++++
drivers/net/wireless/wl1251/sdio.c | 2 +-
drivers/net/wireless/wl12xx/Kconfig | 10 +
drivers/net/wireless/wl12xx/Makefile | 3 +
drivers/net/wireless/wl12xx/acx.c | 4 +-
drivers/net/wireless/wl12xx/acx.h | 9 +-
drivers/net/wireless/wl12xx/boot.c | 17 +-
drivers/net/wireless/wl12xx/boot.h | 1 +
drivers/net/wireless/wl12xx/cmd.c | 69 +
drivers/net/wireless/wl12xx/cmd.h | 4 +
drivers/net/wireless/wl12xx/debugfs.c | 192 +--
drivers/net/wireless/wl12xx/init.c | 13 +-
drivers/net/wireless/wl12xx/io.c | 1 +
drivers/net/wireless/wl12xx/main.c | 119 +-
drivers/net/wireless/wl12xx/scan.c | 4 +
drivers/net/wireless/wl12xx/sdio_test.c | 520 ++++
drivers/net/wireless/wl12xx/tx.c | 60 +-
drivers/net/wireless/wl12xx/wl12xx.h | 129 +-
drivers/net/wireless/wl12xx/wl12xx_80211.h | 17 +-
include/linux/ieee80211.h | 27 +-
include/linux/nl80211.h | 113 +-
include/net/cfg80211.h | 67 +-
include/net/mac80211.h | 56 +-
net/mac80211/agg-tx.c | 7 +-
net/mac80211/cfg.c | 53 +-
net/mac80211/debugfs_key.c | 37 +-
net/mac80211/debugfs_key.h | 8 +-
net/mac80211/debugfs_sta.c | 2 +-
net/mac80211/driver-ops.h | 2 +-
net/mac80211/ieee80211_i.h | 25 +-
net/mac80211/iface.c | 15 +
net/mac80211/key.c | 45 +-
net/mac80211/key.h | 3 +-
net/mac80211/led.c | 186 ++-
net/mac80211/led.h | 45 +-
net/mac80211/main.c | 17 +-
net/mac80211/mesh.c | 52 +-
net/mac80211/mesh.h | 22 +-
net/mac80211/mesh_plink.c | 3 +-
net/mac80211/rc80211_minstrel_ht.c | 2 +-
net/mac80211/rx.c | 53 +-
net/mac80211/sta_info.h | 2 +
net/mac80211/tx.c | 25 +-
net/mac80211/util.c | 3 +
net/wireless/core.c | 22 +-
net/wireless/core.h | 5 +-
net/wireless/mesh.c | 24 +-
net/wireless/mlme.c | 22 +
net/wireless/nl80211.c | 276 ++-
net/wireless/nl80211.h | 6 +
net/wireless/reg.c | 3 +-
net/wireless/scan.c | 11 +
net/wireless/util.c | 3 +-
net/wireless/wext-compat.c | 8 +-
181 files changed, 27766 insertions(+), 3073 deletions(-)
create mode 100644 drivers/net/wireless/rtlwifi/Kconfig
create mode 100644 drivers/net/wireless/rtlwifi/Makefile
create mode 100644 drivers/net/wireless/rtlwifi/base.c
create mode 100644 drivers/net/wireless/rtlwifi/base.h
create mode 100644 drivers/net/wireless/rtlwifi/cam.c
create mode 100644 drivers/net/wireless/rtlwifi/cam.h
create mode 100644 drivers/net/wireless/rtlwifi/core.c
create mode 100644 drivers/net/wireless/rtlwifi/core.h
create mode 100644 drivers/net/wireless/rtlwifi/debug.c
create mode 100644 drivers/net/wireless/rtlwifi/debug.h
create mode 100644 drivers/net/wireless/rtlwifi/efuse.c
create mode 100644 drivers/net/wireless/rtlwifi/efuse.h
create mode 100644 drivers/net/wireless/rtlwifi/pci.c
create mode 100644 drivers/net/wireless/rtlwifi/pci.h
create mode 100644 drivers/net/wireless/rtlwifi/ps.c
create mode 100644 drivers/net/wireless/rtlwifi/ps.h
create mode 100644 drivers/net/wireless/rtlwifi/rc.c
create mode 100644 drivers/net/wireless/rtlwifi/rc.h
create mode 100644 drivers/net/wireless/rtlwifi/regd.c
create mode 100644 drivers/net/wireless/rtlwifi/regd.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/Makefile
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/def.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/dm.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/dm.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/fw.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/fw.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/hw.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/led.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/led.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/phy.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/phy.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/reg.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/rf.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/rf.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/sw.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/table.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/table.h
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/trx.c
create mode 100644 drivers/net/wireless/rtlwifi/rtl8192ce/trx.h
create mode 100644 drivers/net/wireless/rtlwifi/wifi.h
create mode 100644 drivers/net/wireless/wl12xx/sdio_test.c
Omnibus patch is available here:
http://www.kernel.org/pub/linux/kernel/people/linville/wireless-next-2.6-2010-12-22.patch.bz2
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH v2 01/18] wl1271: Add AP related configuration to conf_drv_settings
From: Luciano Coelho @ 2010-12-22 20:22 UTC (permalink / raw)
To: ext Arik Nemtsov; +Cc: linux-wireless
In-Reply-To: <1293028057-6212-2-git-send-email-arik@wizery.com>
On Wed, 2010-12-22 at 16:27 +0200, ext Arik Nemtsov wrote:
> Rate class configuration has been split up for AP and STA modes.
> Template related configuration likewise separated.
>
> Signed-off-by: Arik Nemtsov <arik@wizery.com>
> ---
[...]
> @@ -153,6 +153,45 @@ static struct conf_drv_settings default_conf = {
> .tx_op_limit = 1504,
> },
> },
> + .ap_rc_conf = {
> + [0] = {
> + .enabled_rates = 0x1EFF,
> + .short_retry_limit = 10,
> + .long_retry_limit = 10,
> + .aflags = 0,
> + },
> + [1] = {
> + .enabled_rates = 0x1EFF,
> + .short_retry_limit = 10,
> + .long_retry_limit = 10,
> + .aflags = 0,
> + },
> + [2] = {
> + .enabled_rates = 0x1EFF,
> + .short_retry_limit = 10,
> + .long_retry_limit = 10,
> + .aflags = 0,
> + },
> + [3] = {
> + .enabled_rates = 0x1EFF,
> + .short_retry_limit = 10,
> + .long_retry_limit = 10,
> + .aflags = 0,
> + },
> + },
> + .ap_mgmt_conf = {
> + .enabled_rates = 0x7,
> + .short_retry_limit = 10,
> + .long_retry_limit = 10,
> + .aflags = 0,
> + },
> + .ap_bcst_conf = {
> + .enabled_rates = 0x1,
> + .short_retry_limit = 10,
> + .long_retry_limit = 10,
> + .aflags = 0,
> + },
> +
All the enabled_rates values here look quite magic. Is there any way
these could be changed to macros or something more descriptive?
Also, how do you deal with the different basic rates used by 11bg and
11a?
--
Cheers,
Luca.
^ permalink raw reply
* Re: [PATCH 0/3] b43: Is this series still valid??
From: John W. Linville @ 2010-12-22 20:02 UTC (permalink / raw)
To: Rafał Miłecki; +Cc: linux-wireless
In-Reply-To: <AANLkTikJcCWph2OCp+eaEsdKDXT8Q374KFp=13zX+Rro@mail.gmail.com>
On Wed, Dec 22, 2010 at 08:20:18PM +0100, Rafał Miłecki wrote:
> 2010/12/22 John W. Linville <linville@tuxdriver.com>:
> > I found this old series pending in my queue from months ago. I sat on
> > them because they had some discussion and never got reposted.
> >
> > Looking closer, the discussion never amounted to a NAK. So, I tried
> > applying them, and they applied with only minor massaging.
> >
> > So, are these still valid?
> >
> > Let me know...
>
> The way we call init in one of patches may be incorrect, I'm not sure
> if we still need to keep b_width (from other patch). I think it'll be
> better to ignore that patches for now.
OK, I'll drop them -- please repost if/when they are ready...
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: Backporting wl1271 driver to kernel-2.6.32 using compat-wireless
From: Hauke Mehrtens @ 2010-12-22 20:12 UTC (permalink / raw)
To: Elvis Dowson; +Cc: Linux Wireless Mailing List
In-Reply-To: <A7C7741B-634A-4C4B-A6F1-EBEA5F2EEED5@mac.com>
On 12/22/2010 09:03 PM, Elvis Dowson wrote:
>
> On Dec 22, 2010, at 11:34 PM, Elvis Dowson wrote:
>
>> However, I don't see a wl1271.ko module in the list of built files. The TI android
>> rowboard 2.6.32 kernel doesn't have an option for wl12xx or wl1271 at the moment
>> so, what do I do next? :-)
>
> I only see the following kernel modules :
>
> cfg80211.ko
> compat.ko
> compat_firmware_class.ko
> mac80211.ko
>
> Shouldn't a wl1271.ko or wl12xx,ko module be there?
>
> I configured compat-wireless for the wl12xx driver.
>
> Elvis Dowson
Hi Elvis,
Looks like you did everything correct. ;-)
Is CONFIG_CRC7=y set in your kernel config, the wl12xx module needs
this? If it is not set the module will not be build.
Hauke
^ permalink raw reply
* Compat-wireless release for 2010-12-22 is baked
From: Compat-wireless cronjob account @ 2010-12-22 20:07 UTC (permalink / raw)
To: linux-wireless
>From git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next
5d491fa..34367c7 history -> origin/history
+ 8ee7e11...6953948 master -> origin/master (forced update)
55ec86f..8cad7f0 stable -> origin/stable
* [new tag] next-20101221 -> next-20101221
compat-wireless code metrics
777174 - Total upstream lines of code being pulled
2223 - backport code changes
1946 - backport code additions
277 - backport code deletions
6669 - backport from compat module
8892 - total backport code
1.1441 - % of code consists of backport work
1532 - Crap changes not yet posted
1489 - Crap additions not yet posted
43 - Crap deletions not yet posted
0.1971 - % of crap code
Base tree: linux-next.git
Base tree version: next-20101221
compat-wireless release: compat-wireless-2010-12-20-pc
^ permalink raw reply
* Re: Backporting wl1271 driver to kernel-2.6.32 using compat-wireless
From: Elvis Dowson @ 2010-12-22 20:03 UTC (permalink / raw)
To: Linux Wireless Mailing List
In-Reply-To: <C7700580-CCBB-498D-9EA5-73E2BF748C68@mac.com>
On Dec 22, 2010, at 11:34 PM, Elvis Dowson wrote:
> However, I don't see a wl1271.ko module in the list of built files. The TI android
> rowboard 2.6.32 kernel doesn't have an option for wl12xx or wl1271 at the moment
> so, what do I do next? :-)
I only see the following kernel modules :
cfg80211.ko
compat.ko
compat_firmware_class.ko
mac80211.ko
Shouldn't a wl1271.ko or wl12xx,ko module be there?
I configured compat-wireless for the wl12xx driver.
Elvis Dowson
^ permalink raw reply
* pull request: wireless-2.6 2010-12-22
From: John W. Linville @ 2010-12-22 19:52 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev, linux-kernel
Dave,
Three more fixes intended for 2.6.37...
The one from Johannes Berg avoids a NULL pointer dereference in the mesh
code. The one from Johannes Stezenbach fixes bug 24892, which is a
lock-up caused by rt2x00. Finally, you probably recognize the one from
Meelis Roos which removes some log spam coming from hostap. These have
all spent several days in linux-next without any adverse effects.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 227fb925d3d3c5e565c1f1323a530564509195f2:
MAINTAINERS: email address change (2010-12-21 19:58:15 -0800)
are available in the git repository at:
ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git master
Johannes Berg (1):
mac80211: fix mesh forwarding
Johannes Stezenbach (1):
mac80211/rt2x00: add ieee80211_tx_status_ni()
Meelis Roos (1):
hostap: remove netif_stop_queue from init
drivers/net/wireless/hostap/hostap_main.c | 1 -
drivers/net/wireless/rt2x00/rt2800pci.c | 1 +
drivers/net/wireless/rt2x00/rt2x00.h | 1 +
drivers/net/wireless/rt2x00/rt2x00dev.c | 9 ++++++---
include/net/mac80211.h | 28 ++++++++++++++++++++++++----
net/mac80211/rx.c | 5 ++++-
6 files changed, 36 insertions(+), 9 deletions(-)
diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c
index 25a2722..1d9aed6 100644
--- a/drivers/net/wireless/hostap/hostap_main.c
+++ b/drivers/net/wireless/hostap/hostap_main.c
@@ -891,7 +891,6 @@ void hostap_setup_dev(struct net_device *dev, local_info_t *local,
SET_ETHTOOL_OPS(dev, &prism2_ethtool_ops);
- netif_stop_queue(dev);
}
static int hostap_enable_hostapd(local_info_t *local, int rtnl_locked)
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index b267395..09a6790 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -912,6 +912,7 @@ static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
__set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags);
__set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags);
__set_bit(DRIVER_REQUIRE_TXSTATUS_FIFO, &rt2x00dev->flags);
+ __set_bit(DRIVER_REQUIRE_TASKLET_CONTEXT, &rt2x00dev->flags);
if (!modparam_nohwcrypt)
__set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
__set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags);
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 94fe589..ab43e7c 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -664,6 +664,7 @@ enum rt2x00_flags {
DRIVER_REQUIRE_COPY_IV,
DRIVER_REQUIRE_L2PAD,
DRIVER_REQUIRE_TXSTATUS_FIFO,
+ DRIVER_REQUIRE_TASKLET_CONTEXT,
/*
* Driver features
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 5ba79b9..d019830 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -390,9 +390,12 @@ void rt2x00lib_txdone(struct queue_entry *entry,
* through a mac80211 library call (RTS/CTS) then we should not
* send the status report back.
*/
- if (!(skbdesc_flags & SKBDESC_NOT_MAC80211))
- ieee80211_tx_status(rt2x00dev->hw, entry->skb);
- else
+ if (!(skbdesc_flags & SKBDESC_NOT_MAC80211)) {
+ if (test_bit(DRIVER_REQUIRE_TASKLET_CONTEXT, &rt2x00dev->flags))
+ ieee80211_tx_status(rt2x00dev->hw, entry->skb);
+ else
+ ieee80211_tx_status_ni(rt2x00dev->hw, entry->skb);
+ } else
dev_kfree_skb_any(entry->skb);
/*
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 9fdf982..365359b 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2024,8 +2024,8 @@ static inline void ieee80211_rx_ni(struct ieee80211_hw *hw,
*
* This function may not be called in IRQ context. Calls to this function
* for a single hardware must be synchronized against each other. Calls
- * to this function and ieee80211_tx_status_irqsafe() may not be mixed
- * for a single hardware.
+ * to this function, ieee80211_tx_status_ni() and ieee80211_tx_status_irqsafe()
+ * may not be mixed for a single hardware.
*
* @hw: the hardware the frame was transmitted by
* @skb: the frame that was transmitted, owned by mac80211 after this call
@@ -2034,13 +2034,33 @@ void ieee80211_tx_status(struct ieee80211_hw *hw,
struct sk_buff *skb);
/**
+ * ieee80211_tx_status_ni - transmit status callback (in process context)
+ *
+ * Like ieee80211_tx_status() but can be called in process context.
+ *
+ * Calls to this function, ieee80211_tx_status() and
+ * ieee80211_tx_status_irqsafe() may not be mixed
+ * for a single hardware.
+ *
+ * @hw: the hardware the frame was transmitted by
+ * @skb: the frame that was transmitted, owned by mac80211 after this call
+ */
+static inline void ieee80211_tx_status_ni(struct ieee80211_hw *hw,
+ struct sk_buff *skb)
+{
+ local_bh_disable();
+ ieee80211_tx_status(hw, skb);
+ local_bh_enable();
+}
+
+/**
* ieee80211_tx_status_irqsafe - IRQ-safe transmit status callback
*
* Like ieee80211_tx_status() but can be called in IRQ context
* (internally defers to a tasklet.)
*
- * Calls to this function and ieee80211_tx_status() may not be mixed for a
- * single hardware.
+ * Calls to this function, ieee80211_tx_status() and
+ * ieee80211_tx_status_ni() may not be mixed for a single hardware.
*
* @hw: the hardware the frame was transmitted by
* @skb: the frame that was transmitted, owned by mac80211 after this call
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 54fb4a0e..b01e467 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1788,9 +1788,11 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
fwd_skb = skb_copy(skb, GFP_ATOMIC);
- if (!fwd_skb && net_ratelimit())
+ if (!fwd_skb && net_ratelimit()) {
printk(KERN_DEBUG "%s: failed to clone mesh frame\n",
sdata->name);
+ goto out;
+ }
fwd_hdr = (struct ieee80211_hdr *) fwd_skb->data;
memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN);
@@ -1828,6 +1830,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
}
}
+ out:
if (is_multicast_ether_addr(hdr->addr1) ||
sdata->dev->flags & IFF_PROMISC)
return RX_CONTINUE;
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply related
* Re: [ath9k] skbuff alloc of size 3872 failed
From: Luis R. Rodriguez @ 2010-12-22 19:39 UTC (permalink / raw)
To: Matt Turner; +Cc: linux-wireless, ath9k-devel, Michael Guntsche, Eric Dumazet
In-Reply-To: <AANLkTi=GUN7=AQAAvmgADgwHtcquNiZbWEtgCoJpC4Fv@mail.gmail.com>
On Wed, Dec 22, 2010 at 2:22 PM, Matt Turner <mattst88@gmail.com> wrote:
> With the ath9k driver, I get "skbuff alloc of size 3872 failed"
>
> I hit this again today after not using wireless for quite sometime. It
> looks like it was originally reported against 2.6.35-rc1. Eric Dumazet
> provided a patch which fixed the issue, but apparently it's still not
> upstream. Why is this?
>
> If it is suitable for upstream inclusion, please take my Tested-by:
> Matt Turner <mattst88@gmail.com>
>
> https://patchwork.kernel.org/patch/104271/
Never saw this patch, can this be posted to linux-wireless with a proper SOB?
Luis
^ permalink raw reply
* Re: Backporting wl1271 driver to kernel-2.6.32 using compat-wireless
From: Elvis Dowson @ 2010-12-22 19:34 UTC (permalink / raw)
To: Hauke Mehrtens; +Cc: Oz Krakowski, Linux Wireless Mailing List
In-Reply-To: <4D123FBB.1050801@hauke-m.de>
Hi,
On Dec 22, 2010, at 10:13 PM, Hauke Mehrtens wrote:
> In your kernel config CONFIG_LEDS_TRIGGERS is probably unset and then
> net/mac80211/led.c should not be build at all. In the kernel
> CONFIG_MAC80211_LEDS will select CONFIG_LEDS_TRIGGERS, but in
> compat-wireless this should just be disabled.
> I provided a patch for this problem, please apply it and try again.
Thanks for sending the patch across so quickly. I applied it and it built correctly.
However, I don't see a wl1271.ko module in the list of built files. The TI android
rowboard 2.6.32 kernel doesn't have an option for wl12xx or wl1271 at the moment
so, what do I do next? :-)
Sorry, its my first time trying to use compat-wireless.
$ ./scripts/driver-select wl12xx
Processing new driver-select request...
Backup exists: Makefile.bk
Backup exists: drivers/net/wireless/Makefile.bk
Backup exists: Makefile.bk
Backup exists: net/wireless/Makefile.bk
Backup exists: drivers/net/Makefile.bk
Backup exists: drivers/ssb/Makefile.bk
Backup exists: drivers/misc/eeprom/Makefile.bk
Backup exists: Makefile.bk
elvis@hercules:/tool/patches/compat-wireless-2.6.37-rc6-3-patchwork$ make
./scripts/gen-compat-autoconf.sh config.mk > include/linux/compat_autoconf.h
make -C /tool/patches/android-rowboat-2.6.32-kernel-patchwork M=/tool/patches/compat-wireless-2.6.37-rc6-3-patchwork modules
make[1]: Entering directory `/tool/patches/android-rowboat-2.6.32-kernel-patchwork'
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/main.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat-2.6.33.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat-2.6.35.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat-2.6.36.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat-2.6.37.o
LD [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat_firmware_class.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/main.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/status.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/sta_info.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/wep.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/wpa.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/scan.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/offchannel.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/ht.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/agg-tx.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/agg-rx.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/ibss.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/mlme.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/work.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/iface.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/rate.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/michael.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/tkip.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/aes_ccm.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/aes_cmac.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/cfg.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/rx.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/spectmgmt.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/tx.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/key.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/util.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/wme.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/event.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/chan.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/mesh.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/mesh_pathtbl.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/mesh_plink.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/mesh_hwmp.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/pm.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/rc80211_pid_algo.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/rc80211_minstrel.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/rc80211_minstrel_ht.o
LD [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/mac80211.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/core.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/sysfs.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/radiotap.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/util.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/reg.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/scan.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/nl80211.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/mlme.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/ibss.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/sme.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/chan.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/ethtool.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/wext-compat.o
CC [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/wext-sme.o
LD [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/cfg80211.o
Building modules, stage 2.
MODPOST 4 modules
CC /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat.mod.o
LD [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat.ko
CC /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat_firmware_class.mod.o
LD [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/compat/compat_firmware_class.ko
CC /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/mac80211.mod.o
LD [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/mac80211/mac80211.ko
CC /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/cfg80211.mod.o
LD [M] /tool/patches/compat-wireless-2.6.37-rc6-3-patchwork/net/wireless/cfg80211.ko
make[1]: Leaving directory `/tool/patches/android-rowboat-2.6.32-kernel-patchwork'
Elvis Dowson
^ permalink raw reply
* Re: [PATCH v2] rt2x00: Fix panic on frame padding for rt2800 usb devices
From: Gertjan van Wingerde @ 2010-12-22 19:33 UTC (permalink / raw)
To: Ismael Luceno; +Cc: linux-wireless, Ivo Van Doorn
In-Reply-To: <1292899311-20768-1-git-send-email-ismael.luceno@gmail.com>
On 12/21/10 03:41, Ismael Luceno wrote:
> Backtrace:
> rt2800usb_write_tx_data
> rt2x00queue_write_tx_frame
> rt2x00mac_tx
> invoke_tx_handlers
> __ieee80211_tx
> ieee80211_tx
> virt_to_head_page
> ieee80211_xmit
> ieee80211_tx_skb
> ieee80211_scan_work
> schedule
> ieee80211_scan_work
> process_one_work
> ...
>
> It tried to expand the skb past it's end using skb_put. So I replaced it
> with a call to skb_padto, which takes the issue into account.
>
> Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com>
> ---
> drivers/net/wireless/rt2x00/rt2800usb.c | 16 ++++++++++++----
> 1 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
> index 3e0205d..b97a4a5 100644
> --- a/drivers/net/wireless/rt2x00/rt2800usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
> @@ -369,7 +369,10 @@ static void rt2800usb_write_tx_desc(struct queue_entry *entry,
> static void rt2800usb_write_tx_data(struct queue_entry *entry,
> struct txentry_desc *txdesc)
> {
> - u8 padding_len;
> + unsigned int len;
> + int err;
> +
> + rt2800_write_tx_data(entry, txdesc);
>
> /*
> * pad(1~3 bytes) is added after each 802.11 payload.
> @@ -378,9 +381,14 @@ static void rt2800usb_write_tx_data(struct queue_entry *entry,
> * | TXINFO | TXWI | 802.11 header | L2 pad | payload | pad | USB end pad |
> * |<------------- tx_pkt_len ------------->|
> */
> - rt2800_write_tx_data(entry, txdesc);
> - padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len;
> - memset(skb_put(entry->skb, padding_len), 0, padding_len);
> + len = roundup(entry->skb->len, 4) + 4;
> + err = skb_padto(entry->skb, len);
> + if (unlikely(err)) {
> + WARNING(entry->queue->rt2x00dev, "TX SKB padding error, out of memory\n");
> + return;
> + }
> +
> + entry->skb->len = len;
> }
>
> /*
Why did you change the computation of the length?
To me, looking at the original code, the correct computation should be:
len = roundup(entry->skb->len + 4, 4);
Now it seems we sometimes include padding where we don't have to (and thus
potentially have to expand the buffer when we won't have to).
---
Gertjan.
^ permalink raw reply
* [ath9k] skbuff alloc of size 3872 failed
From: Matt Turner @ 2010-12-22 19:22 UTC (permalink / raw)
To: linux-wireless, ath9k-devel; +Cc: Michael Guntsche, Eric Dumazet
With the ath9k driver, I get "skbuff alloc of size 3872 failed"
I hit this again today after not using wireless for quite sometime. It
looks like it was originally reported against 2.6.35-rc1. Eric Dumazet
provided a patch which fixed the issue, but apparently it's still not
upstream. Why is this?
If it is suitable for upstream inclusion, please take my Tested-by:
Matt Turner <mattst88@gmail.com>
https://patchwork.kernel.org/patch/104271/
Thanks,
Matt
^ permalink raw reply
* Re: [PATCH 0/3] b43: Is this series still valid??
From: Rafał Miłecki @ 2010-12-22 19:20 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless
In-Reply-To: <1293045092-12483-1-git-send-email-linville@tuxdriver.com>
2010/12/22 John W. Linville <linville@tuxdriver.com>:
> I found this old series pending in my queue from months ago. I sat on
> them because they had some discussion and never got reposted.
>
> Looking closer, the discussion never amounted to a NAK. So, I tried
> applying them, and they applied with only minor massaging.
>
> So, are these still valid?
>
> Let me know...
The way we call init in one of patches may be incorrect, I'm not sure
if we still need to keep b_width (from other patch). I think it'll be
better to ignore that patches for now.
--
Rafał
^ permalink raw reply
* [PATCH 3/3] b43: N-PHY: check for clk when setting RX core state
From: John W. Linville @ 2010-12-22 19:11 UTC (permalink / raw)
To: linux-wireless; +Cc: Rafał Miłecki, John W. Linville
In-Reply-To: <1293045092-12483-1-git-send-email-linville@tuxdriver.com>
From: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
drivers/net/wireless/b43/phy_n.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index 3f2ce92..d50e880 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -3282,7 +3282,7 @@ static void b43_nphy_set_rx_core_state(struct b43_wldev *dev, u8 mask)
nphy->phyrxchain = mask;
- if (0 /* FIXME clk */)
+ if (!phy->clk)
return;
b43_mac_suspend(dev);
--
1.7.3.3
^ permalink raw reply related
* [PATCH 1/3] b43: N-PHY: band width setting with dumb clock control call
From: John W. Linville @ 2010-12-22 19:11 UTC (permalink / raw)
To: linux-wireless; +Cc: Rafał Miłecki, John W. Linville
In-Reply-To: <1293045092-12483-1-git-send-email-linville@tuxdriver.com>
From: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
drivers/net/wireless/b43/phy_common.c | 20 ++++++++++++++++++++
drivers/net/wireless/b43/phy_common.h | 11 +++++++++++
drivers/net/wireless/b43/phy_n.c | 2 +-
3 files changed, 32 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
index b5c5ce9..113b9f1 100644
--- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c
@@ -482,3 +482,23 @@ struct b43_c32 b43_cordic(int theta)
return ret;
}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
+static void b43_clock_control(struct b43_wldev *dev, u32 mode)
+{
+ /* TODO */
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacBwSet */
+void b43_bmac_set_b_width(struct b43_wldev *dev, u8 b_width)
+{
+ bool fast = dev->phy.forcefastclk;
+ if (!fast)
+ b43_clock_control(dev, 0);
+ dev->phy.b_width = b_width;
+ b43_read32(dev, B43_MMIO_MACCTL); /* flush writes */
+ /* TODO: Call PHY BMAC Reset */
+ dev->phy.ops->init(dev);
+ if (fast)
+ b43_clock_control(dev, 2);
+}
diff --git a/drivers/net/wireless/b43/phy_common.h b/drivers/net/wireless/b43/phy_common.h
index 2401bee..2dd04cf 100644
--- a/drivers/net/wireless/b43/phy_common.h
+++ b/drivers/net/wireless/b43/phy_common.h
@@ -222,6 +222,9 @@ struct b43_phy {
bool supports_2ghz;
bool supports_5ghz;
+ /* Band width */
+ u8 b_width;
+
/* HT info */
bool is_40mhz;
@@ -265,6 +268,9 @@ struct b43_phy {
/* PHY TX errors counter. */
atomic_t txerr_cnt;
+ /* Clock */
+ bool forcefastclk;
+
#ifdef CONFIG_B43_DEBUG
/* PHY registers locked (w.r.t. firmware) */
bool phy_locked;
@@ -440,4 +446,9 @@ bool b43_channel_type_is_40mhz(enum nl80211_channel_type channel_type);
struct b43_c32 b43_cordic(int theta);
+/**
+ * b43_bmac_set_b_width - Set band width
+ */
+void b43_bmac_set_b_width(struct b43_wldev *dev, u8 b_width);
+
#endif /* LINUX_B43_PHY_COMMON_H_ */
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index a1aa570..3f2ce92 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -3595,7 +3595,7 @@ static int b43_nphy_set_channel(struct b43_wldev *dev,
if (b43_channel_type_is_40mhz(phy->channel_type) !=
b43_channel_type_is_40mhz(channel_type))
- ; /* TODO: BMAC BW Set (channel_type) */
+ b43_bmac_set_b_width(dev, channel_type);
if (channel_type == NL80211_CHAN_HT40PLUS)
b43_phy_set(dev, B43_NPHY_RXCTL,
--
1.7.3.3
^ permalink raw reply related
* [PATCH 2/3] b43: N-PHY: add sub calls of band width setting
From: John W. Linville @ 2010-12-22 19:11 UTC (permalink / raw)
To: linux-wireless; +Cc: Rafał Miłecki, John W. Linville
In-Reply-To: <1293045092-12483-1-git-send-email-linville@tuxdriver.com>
From: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
drivers/net/wireless/b43/b43.h | 1 +
drivers/net/wireless/b43/phy_common.c | 150 ++++++++++++++++++++++++++++++++-
drivers/net/wireless/b43/phy_common.h | 7 ++
3 files changed, 157 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
index bd4cb75..2798a9e 100644
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
@@ -57,6 +57,7 @@
#define B43_MMIO_TSF_CFP_REP 0x188
#define B43_MMIO_TSF_CFP_START 0x18C
#define B43_MMIO_TSF_CFP_MAXDUR 0x190
+#define B43_MMIO_CLKCTL 0x1E0 /* clock control status */
/* 32-bit DMA */
#define B43_MMIO_DMA32_BASE0 0x200
diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
index 113b9f1..9b94cdc 100644
--- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c
@@ -483,10 +483,158 @@ struct b43_c32 b43_cordic(int theta)
return ret;
}
+/* http://bcm-v4.sipsolutions.net/802.11/NcClkCtlCc */
+static bool b43_no_check_clock_control_chip_common(struct b43_wldev *dev,
+ u32 mode)
+{
+ /* TODO: this is temporary hack */
+ return (mode == 0);
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/ClkCtlCc */
+static bool b43_clock_control_chip_common(struct b43_wldev *dev, u32 mode)
+{
+ struct ssb_bus *bus = dev->dev->bus;
+ u16 chip_id = bus->chip_id;
+ u16 chip_rev = bus->chip_rev;
+ /* TODO: specs distinguish PCI and PCIe */
+ bool pci = (bus->bustype == SSB_BUSTYPE_PCI);
+
+ if (dev->dev->id.revision < 6)
+ return false;
+ if (pci && ((chip_id == 0x4311 && chip_rev < 2) ||
+ (pci && chip_id == 0x4321) ||
+ (pci && chip_id == 0x4716)))
+ return (mode == 0);
+ return b43_no_check_clock_control_chip_common(dev, mode);
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacWaitForWake */
+static void b43_phy_bmac_wait_for_wake(struct b43_wldev *dev)
+{
+ u8 core_rev = dev->dev->bus->pcicore.dev->id.revision;
+ u16 tmp, i;
+
+ if (core_rev == 4) {
+ udelay(5);
+ return;
+ }
+
+ if (dev->phy.type == B43_PHYTYPE_G && core_rev == 5)
+ udelay(2000);
+ else
+ udelay(40);
+
+ for (i = 0; i < 1500; i++) {
+ tmp = b43_shm_read16(dev, B43_SHM_SHARED,
+ B43_SHM_SH_UCODESTAT);
+ if (tmp == B43_SHM_SH_UCODESTAT_SLEEP) {
+ i = 0;
+ break;
+ }
+ udelay(10);
+ }
+ if (i)
+ b43err(dev->wl, "ucode wake up timeout\n");
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/MctrlWrite */
+static void b43_phy_mac_control_write(struct b43_wldev *dev)
+{
+ u32 tmp = dev->phy.maccontrol;
+ if (dev->phy.wake_override)
+ tmp |= B43_MACCTL_AWAKE;
+ if (dev->phy.mute_override)
+ tmp &= ~B43_MACCTL_AP;
+ tmp |= B43_MACCTL_INFRA;
+ b43_write32(dev, B43_MMIO_MACCTL, tmp);
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/UcodeWakeOverrideSet */
+static void b43_ucode_wake_override_set(struct b43_wldev *dev, u32 override)
+{
+ dev->phy.wake_override |= override;
+ if (dev->phy.wake_override || dev->phy.maccontrol & B43_MACCTL_AWAKE)
+ return;
+ b43_phy_mac_control_write(dev);
+ b43_phy_bmac_wait_for_wake(dev);
+}
+
+/* http://bcm-v4.sipsolutions.net/802.11/PHY/UcodeWakeOverrideClear */
+static void b43_ucode_wake_override_clear(struct b43_wldev *dev, u32 override)
+{
+ dev->phy.wake_override &= ~override;
+ if (dev->phy.wake_override != (dev->phy.maccontrol & B43_MACCTL_AWAKE))
+ return;
+ b43_phy_mac_control_write(dev);
+}
+
/* http://bcm-v4.sipsolutions.net/802.11/PHY/ClkCtlClk */
static void b43_clock_control(struct b43_wldev *dev, u32 mode)
{
- /* TODO */
+ struct b43_phy *phy = &dev->phy;
+ struct ssb_bus *bus = dev->dev->bus;
+ u8 core_rev = bus->pcicore.dev->id.revision;
+ u16 i;
+ u32 clkctl;
+ bool wakeup;
+
+ if (bus->chipco.capabilities & SSB_CHIPCO_CAP_PMU) { /* PMU Present */
+ B43_WARN_ON(core_rev < 20);
+ if (phy->clk) {
+ bool tmp = (bus->chipco.pmu.rev == 0 &&
+ (b43_read32(dev, B43_MMIO_CLKCTL) & 0x12));
+
+ if (mode == 0) {
+ clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
+ clkctl |= 0x2;
+ b43_write32(dev, B43_MMIO_CLKCTL, clkctl);
+ udelay(33);
+ }
+
+ if (mode == 0 || tmp) {
+ for (i = 0; i < 1500; i++) {
+ clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
+ if ((clkctl & 0x20000) == 0) {
+ i = 0;
+ break;
+ }
+ udelay(10);
+ }
+ if (i)
+ b43err(dev->wl, "clock timeout\n");
+ }
+
+ if (mode != 0 && tmp) {
+ clkctl = b43_read32(dev, B43_MMIO_CLKCTL);
+ clkctl &= ~0x2;
+ b43_write32(dev, B43_MMIO_CLKCTL, clkctl);
+ }
+ }
+ phy->forcefastclk = (mode == 0);
+ } else {
+ B43_WARN_ON(core_rev >= 20);
+
+ wakeup = (core_rev < 9);
+ if (phy->up && wakeup)
+ b43_ucode_wake_override_set(dev, 1);
+
+ phy->forcefastclk = b43_clock_control_chip_common(dev, mode);
+ if (core_rev < 11) {
+ if (phy->forcefastclk)
+ ; /* TODO: b43_mhf(dev, 0, 0x400, 0x400, 3); */
+ else
+ ; /* TODO: b43_mhf(dev, 0, 0x400, 0, 3); */
+ }
+
+ if (phy->forcefastclk)
+ phy->wake_override |= 0x10;
+ else
+ phy->wake_override &= ~0x10;
+
+ if (phy->up && wakeup)
+ b43_ucode_wake_override_clear(dev, 1);
+ }
}
/* http://bcm-v4.sipsolutions.net/802.11/PHY/BmacBwSet */
diff --git a/drivers/net/wireless/b43/phy_common.h b/drivers/net/wireless/b43/phy_common.h
index 2dd04cf..000c503 100644
--- a/drivers/net/wireless/b43/phy_common.h
+++ b/drivers/net/wireless/b43/phy_common.h
@@ -269,8 +269,15 @@ struct b43_phy {
atomic_t txerr_cnt;
/* Clock */
+ u32 clk;
bool forcefastclk;
+ bool up;
+ u32 maccontrol;
+
+ u32 wake_override;
+ u32 mute_override;
+
#ifdef CONFIG_B43_DEBUG
/* PHY registers locked (w.r.t. firmware) */
bool phy_locked;
--
1.7.3.3
^ permalink raw reply related
* [PATCH 0/3] b43: Is this series still valid??
From: John W. Linville @ 2010-12-22 19:11 UTC (permalink / raw)
To: linux-wireless; +Cc: John W. Linville
I found this old series pending in my queue from months ago. I sat on
them because they had some discussion and never got reposted.
Looking closer, the discussion never amounted to a NAK. So, I tried
applying them, and they applied with only minor massaging.
So, are these still valid?
Let me know...
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH v2] rt2x00: Fix panic on frame padding for rt2800 usb devices
From: Ivo Van Doorn @ 2010-12-22 19:08 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Gertjan van Wingerde, Ismael Luceno
In-Reply-To: <1292899311-20768-1-git-send-email-ismael.luceno@gmail.com>
> Backtrace:
> rt2800usb_write_tx_data
> rt2x00queue_write_tx_frame
> rt2x00mac_tx
> invoke_tx_handlers
> __ieee80211_tx
> ieee80211_tx
> virt_to_head_page
> ieee80211_xmit
> ieee80211_tx_skb
> ieee80211_scan_work
> schedule
> ieee80211_scan_work
> process_one_work
> ...
>
> It tried to expand the skb past it's end using skb_put. So I replaced it
> with a call to skb_padto, which takes the issue into account.
>
> Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
> ---
> drivers/net/wireless/rt2x00/rt2800usb.c | 16 ++++++++++++----
> 1 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
> index 3e0205d..b97a4a5 100644
> --- a/drivers/net/wireless/rt2x00/rt2800usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
> @@ -369,7 +369,10 @@ static void rt2800usb_write_tx_desc(struct queue_entry *entry,
> static void rt2800usb_write_tx_data(struct queue_entry *entry,
> struct txentry_desc *txdesc)
> {
> - u8 padding_len;
> + unsigned int len;
> + int err;
> +
> + rt2800_write_tx_data(entry, txdesc);
>
> /*
> * pad(1~3 bytes) is added after each 802.11 payload.
> @@ -378,9 +381,14 @@ static void rt2800usb_write_tx_data(struct queue_entry *entry,
> * | TXINFO | TXWI | 802.11 header | L2 pad | payload | pad | USB end pad |
> * |<------------- tx_pkt_len ------------->|
> */
> - rt2800_write_tx_data(entry, txdesc);
> - padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len;
> - memset(skb_put(entry->skb, padding_len), 0, padding_len);
> + len = roundup(entry->skb->len, 4) + 4;
> + err = skb_padto(entry->skb, len);
> + if (unlikely(err)) {
> + WARNING(entry->queue->rt2x00dev, "TX SKB padding error, out of memory\n");
> + return;
> + }
> +
> + entry->skb->len = len;
> }
>
> /*
> --
> 1.7.3.4
>
>
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox