* compat-wireless: backporting kfree_rcu()?
From: Johannes Berg @ 2011-10-18 8:18 UTC (permalink / raw)
To: linux-wireless
So I was looking at backporting kfree_rcu(), and came up with this:
#define kfree_rcu(data, rcuhead) do { \
void __kfree_rcu_fn(struct rcu_head *rcu_head) \
{ \
void *___ptr; \
___ptr = container_of(rcu_head, typeof(*(data)), rcuhead);\
kfree(___ptr); \
} \
call_rcu(&(data)->rcuhead, __kfree_rcu_fn); \
} while (0)
This works, thanks to gcc supporting nested functions, but has one major
issue: any module using call_rcu() must have an rcu_barrier() in its
module_exit() because __kfree_rcu_fn() might be called after the module
is unloaded. For kfree_rcu() this isn't needed since the function called
lives in the base kernel.
I played around with injecting a call to rcu_barrier() into module exit
by modifying module_exit() but I couldn't make the CPP do that. Anyone
else have any ideas?
Another idea I had was to insert the __kfree_rcu_fn() code into the
compat module instead, but I can't see how to do that short of using
some source post-processing scripts.
johannes
^ permalink raw reply
* [PATCH] compat-wireless: add iwlwifi RCU compat
From: Johannes Berg @ 2011-10-18 8:07 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: Hauke Mehrtens, linux-wireless
From: Johannes Berg <johannes.berg@intel.com>
We need to patch the new kfree_rcu() reference in
iwlwifi out and add rcu_barrier() to make it safe.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
Obviously the patch needing this isn't upstream yet, but I wanted to
give you this patch for when it comes upstream. If you prefer we hold
the compat patch and send it together with the kernel patch let me know
we can try to do that.
diff --git a/patches/41-no-kfree-rcu.patch b/patches/41-no-kfree-rcu.patch
index c18b50d..37c5c1b 100644
--- a/patches/41-no-kfree-rcu.patch
+++ b/patches/41-no-kfree-rcu.patch
@@ -81,3 +81,42 @@
static int ieee80211_compatible_rates(const u8 *supp_rates, int supp_rates_len,
struct ieee80211_supported_band *sband,
+--- a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c 2011-10-17 18:29:19.000000000 +0200
++++ b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c 2011-10-18 10:00:27.000000000 +0200
+@@ -1032,6 +1032,14 @@ static int iwlagn_rx_reply_rx(struct iwl
+ return 0;
+ }
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40))
++static void kfree_noa_data(struct rcu_head *head)
++{
++ void *data = container_of(head, struct iwl_wipan_noa_data, rcu_head);
++ kfree(data);
++}
++#endif
++
+ static int iwlagn_rx_noa_notification(struct iwl_priv *priv,
+ struct iwl_rx_mem_buffer *rxb,
+ struct iwl_device_cmd *cmd)
+@@ -1071,7 +1079,11 @@ static int iwlagn_rx_noa_notification(st
+ rcu_assign_pointer(priv->noa_data, new_data);
+
+ if (old_data)
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40))
++ call_rcu(&old_data->rcu_head, kfree_noa_data);
++#else
+ kfree_rcu(old_data, rcu_head);
++#endif
+
+ return 0;
+ }
+--- a/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-10-17 18:29:19.000000000 +0200
++++ b/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-10-18 10:00:44.000000000 +0200
+@@ -3460,6 +3460,7 @@ static void __exit iwl_exit(void)
+ {
+ iwl_pci_unregister_driver();
+ iwlagn_rate_control_unregister();
++ rcu_barrier();
+ }
+
+ module_exit(iwl_exit);
^ permalink raw reply related
* Re: [patch] rndis_wlan: add range check in del_key()
From: Johannes Berg @ 2011-10-18 7:33 UTC (permalink / raw)
To: Dan Carpenter
Cc: Jussi Kivilinna, John W. Linville, linux-wireless,
kernel-janitors
In-Reply-To: <20111018072201.GC25814@longonot.mountain>
On Tue, 2011-10-18 at 10:22 +0300, Dan Carpenter wrote:
> On Tue, Oct 18, 2011 at 08:54:47AM +0200, Johannes Berg wrote:
> > On Tue, 2011-10-18 at 09:47 +0300, Dan Carpenter wrote:
> > > Wifi drivers can have up to 6 keys but the rndis_wlan only has 4 so
> > > it needs to have its own checks to make sure we don't go out of
> > > bounds. The add_key() function already checks but I added some
> > > checks to del_key() and set_default_key().
> >
> > Semantically, that shouldn't be possible unless it advertises support
> > for WLAN_CIPHER_SUITE_AES_CMAC. Is there a bug in those checks?
> >
>
> You know I'm a newbie at this networking... I obviously had no idea
> about WLAN_CIPHER_SUITE_AES_CMAC until you mentioned it. I just
> looked at the other implementations of del_key() etc and they checked
> it. Monkey see, monkey do.
>
> My concern when I wrote this patch was places like __cfg80211_clear_ibss()
> which just do:
>
> for (i = 0; i < 6; i++)
> rdev->ops->del_key(wdev->wiphy, dev, i, false, NULL);
>
> That's what triggers the Smatch warning as well. But as I said, I'm
> quite a newbie at this code.
Ah ok, I didn't know they didn't check. That's reasonable, thanks!
I was just thinking that we wouldn't have keys 4/5 w/o CMAC to start
with, but it makes some sense that the code would just try to clear all
keys.
johannes
^ permalink raw reply
* Re: [patch] rndis_wlan: add range check in del_key()
From: Dan Carpenter @ 2011-10-18 7:22 UTC (permalink / raw)
To: Johannes Berg
Cc: Jussi Kivilinna, John W. Linville, linux-wireless,
kernel-janitors
In-Reply-To: <1318920887.3958.0.camel@jlt3.sipsolutions.net>
On Tue, Oct 18, 2011 at 08:54:47AM +0200, Johannes Berg wrote:
> On Tue, 2011-10-18 at 09:47 +0300, Dan Carpenter wrote:
> > Wifi drivers can have up to 6 keys but the rndis_wlan only has 4 so
> > it needs to have its own checks to make sure we don't go out of
> > bounds. The add_key() function already checks but I added some
> > checks to del_key() and set_default_key().
>
> Semantically, that shouldn't be possible unless it advertises support
> for WLAN_CIPHER_SUITE_AES_CMAC. Is there a bug in those checks?
>
You know I'm a newbie at this networking... I obviously had no idea
about WLAN_CIPHER_SUITE_AES_CMAC until you mentioned it. I just
looked at the other implementations of del_key() etc and they checked
it. Monkey see, monkey do.
My concern when I wrote this patch was places like __cfg80211_clear_ibss()
which just do:
for (i = 0; i < 6; i++)
rdev->ops->del_key(wdev->wiphy, dev, i, false, NULL);
That's what triggers the Smatch warning as well. But as I said, I'm
quite a newbie at this code.
regards,
dan carpenter
^ permalink raw reply
* [PATCH 2/2] wl12xx: Check buffer bound when processing nvs data
From: Pontus Fuchs @ 2011-10-18 7:23 UTC (permalink / raw)
To: linux-wireless; +Cc: Pontus Fuchs, stable
In-Reply-To: <1318922622-8356-1-git-send-email-pontus.fuchs@gmail.com>
An nvs with malformed contents could cause the processing of the
calibration data to read beyond the end of the buffer. Prevent this
from happening by adding bound checking.
Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
Cc: stable@kernel.org
Reviewed-by: Luciano Coelho <coelho@ti.com>
---
drivers/net/wireless/wl12xx/boot.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/wl12xx/boot.c b/drivers/net/wireless/wl12xx/boot.c
index 4ce634b..c9c8b69 100644
--- a/drivers/net/wireless/wl12xx/boot.c
+++ b/drivers/net/wireless/wl12xx/boot.c
@@ -347,6 +347,9 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
nvs_ptr += 3;
for (i = 0; i < burst_len; i++) {
+ if (nvs_ptr + 3 >= (u8 *) wl->nvs + nvs_len)
+ goto out_badnvs;
+
val = (nvs_ptr[0] | (nvs_ptr[1] << 8)
| (nvs_ptr[2] << 16) | (nvs_ptr[3] << 24));
@@ -358,6 +361,9 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
nvs_ptr += 4;
dest_addr += 4;
}
+
+ if (nvs_ptr >= (u8 *) wl->nvs + nvs_len)
+ goto out_badnvs;
}
/*
@@ -369,6 +375,10 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
*/
nvs_ptr = (u8 *)wl->nvs +
ALIGN(nvs_ptr - (u8 *)wl->nvs + 7, 4);
+
+ if (nvs_ptr >= (u8 *) wl->nvs + nvs_len)
+ goto out_badnvs;
+
nvs_len -= nvs_ptr - (u8 *)wl->nvs;
/* Now we must set the partition correctly */
@@ -384,6 +394,10 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
kfree(nvs_aligned);
return 0;
+
+out_badnvs:
+ wl1271_error("nvs data is malformed");
+ return -EILSEQ;
}
static void wl1271_boot_enable_interrupts(struct wl1271 *wl)
--
1.7.4.1
^ permalink raw reply related
* [PATCH 1/2] wl12xx: Validate FEM index from ini file and FW
From: Pontus Fuchs @ 2011-10-18 7:23 UTC (permalink / raw)
To: linux-wireless; +Cc: Pontus Fuchs, stable
In-Reply-To: <1318922622-8356-1-git-send-email-pontus.fuchs@gmail.com>
Check for out of bound FEM index to prevent reading beyond ini
memory end.
Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
Cc: stable@kernel.org
Reviewed-by: Luciano Coelho <coelho@ti.com>
---
drivers/net/wireless/wl12xx/cmd.c | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/wl12xx/cmd.c b/drivers/net/wireless/wl12xx/cmd.c
index 2413c43..38a21a3 100644
--- a/drivers/net/wireless/wl12xx/cmd.c
+++ b/drivers/net/wireless/wl12xx/cmd.c
@@ -121,6 +121,11 @@ int wl1271_cmd_general_parms(struct wl1271 *wl)
if (!wl->nvs)
return -ENODEV;
+ if (gp->tx_bip_fem_manufacturer >= WL1271_INI_FEM_MODULE_COUNT) {
+ wl1271_warning("FEM index from INI out of bounds");
+ return -EINVAL;
+ }
+
gen_parms = kzalloc(sizeof(*gen_parms), GFP_KERNEL);
if (!gen_parms)
return -ENOMEM;
@@ -144,6 +149,12 @@ int wl1271_cmd_general_parms(struct wl1271 *wl)
gp->tx_bip_fem_manufacturer =
gen_parms->general_params.tx_bip_fem_manufacturer;
+ if (gp->tx_bip_fem_manufacturer >= WL1271_INI_FEM_MODULE_COUNT) {
+ wl1271_warning("FEM index from FW out of bounds");
+ ret = -EINVAL;
+ goto out;
+ }
+
wl1271_debug(DEBUG_CMD, "FEM autodetect: %s, manufacturer: %d\n",
answer ? "auto" : "manual", gp->tx_bip_fem_manufacturer);
@@ -163,6 +174,11 @@ int wl128x_cmd_general_parms(struct wl1271 *wl)
if (!wl->nvs)
return -ENODEV;
+ if (gp->tx_bip_fem_manufacturer >= WL1271_INI_FEM_MODULE_COUNT) {
+ wl1271_warning("FEM index from ini out of bounds");
+ return -EINVAL;
+ }
+
gen_parms = kzalloc(sizeof(*gen_parms), GFP_KERNEL);
if (!gen_parms)
return -ENOMEM;
@@ -187,6 +203,12 @@ int wl128x_cmd_general_parms(struct wl1271 *wl)
gp->tx_bip_fem_manufacturer =
gen_parms->general_params.tx_bip_fem_manufacturer;
+ if (gp->tx_bip_fem_manufacturer >= WL1271_INI_FEM_MODULE_COUNT) {
+ wl1271_warning("FEM index from FW out of bounds");
+ ret = -EINVAL;
+ goto out;
+ }
+
wl1271_debug(DEBUG_CMD, "FEM autodetect: %s, manufacturer: %d\n",
answer ? "auto" : "manual", gp->tx_bip_fem_manufacturer);
--
1.7.4.1
^ permalink raw reply related
* [PATCH 0/2] wl12xx: Fix problems in nvs file parsing
From: Pontus Fuchs @ 2011-10-18 7:23 UTC (permalink / raw)
To: linux-wireless; +Cc: Pontus Fuchs
A crafted nvs file could trick the driver into reading and writing
beyond end of buffers.
Pontus Fuchs (2):
wl12xx: Validate FEM index from ini file and FW
wl12xx: Check buffer bound when processing nvs data
drivers/net/wireless/wl12xx/boot.c | 14 ++++++++++++++
drivers/net/wireless/wl12xx/cmd.c | 22 ++++++++++++++++++++++
2 files changed, 36 insertions(+), 0 deletions(-)
--
1.7.4.1
^ permalink raw reply
* Re: [patch] rndis_wlan: add range check in del_key()
From: Jussi Kivilinna @ 2011-10-18 7:07 UTC (permalink / raw)
To: Dan Carpenter; +Cc: John W. Linville, linux-wireless, kernel-janitors
In-Reply-To: <20111018064729.GQ27732@elgon.mountain>
Quoting Dan Carpenter <dan.carpenter@oracle.com>:
> Wifi drivers can have up to 6 keys but the rndis_wlan only has 4 so
> it needs to have its own checks to make sure we don't go out of
> bounds. The add_key() function already checks but I added some
> checks to del_key() and set_default_key().
Looks ok, thanks.
Acked-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/net/wireless/rndis_wlan.c
> b/drivers/net/wireless/rndis_wlan.c
> index 0c13840..da78369 100644
> --- a/drivers/net/wireless/rndis_wlan.c
> +++ b/drivers/net/wireless/rndis_wlan.c
> @@ -414,6 +414,7 @@ struct ndis_80211_pmkid {
> #define RNDIS_WLAN_ALG_TKIP (1<<1)
> #define RNDIS_WLAN_ALG_CCMP (1<<2)
>
> +#define RNDIS_WLAN_NUM_KEYS 4
> #define RNDIS_WLAN_KEY_MGMT_NONE 0
> #define RNDIS_WLAN_KEY_MGMT_802_1X (1<<0)
> #define RNDIS_WLAN_KEY_MGMT_PSK (1<<1)
> @@ -516,7 +517,7 @@ struct rndis_wlan_private {
>
> /* encryption stuff */
> int encr_tx_key_index;
> - struct rndis_wlan_encr_key encr_keys[4];
> + struct rndis_wlan_encr_key encr_keys[RNDIS_WLAN_NUM_KEYS];
> int wpa_version;
>
> u8 command_buffer[COMMAND_BUFFER_SIZE];
> @@ -1535,6 +1536,9 @@ static int remove_key(struct usbnet *usbdev,
> int index, const u8 *bssid)
> bool is_wpa;
> int ret;
>
> + if (index >= RNDIS_WLAN_NUM_KEYS)
> + return -ENOENT;
> +
> if (priv->encr_keys[index].len == 0)
> return 0;
>
> @@ -2451,6 +2455,9 @@ static int rndis_set_default_key(struct wiphy
> *wiphy, struct net_device *netdev,
>
> netdev_dbg(usbdev->net, "%s(%i)\n", __func__, key_index);
>
> + if (key_index >= RNDIS_WLAN_NUM_KEYS)
> + return -ENOENT;
> +
> priv->encr_tx_key_index = key_index;
>
> if (is_wpa_key(priv, key_index))
>
>
^ permalink raw reply
* Re: ath9k: irq storm after suspend/resume
From: Adrian Chadd @ 2011-10-18 7:05 UTC (permalink / raw)
To: Clemens Buchacher; +Cc: Mohammed Shafi, linux-wireless
In-Reply-To: <20111018064459.GA1442@ecki>
Hm, which version of the AR9285 is it, exactly?
Would you just do a quick check (or code hack) and see if it matches
the AR_SREV_9285SE_20 (or similar) macro?
(I see a WAR in the reference code for that particular model AR9285,
that isn't in ath9k.)
I'm honestly still not convinced that it's (soley) the AR9285. You
_could_ do something naughty like disabling all interrupts and then
powering off the NIC (but not detaching it from the bus glue, like
unloading the module does.)
Good luck,
Adrian
^ permalink raw reply
* Re: [patch] rndis_wlan: add range check in del_key()
From: Johannes Berg @ 2011-10-18 6:54 UTC (permalink / raw)
To: Dan Carpenter
Cc: Jussi Kivilinna, John W. Linville, linux-wireless,
kernel-janitors
In-Reply-To: <20111018064729.GQ27732@elgon.mountain>
On Tue, 2011-10-18 at 09:47 +0300, Dan Carpenter wrote:
> Wifi drivers can have up to 6 keys but the rndis_wlan only has 4 so
> it needs to have its own checks to make sure we don't go out of
> bounds. The add_key() function already checks but I added some
> checks to del_key() and set_default_key().
Semantically, that shouldn't be possible unless it advertises support
for WLAN_CIPHER_SUITE_AES_CMAC. Is there a bug in those checks?
The checks don't hurt, obviously.
johannes
^ permalink raw reply
* [patch] iwmc3200wifi: add some more range checks
From: Dan Carpenter @ 2011-10-18 6:50 UTC (permalink / raw)
To: Samuel Ortiz
Cc: Intel Linux Wireless, John W. Linville, linux-wireless,
kernel-janitors
In-Reply-To: <20111012082656.GA13878@sortiz-mobl>
My previous patch added a check to get_key() but missed a couple
other places which need range checks.
The problem here is that wifi drivers have different numbers of keys.
The lower levels assume that they can have up to 4 default keys and
2 management keys but this driver only has the default keys so we
could go past the end of the ->keys[] array.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/wireless/iwmc3200wifi/cfg80211.c b/drivers/net/wireless/iwmc3200wifi/cfg80211.c
index ed57e44..e20a38d 100644
--- a/drivers/net/wireless/iwmc3200wifi/cfg80211.c
+++ b/drivers/net/wireless/iwmc3200wifi/cfg80211.c
@@ -165,11 +165,15 @@ static int iwm_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
struct key_params *params)
{
struct iwm_priv *iwm = ndev_to_iwm(ndev);
- struct iwm_key *key = &iwm->keys[key_index];
+ struct iwm_key *key;
int ret;
IWM_DBG_WEXT(iwm, DBG, "Adding key for %pM\n", mac_addr);
+ if (key_index >= IWM_NUM_KEYS)
+ return -ENOENT;
+
+ key = &iwm->keys[key_index];
memset(key, 0, sizeof(struct iwm_key));
ret = iwm_key_init(key, key_index, mac_addr, params);
if (ret < 0) {
@@ -210,8 +214,12 @@ static int iwm_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
u8 key_index, bool pairwise, const u8 *mac_addr)
{
struct iwm_priv *iwm = ndev_to_iwm(ndev);
- struct iwm_key *key = &iwm->keys[key_index];
+ struct iwm_key *key;
+ if (key_index >= IWM_NUM_KEYS)
+ return -ENOENT;
+
+ key = &iwm->keys[key_index];
if (!iwm->keys[key_index].key_len) {
IWM_DBG_WEXT(iwm, DBG, "Key %d not used\n", key_index);
return 0;
@@ -232,6 +240,9 @@ static int iwm_cfg80211_set_default_key(struct wiphy *wiphy,
IWM_DBG_WEXT(iwm, DBG, "Default key index is: %d\n", key_index);
+ if (key_index >= IWM_NUM_KEYS)
+ return -ENOENT;
+
if (!iwm->keys[key_index].key_len) {
IWM_ERR(iwm, "Key %d not used\n", key_index);
return -EINVAL;
^ permalink raw reply related
* [patch] rndis_wlan: add range check in del_key()
From: Dan Carpenter @ 2011-10-18 6:47 UTC (permalink / raw)
To: Jussi Kivilinna; +Cc: John W. Linville, linux-wireless, kernel-janitors
Wifi drivers can have up to 6 keys but the rndis_wlan only has 4 so
it needs to have its own checks to make sure we don't go out of
bounds. The add_key() function already checks but I added some
checks to del_key() and set_default_key().
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 0c13840..da78369 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -414,6 +414,7 @@ struct ndis_80211_pmkid {
#define RNDIS_WLAN_ALG_TKIP (1<<1)
#define RNDIS_WLAN_ALG_CCMP (1<<2)
+#define RNDIS_WLAN_NUM_KEYS 4
#define RNDIS_WLAN_KEY_MGMT_NONE 0
#define RNDIS_WLAN_KEY_MGMT_802_1X (1<<0)
#define RNDIS_WLAN_KEY_MGMT_PSK (1<<1)
@@ -516,7 +517,7 @@ struct rndis_wlan_private {
/* encryption stuff */
int encr_tx_key_index;
- struct rndis_wlan_encr_key encr_keys[4];
+ struct rndis_wlan_encr_key encr_keys[RNDIS_WLAN_NUM_KEYS];
int wpa_version;
u8 command_buffer[COMMAND_BUFFER_SIZE];
@@ -1535,6 +1536,9 @@ static int remove_key(struct usbnet *usbdev, int index, const u8 *bssid)
bool is_wpa;
int ret;
+ if (index >= RNDIS_WLAN_NUM_KEYS)
+ return -ENOENT;
+
if (priv->encr_keys[index].len == 0)
return 0;
@@ -2451,6 +2455,9 @@ static int rndis_set_default_key(struct wiphy *wiphy, struct net_device *netdev,
netdev_dbg(usbdev->net, "%s(%i)\n", __func__, key_index);
+ if (key_index >= RNDIS_WLAN_NUM_KEYS)
+ return -ENOENT;
+
priv->encr_tx_key_index = key_index;
if (is_wpa_key(priv, key_index))
^ permalink raw reply related
* Re: ath9k: irq storm after suspend/resume
From: Clemens Buchacher @ 2011-10-18 6:44 UTC (permalink / raw)
To: Adrian Chadd; +Cc: Mohammed Shafi, linux-wireless
In-Reply-To: <CAJ-VmokQBcXyDByWgMfGRFvW_z_9YU4oPUrXJpfPY9J4riEuBQ@mail.gmail.com>
On Sat, Oct 15, 2011 at 06:01:38PM +0800, Adrian Chadd wrote:
>
> Are you able to completely and utterly disable any/all power saving on
> ath9k, including APSM if you have it enabled?
Unfortunately, no change with the following options disabled:
PCIEAER y -> n
PCIEASPM y -> n
PM_RUNTIME y -> n
Anything else I should disable?
Clemens
^ permalink raw reply
* Re: Looking for driver; Intel Pro 2915ABG wireless card
From: Julian Calaby @ 2011-10-18 6:23 UTC (permalink / raw)
To: J C; +Cc: linux-wireless
In-Reply-To: <1318887043.75699.YahooMailClassic@web39406.mail.mud.yahoo.com>
Hi J C,
On Tue, Oct 18, 2011 at 08:30, J C <excelsior415@yahoo.com> wrote:
> Hello, I'm looking to install the most appropriate wireless driver in my Ubuntu 10.04. It's likely the file is "w29n51.inf" but I cannot find it online. The Windows Drivers software is installed on this machine, but if there is a Linux file or direct placement of this driver I'd be also interested.
You're asking on the wrong mailing list. This mailing list is about
the development of wireless drivers for Linux, not the usage of
Windows drivers through some compatibility layer.
That said, this card is supported by the ipw2200 driver, which has
been part of the Linux kernel for years, providing you have
appropriate firmware.
The driver is usually loaded automatically when the card is detected,
and your Linux distribution should have a package containing this
firmware, or it can be downloaded at
http://ipw2200.sourceforge.net/
Thanks,
--
Julian Calaby
Email: julian.calaby@gmail.com
Profile: http://www.google.com/profiles/julian.calaby/
.Plan: http://sites.google.com/site/juliancalaby/
^ permalink raw reply
* [patch 4/4] mwifiex: return -ENOMEM if kzalloc() fails
From: Dan Carpenter @ 2011-10-18 6:19 UTC (permalink / raw)
To: Bing Zhao; +Cc: John W. Linville, linux-wireless, kernel-janitors
Sorry, I've decided to hold this one back. It was written in a lazy
way and only fixed the return codes that Smatch complained about.
I'll redo it and send it later.
regards,
dan carpenter
^ permalink raw reply
* [patch 3/4] mwifiex: prevent corruption instead of just warning
From: Dan Carpenter @ 2011-10-18 6:15 UTC (permalink / raw)
To: Bing Zhao; +Cc: John W. Linville, linux-wireless, kernel-janitors
We may as well put a return here instead of just printing a warning
message and then corrupting memory. The caller doesn't check the
return code.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c
index d12d440..40b154d 100644
--- a/drivers/net/wireless/mwifiex/pcie.c
+++ b/drivers/net/wireless/mwifiex/pcie.c
@@ -1228,9 +1228,11 @@ static int mwifiex_pcie_event_complete(struct mwifiex_adapter *adapter,
if (!skb)
return 0;
- if (rdptr >= MWIFIEX_MAX_EVT_BD)
+ if (rdptr >= MWIFIEX_MAX_EVT_BD) {
dev_err(adapter->dev, "event_complete: Invalid rdptr 0x%x\n",
rdptr);
+ return -EINVAL;
+ }
/* Read the event ring write pointer set by firmware */
if (mwifiex_read_reg(adapter, REG_EVTBD_WRPTR, &wrptr)) {
^ permalink raw reply related
* [patch 2/4] mwifiex: remove an unneeded NULL check
From: Dan Carpenter @ 2011-10-18 6:14 UTC (permalink / raw)
To: Bing Zhao; +Cc: John W. Linville, linux-wireless, kernel-janitors
We dereference adapter in the error handling code so this needed to
be fixed. This function is always called like:
adapter->if_ops.host_to_card(adapter, ...);
so adapter can never be NULL and I've removed the NULL check.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c
index 4466976..d12d440 100644
--- a/drivers/net/wireless/mwifiex/pcie.c
+++ b/drivers/net/wireless/mwifiex/pcie.c
@@ -1671,9 +1671,8 @@ static int mwifiex_pcie_host_to_card(struct mwifiex_adapter *adapter, u8 type,
struct sk_buff *skb,
struct mwifiex_tx_param *tx_param)
{
- if (!adapter || !skb) {
- dev_err(adapter->dev, "Invalid parameter in %s <%p, %p>\n",
- __func__, adapter, skb);
+ if (!skb) {
+ dev_err(adapter->dev, "Passed NULL skb to %s\n", __func__);
return -1;
}
^ permalink raw reply related
* [patch 1/4] mwifiex: remove unneeded kfree(NULL);
From: Dan Carpenter @ 2011-10-18 6:13 UTC (permalink / raw)
To: Bing Zhao; +Cc: John W. Linville, linux-wireless, kernel-janitors
The previous if statement means this that pointer is NULL so there
is no need to free it.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c
index d34acf0..4466976 100644
--- a/drivers/net/wireless/mwifiex/pcie.c
+++ b/drivers/net/wireless/mwifiex/pcie.c
@@ -386,7 +386,6 @@ static int mwifiex_pcie_create_txbd_ring(struct mwifiex_adapter *adapter)
card->txbd_ring_vbase = kzalloc(card->txbd_ring_size, GFP_KERNEL);
if (!card->txbd_ring_vbase) {
dev_err(adapter->dev, "Unable to allocate buffer for txbd ring.\n");
- kfree(card->txbd_ring_vbase);
return -1;
}
card->txbd_ring_pbase = virt_to_phys(card->txbd_ring_vbase);
^ permalink raw reply related
* Re: Alfa AWUS036NHR with RTL8188RU chipset
From: Larry Finger @ 2011-10-18 3:23 UTC (permalink / raw)
To: v4mp; +Cc: linux-wireless
In-Reply-To: <loom.20111017T190430-717@post.gmane.org>
On 10/17/2011 12:09 PM, v4mp wrote:
>
>
> ok, i've checked the md5 checksum of the firmware and is ok,
> i give you dmesg at pastebin.com
>
> it has 2 parts: in the second part i can't see what is in previous of the error
>
> the link is: http://pastebin.com/7tfcBfbD
Please try blacklisting xhci-hcd by adding a line containing
"blacklist xhci-hcd" to the end of /etc/modprobe.d/50-blacklist.conf.
Thanks,
Larry
^ permalink raw reply
* Re: pull request: wireless-next 2011-10-17
From: David Miller @ 2011-10-17 22:49 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, netdev
In-Reply-To: <20111017202332.GE8948@tuxdriver.com>
From: "John W. Linville" <linville@tuxdriver.com>
Date: Mon, 17 Oct 2011 16:23:33 -0400
> I neglected to identify the HEAD and sign...
>
> commit 41ebe9cde738a972d05c7282e09f5ed54cff0e8d
Pulled, thanks John.
^ permalink raw reply
* Looking for driver; Intel Pro 2915ABG wireless card
From: J C @ 2011-10-17 21:30 UTC (permalink / raw)
To: linux-wireless
Hello, I'm looking to install the most appropriate wireless driver in my Ubuntu 10.04. It's likely the file is "w29n51.inf" but I cannot find it online. The Windows Drivers software is installed on this machine, but if there is a Linux file or direct placement of this driver I'd be also interested.
Thank you for your time,
Jeff
San Francisco
^ permalink raw reply
* Re: Is there anybody doing DSRC/802.11p Driver Development?
From: Nick Kossifidis @ 2011-10-17 21:25 UTC (permalink / raw)
To: Song Gao; +Cc: linux-wireless
In-Reply-To: <693E2F29EE4741F08C9671DA99168538@gmail.com>
2011/10/5 Song Gao <song.gao.beta@gmail.com>:
> Hi guys,
>
> I am in a group doing research in vehicular wireless networks. And I have a desire to contribute to this community. The group I am in has done some experiments based on ath9k, and we are interested in applying DSRC protocol. However, it seems that all the available drivers for DSRC are from manufactures, and they are not open source.
>
> I am wondering if there is anybody in this group implementing 802.11p driver? If not, do you think it is worthwhile to add 802.11p driver in to linux wireless drivers? If there's anyone doing this or interested in this, I would like to participate.
>
> Thanks!
>
> Kind regards,
> Song Gao
Check this out...
http://www.youtube.com/watch?v=aQ-xGzTzHxc
Unfortunately they haven't published any code yet.
--
GPG ID: 0xEE878588
As you read this post global entropy rises. Have Fun ;-)
Nick
^ permalink raw reply
* pull request: bluetooth-next 2011-10-17
From: Gustavo Padovan @ 2011-10-17 20:39 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, linux-bluetooth, linux-kernel
Hi John,
As the 3.1 release is taking too long to happen I decided to send you another
pull request. If you think it's too late just ignore it, or queue it up for
3.3 merge window. Do what is better to you. ;)
The bigger changes here are from Andrei, he did many changes in L2CAP looking
forward for the Bluetooth 3.0 High Speed implementation. It is the biggest
change on High Speed until now.
There are some fixes on the hidp module by David Hermann, Peter Hurley and me.
The rest are just clean ups and small fixes.
Thanks.
Gustavo
The following changes since commit fd38f734cb8200529e281338514945fcbff2364b:
igbvf: convert to ndo_fix_features (2011-10-16 13:18:47 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-next.git master
Andrei Emeltchenko (27):
Bluetooth: EFS: l2cap extended feature mask update
Bluetooth: EFS: add enable_hs kernel param
Bluetooth: convert flushable variable to flag in l2cap chan
Bluetooth: convert force_reliable variable to flag in l2cap chan
Bluetooth: convert force_active variable to flag in l2cap chan
Bluetooth: convert role_switch variable to flag in l2cap chan
Bluetooth: clean up spaces in L2CAP header
Bluetooth: EWS: extended window size option support
Bluetooth: EWS: adds ext control field bit mask
Bluetooth: EWS: rewrite handling Supervisory (S) bits
Bluetooth: EWS: rewrite handling SAR bits
Bluetooth: EWS: rewrite reqseq calculation
Bluetooth: EWS: rewrite L2CAP ERTM txseq calculation
Bluetooth: EWS: rewrite check frame type function
Bluetooth: EWS: rewrite handling FINAL (F) bit
Bluetooth: EWS: rewrite handling POLL (P) bit
Bluetooth: EWS: recalculate L2CAP header size
Bluetooth: EWS: define L2CAP header sizes
Bluetooth: EFS: definitions and headers
Bluetooth: EFS: assign default values in chan add
Bluetooth: EFS: add efs option in L2CAP conf req
Bluetooth: AMP: read local amp info HCI command
Bluetooth: EWS: handling different Control fields
Bluetooth: EWS: support extended seq numbers
Bluetooth: EWS: remove magic numbers in l2cap
Bluetooth: EWS: fix max_pdu calculation
Bluetooth: EFS: parse L2CAP config request
David Herrmann (4):
Bluetooth: hidp: Stop I/O on shutdown
Bluetooth: Fix hci core device initialization
Bluetooth: Rename sysfs un/register to add/del
Bluetooth: Forward errors from hci_register_dev
Gustavo F. Padovan (14):
Bluetooth: use list_for_each_entry() in hidp
Bluetooth: prioritize the interrupt channel in hidp
Bluetooth: Trasmit interrupt channel messages first
Bluetooth: Fix input device registration
Bluetooth: Remove wrong error check
Bluetooth: Uses test_and_clear_bit() when possible
Bluetooth: Delay session allocation in hidp
Bluetooth: Rename hidp_find_connection()
Bluetooth: Fix permission of enable_le param
Bluetooth: return proper error if sock_queue_rcv_skb() fails
Bluetooth: Add missing cmd_status() in mgmt
Bluetooth: Use list_for_each_entry() in mgmt
Bluetooth: Fix mgmt interaction with userspace
Bluetooth: Fix missing cmd_status in mgmt
Paul Bolle (2):
Bluetooth: btusb: also be quiet when suspending
Bluetooth: btusb: hide more usb_submit_urb errors
Peter Hurley (1):
Bluetooth: hidp: safely acquire hci connection
drivers/bluetooth/btusb.c | 13 +-
include/net/bluetooth/bluetooth.h | 2 +-
include/net/bluetooth/hci.h | 15 +
include/net/bluetooth/hci_core.h | 16 +-
include/net/bluetooth/l2cap.h | 342 ++++++++++++++++++----
include/net/bluetooth/mgmt.h | 2 -
net/bluetooth/hci_core.c | 21 +-
net/bluetooth/hci_event.c | 30 ++-
net/bluetooth/hci_sysfs.c | 22 +-
net/bluetooth/hidp/core.c | 150 +++++-----
net/bluetooth/l2cap_core.c | 594 ++++++++++++++++++++++++-------------
net/bluetooth/l2cap_sock.c | 51 ++--
net/bluetooth/mgmt.c | 26 +-
13 files changed, 905 insertions(+), 379 deletions(-)
^ permalink raw reply
* RE: brcmfmac driver implementation: Questions
From: Arend Van Spriel @ 2011-10-17 20:37 UTC (permalink / raw)
To: Andrés García Saavedra, linux-wireless@vger.kernel.org
In-Reply-To: <CADxqDgHYu51DQXOLT3eA=6PckSmXc42BFUF=Z7qZ_Cs45T1GjQ@mail.gmail.com>
> Sent: maandag 17 oktober 2011 19:59
>
> Hi all,
>
> I would like to test some custom powersaving algorithms for 802.11abg
> WLANs on some current android smartphone (e.g., nexus one). My
> question is regarding the brcmfmac driver implementation for BCM4329
> chipsets:
>
> * The current open source implementation of the driver, brcmfmac, does
> ONLY support 11n PHY?
Yes. It supports the bcm4329 device which comes with a 11n phy, which
can connect to a non-11n AP without problems.
> * Does this driver interfaces the mac80211 operations or "acts as" a
> mac80211 driver itself talking to cfg80211/nl80211?
The brcmfmac does not require mac80211, but interfaces with cfg80211.
> * Does the chipset/current implementation support sleep/awake
> triggers? (or at least quiet elements?)
Nope. All powersaving the device does is done on the device as it
knows best what parts of the device can be put to sleep. Who or what
is going to fire those triggers?
> Thanks for your answer,
> Andrés
Hope that helps.
Gr. AvS
^ permalink raw reply
* Re: pull request: wireless-next 2011-10-17
From: John W. Linville @ 2011-10-17 20:23 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev
In-Reply-To: <20111017191945.GD8948@tuxdriver.com>
[-- Attachment #1: Type: text/plain, Size: 30357 bytes --]
I neglected to identify the HEAD and sign...
commit 41ebe9cde738a972d05c7282e09f5ed54cff0e8d
Thanks,
John
On Mon, Oct 17, 2011 at 03:19:46PM -0400, John W. Linville wrote:
> Dave,
>
> Here is one more (last?) wireless pull request intended for 3.2.
>
> The most notable bits of this request are the long awaited brcm80211
> drivers. Along with those come the usual strong showings from the
> iwlwifi and ath9k teams and some mac80211 updates from Johannes
> and others. There are also updates for mwifiex, rtlwifi, wl12xx,
> and b43, as well as a few other random bits.
>
> Please let me know if there are problems!
>
> Thanks,
>
> JOhn
>
> ---
>
> The following changes since commit fd38f734cb8200529e281338514945fcbff2364b:
>
> igbvf: convert to ndo_fix_features (2011-10-16 13:18:47 -0700)
>
> are available in the git repository at:
> git://git.infradead.org/users/linville/wireless-next.git for-davem
>
> Alwin Beukers (9):
> brcm80211: cleanup function prototypes
> brcm80211: removed unused functions
> brcm80211: moved power conversion functions
> brcm80211: moved function brcmu_chipname
> brcm80211: moved function brcmu_parse_tlvs
> brcm80211: moved function brcmu_chspec_malformed
> brcm80211: moved function brcmu_mkiovar
> brcm80211: moved function brcmu_format_flags
> brcm80211: removed file wifi.c
>
> Amitkumar Karwar (3):
> mwifiex: add support for Marvell pcie8766 chipset
> mwifiex: use separate wait condition for each command node
> mwifiex: fix make namespacecheck warnings
>
> Arend van Spriel (11):
> net: wireless: add brcm80211 drivers
> brcm80211: remove sparse warning in fullmac debug function
> brcm80211: fix sparse endianess error in mac80211_if.c
> brcm80211: add endian annotation to packet filter structures
> brcm80211: rename variable in _brcmf_set_multicast_list()
> brcm80211: fix annotations in TOE configuration functions
> brcm80211: use endian annotations in scan related function
> brcm80211: use endian annotation for pmk related structure
> brcm80211: use endian annotations for assoc ie length request
> brcm80211: use endian annotation for roaming related parameters
> brcm80211: use endian annotation for scan time configuration
>
> Chaoming Li (4):
> rtlwifi: Update to new Realtek version - Part I
> rtlwifi: rtl8192ce: Add new chip revisions
> rtlwifi: rtl8192se: Updates from latest Realtek driver version - Part II
> rtlwifi: rtl8192de: Updates from latest Reaktek driver - Part III
>
> Dan Carpenter (3):
> ath5k: remove some unneeded error handling code
> ath9k: remove some bogus error handling code
> iwmc3200wifi: add a range check to iwm_cfg80211_get_key()
>
> Daniel Drake (1):
> libertas: fix changing interface type when interface is down
>
> Don Fry (1):
> iwlagn: eliminate bus pointer from iwl_priv structure
>
> Eliad Peller (2):
> wl12xx: configure rate policy for p2p operations
> wl12xx: disable AP-mode-specific quirks
>
> Emmanuel Grumbach (7):
> iwlagn: kill hw_params.max_stations
> iwlagn: fix a race in the unmapping of the TFDs
> iwlagn: warn only once if AGG state is wrong
> iwlagn: move iwl_beacon_time_mask_XXX near to usage
> iwlagn: move iwl_enable_rfkill_int and kill iwl-helpers.h
> iwlagn: remove uneeded include to iwl-dev.h
> iwlagn: add missing include to iwl-agn-rs.h
>
> Felix Fietkau (11):
> ath9k: indicate which queues are blocked when stopping tx fails
> ath9k: keep track of what's triggering hardware resets
> ath9k: improve PS filter clearing and retry counting for A-MPDU
> ath9k: fix retry counting / BAR handling during queue flush
> ath9k: disable unnecessary PHY error reporting
> ath9k_hw: make ath9k_hw_set_interrupts use ah->imask by default
> ath9k_hw: clean up tx power handling
> ath: remove ath_regulatory::current_rd_ext
> ath9k_hw: remove EEP_REG_1
> ath9k_hw: fix a regression in key miss handling
> ath9k: only send FCS-fail packets to mac80211 if requested
>
> Helmut Schaa (5):
> mac80211: Update injection documentation
> mac80211: Build TX radiotap header dynamically
> mac80211: Populate radiotap header with MCS info for TX frames
> nl80211: Add sta_flags to the station info
> mac80211: Provide station flags to cfg80211
>
> Javier Cardona (1):
> mac80211: Fix regression that allowed mpaths between non-peers.
>
> Johannes Berg (16):
> mac80211: pass no-CCK flag through to HW scan
> mac80211: fix offchannel TX cookie matching
> mac80211: optimise monitor xmit
> mac80211: remove tx_data ethertype
> mac80211: move fragment flag to info flag as dont-fragment
> mac80211: parse radiotap header earlier
> mac80211: dont adjust truesize
> mac80211: dont orphan TX skb
> iwlagn: update beacon smarter
> iwlagn: don't assign seqno to QoS Null frames
> iwlagn: send simple LQ command for WoWLAN
> iwlagn: stop interrupts when suspending
> iwlagn: remove 5000 hw header
> iwlagn: remove 6000 hw header
> mac80211: reformat TX unauthorised check
> mac80211: fix TID for null poll response
>
> John W. Linville (2):
> Merge branch 'for-linville' of git://github.com/lucacoelho/wl12xx
> Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem
>
> Larry Finger (2):
> rtlwifi: Change debug parameter to apply to individual drivers
> rtlwifi: Change PCI drivers to use the new PM framework
>
> Luciano Coelho (1):
> wl12xx: set max_sched_scan_ie_len correctly
>
> Rafał Miłecki (3):
> b43: trivial: do not report any link quality instead of invalid one
> Revert "b43: trivial: do not report any link quality instead of invalid one"
> b43: N-PHY: report signal to mac80211
>
> Rajkumar Manoharan (14):
> ath9k_hw: Fix ASPM L1 issue for AR9480
> ath9k_hw: Updated ar9003 initval table for AR9380
> ath9k_hw: Update AR9003 initval to improve phase noise
> ath9k_hw: Updated AR9003 tx gain table for 5GHz
> ath9k_hw: Improve fast channel change for AR9003 chips
> ath9k_hw: Add support to reuse TxIQ cal measurements
> ath9k_hw: Add support to reuse Carrier leak calibration
> ath9k_hw: Cleanup Tx calibrations for AR9003 chips
> ath9k_hw: Support fast channel change on 5GHz for AR9003 chips
> ath9k_hw: Update normal/min noise floor value for AR9480
> ath9k_hw: Add radio retention support for AR9480
> ath9k_hw: Do fast channel change based on reusable calibration results
> ath9k_hw: Rename AR9480 -> AR9462 initvals
> ath9k: Rename AR9480 into AR9462
>
> Roland Vossen (3):
> brcm80211: smac: removed redundant timer function parameters
> brcm80211: smac: decreased timer callback irq level
> brcm80211: fmac: fixed weird indentation
>
> Shahar Levi (1):
> wl12xx: Add support for HW channel switch
>
> Stanislaw Gruszka (1):
> iwlagn: fix priv->cfg->ht_params NULL pointer dereference
>
> Stephen Rothwell (2):
> net: wireless: brcm80211: replace ndo_set_multicast_list with ndo_set_rx_mode
> net: wireless: brcm80210: include module.h
>
> Wey-Yi Guy (20):
> iwlagn: separate init calib and rt calib
> iwlagn: add cmd queue pointer info when timeout
> iwlagn: add REPLY_ECHO host command
> iwlagn: add WARN if tx cmd complete come back late
> iwlagn: add "echo" test when command queue stuck
> iwlagn: check rf kill in queue stuck
> iwlagn: add "echo test" command to debugfs
> iwlagn: remove un-necessary step
> iwlagn: set rts retry limit
> iwlagn: add "_d" sku to 6005 series of devices
> iwlagn: Add "_d" sku to 105 series of devices
> iwlagn: do nothing when disable agg in wrong state
> iwlagn: use low retry limit for WoWLAN
> iwlwifi: update comments on how to enable debug flag
> iwlagn: more info on warning for shutdown agg queue
> iwlagn: don't stop rts/cts until last aggregation queue close
> iwlagn: add debug for mac80211 callback
> iwlagn: rename all the mac80211 callback functions
> iwlagn: merge station management functions
> iwlagn: rename iwl-rx.c to iwl-agn-rx.c
>
> Yogesh Ashok Powar (1):
> mwifiex: fix smatch errors
>
> Documentation/networking/mac80211-injection.txt | 4 +
> drivers/net/wireless/Kconfig | 1 +
> drivers/net/wireless/Makefile | 3 +
> drivers/net/wireless/ath/ath.h | 2 -
> drivers/net/wireless/ath/ath5k/base.c | 6 -
> drivers/net/wireless/ath/ath9k/Makefile | 1 +
> drivers/net/wireless/ath/ath9k/ani.c | 5 -
> drivers/net/wireless/ath/ath9k/ar5008_phy.c | 11 +-
> .../net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 172 +-
> drivers/net/wireless/ath/ath9k/ar9003_calib.c | 250 +-
> drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 59 +-
> drivers/net/wireless/ath/ath9k/ar9003_hw.c | 186 +-
> drivers/net/wireless/ath/ath9k/ar9003_mac.c | 4 +-
> drivers/net/wireless/ath/ath9k/ar9003_paprd.c | 15 +-
> drivers/net/wireless/ath/ath9k/ar9003_phy.c | 97 +-
> drivers/net/wireless/ath/ath9k/ar9003_phy.h | 52 +-
> drivers/net/wireless/ath/ath9k/ar9003_rtt.c | 153 +
> drivers/net/wireless/ath/ath9k/ar9003_rtt.h | 28 +
> ...ar9480_1p0_initvals.h => ar9462_1p0_initvals.h} | 62 +-
> ...ar9480_2p0_initvals.h => ar9462_2p0_initvals.h} | 68 +-
> drivers/net/wireless/ath/ath9k/ath9k.h | 2 +-
> drivers/net/wireless/ath/ath9k/beacon.c | 10 +-
> drivers/net/wireless/ath/ath9k/common.c | 6 +-
> drivers/net/wireless/ath/ath9k/debug.c | 19 +-
> drivers/net/wireless/ath/ath9k/debug.h | 13 +
> drivers/net/wireless/ath/ath9k/eeprom.h | 10 +-
> drivers/net/wireless/ath/ath9k/eeprom_4k.c | 29 +-
> drivers/net/wireless/ath/ath9k/eeprom_9287.c | 35 +-
> drivers/net/wireless/ath/ath9k/eeprom_def.c | 45 +-
> drivers/net/wireless/ath/ath9k/gpio.c | 8 +-
> drivers/net/wireless/ath/ath9k/hw-ops.h | 7 +
> drivers/net/wireless/ath/ath9k/hw.c | 158 +-
> drivers/net/wireless/ath/ath9k/hw.h | 39 +-
> drivers/net/wireless/ath/ath9k/init.c | 2 -
> drivers/net/wireless/ath/ath9k/mac.c | 10 +-
> drivers/net/wireless/ath/ath9k/mac.h | 6 +-
> drivers/net/wireless/ath/ath9k/main.c | 25 +-
> drivers/net/wireless/ath/ath9k/pci.c | 2 +-
> drivers/net/wireless/ath/ath9k/recv.c | 35 +-
> drivers/net/wireless/ath/ath9k/reg.h | 29 +-
> drivers/net/wireless/ath/ath9k/xmit.c | 40 +-
> drivers/net/wireless/ath/carl9170/main.c | 1 -
> drivers/net/wireless/b43/xmit.c | 18 +-
> drivers/net/wireless/b43/xmit.h | 10 +-
> drivers/net/wireless/brcm80211/Kconfig | 35 +
> drivers/net/wireless/brcm80211/Makefile | 23 +
> drivers/net/wireless/brcm80211/brcmfmac/Makefile | 33 +
> drivers/net/wireless/brcm80211/brcmfmac/bcmchip.h | 32 +
> drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 371 +
> .../net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c | 626 +
> drivers/net/wireless/brcm80211/brcmfmac/dhd.h | 776 +
> drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h | 57 +
> drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c | 498 +
> .../net/wireless/brcm80211/brcmfmac/dhd_common.c | 895 +
> drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.h | 58 +
> .../net/wireless/brcm80211/brcmfmac/dhd_linux.c | 1356 +
> .../net/wireless/brcm80211/brcmfmac/dhd_proto.h | 60 +
> drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 4591 ++++
> .../net/wireless/brcm80211/brcmfmac/sdio_host.h | 252 +
> .../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 3868 +++
> .../net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | 375 +
> drivers/net/wireless/brcm80211/brcmsmac/Makefile | 51 +
> drivers/net/wireless/brcm80211/brcmsmac/aiutils.c | 2079 ++
> drivers/net/wireless/brcm80211/brcmsmac/aiutils.h | 378 +
> drivers/net/wireless/brcm80211/brcmsmac/ampdu.c | 1241 +
> drivers/net/wireless/brcm80211/brcmsmac/ampdu.h | 30 +
> drivers/net/wireless/brcm80211/brcmsmac/antsel.c | 307 +
> drivers/net/wireless/brcm80211/brcmsmac/antsel.h | 29 +
> .../brcm80211/brcmsmac/brcms_trace_events.c | 23 +
> .../brcm80211/brcmsmac/brcms_trace_events.h | 92 +
> drivers/net/wireless/brcm80211/brcmsmac/channel.c | 1591 ++
> drivers/net/wireless/brcm80211/brcmsmac/channel.h | 53 +
> drivers/net/wireless/brcm80211/brcmsmac/d11.h | 1898 ++
> drivers/net/wireless/brcm80211/brcmsmac/dma.c | 1425 +
> drivers/net/wireless/brcm80211/brcmsmac/dma.h | 120 +
> .../net/wireless/brcm80211/brcmsmac/mac80211_if.c | 1696 ++
> .../net/wireless/brcm80211/brcmsmac/mac80211_if.h | 108 +
> drivers/net/wireless/brcm80211/brcmsmac/main.c | 8775 ++++++
> drivers/net/wireless/brcm80211/brcmsmac/main.h | 735 +
> drivers/net/wireless/brcm80211/brcmsmac/nicpci.c | 835 +
> drivers/net/wireless/brcm80211/brcmsmac/nicpci.h | 82 +
> drivers/net/wireless/brcm80211/brcmsmac/otp.c | 426 +
> drivers/net/wireless/brcm80211/brcmsmac/otp.h | 36 +
> .../net/wireless/brcm80211/brcmsmac/phy/phy_cmn.c | 2988 ++
> .../net/wireless/brcm80211/brcmsmac/phy/phy_hal.h | 301 +
> .../net/wireless/brcm80211/brcmsmac/phy/phy_int.h | 1169 +
> .../net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c | 5154 ++++
> .../net/wireless/brcm80211/brcmsmac/phy/phy_lcn.h | 121 +
> .../net/wireless/brcm80211/brcmsmac/phy/phy_n.c |28876 ++++++++++++++++++++
> .../wireless/brcm80211/brcmsmac/phy/phy_qmath.c | 308 +
> .../wireless/brcm80211/brcmsmac/phy/phy_qmath.h | 42 +
> .../wireless/brcm80211/brcmsmac/phy/phy_radio.h | 1533 ++
> .../net/wireless/brcm80211/brcmsmac/phy/phyreg_n.h | 167 +
> .../wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c | 3250 +++
> .../wireless/brcm80211/brcmsmac/phy/phytbl_lcn.h | 54 +
> .../net/wireless/brcm80211/brcmsmac/phy/phytbl_n.c |10630 +++++++
> .../net/wireless/brcm80211/brcmsmac/phy/phytbl_n.h | 50 +
> drivers/net/wireless/brcm80211/brcmsmac/phy_shim.c | 225 +
> drivers/net/wireless/brcm80211/brcmsmac/phy_shim.h | 182 +
> drivers/net/wireless/brcm80211/brcmsmac/pmu.c | 458 +
> drivers/net/wireless/brcm80211/brcmsmac/pmu.h | 38 +
> drivers/net/wireless/brcm80211/brcmsmac/pub.h | 634 +
> drivers/net/wireless/brcm80211/brcmsmac/rate.c | 514 +
> drivers/net/wireless/brcm80211/brcmsmac/rate.h | 250 +
> drivers/net/wireless/brcm80211/brcmsmac/scb.h | 82 +
> drivers/net/wireless/brcm80211/brcmsmac/srom.c | 1298 +
> drivers/net/wireless/brcm80211/brcmsmac/srom.h | 34 +
> drivers/net/wireless/brcm80211/brcmsmac/stf.c | 436 +
> drivers/net/wireless/brcm80211/brcmsmac/stf.h | 42 +
> drivers/net/wireless/brcm80211/brcmsmac/types.h | 352 +
> .../net/wireless/brcm80211/brcmsmac/ucode_loader.c | 109 +
> .../net/wireless/brcm80211/brcmsmac/ucode_loader.h | 58 +
> drivers/net/wireless/brcm80211/brcmutil/Makefile | 28 +
> drivers/net/wireless/brcm80211/brcmutil/utils.c | 386 +
> .../net/wireless/brcm80211/include/brcm_hw_ids.h | 59 +
> .../net/wireless/brcm80211/include/brcmu_utils.h | 195 +
> .../net/wireless/brcm80211/include/brcmu_wifi.h | 239 +
> .../net/wireless/brcm80211/include/chipcommon.h | 284 +
> drivers/net/wireless/brcm80211/include/defs.h | 104 +
> drivers/net/wireless/brcm80211/include/soc.h | 90 +
> drivers/net/wireless/iwlwifi/Kconfig | 4 +-
> drivers/net/wireless/iwlwifi/Makefile | 3 +-
> drivers/net/wireless/iwlwifi/iwl-1000.c | 3 -
> drivers/net/wireless/iwlwifi/iwl-2000.c | 10 +-
> drivers/net/wireless/iwlwifi/iwl-5000-hw.h | 88 -
> drivers/net/wireless/iwlwifi/iwl-5000.c | 22 +-
> drivers/net/wireless/iwlwifi/iwl-6000-hw.h | 81 -
> drivers/net/wireless/iwlwifi/iwl-6000.c | 12 +-
> drivers/net/wireless/iwlwifi/iwl-agn-hw.h | 15 +-
> drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 2 -
> drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 4 +-
> drivers/net/wireless/iwlwifi/iwl-agn-rs.h | 4 +
> .../wireless/iwlwifi/{iwl-rx.c => iwl-agn-rx.c} | 112 +-
> drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 10 +-
> drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 861 +-
> drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 32 +-
> drivers/net/wireless/iwlwifi/iwl-agn-ucode.c | 1 -
> drivers/net/wireless/iwlwifi/iwl-agn.c | 126 +-
> drivers/net/wireless/iwlwifi/iwl-agn.h | 131 +-
> drivers/net/wireless/iwlwifi/iwl-cfg.h | 2 +
> drivers/net/wireless/iwlwifi/iwl-commands.h | 11 +
> drivers/net/wireless/iwlwifi/iwl-core.c | 83 +-
> drivers/net/wireless/iwlwifi/iwl-core.h | 20 +-
> drivers/net/wireless/iwlwifi/iwl-debug.h | 8 +-
> drivers/net/wireless/iwlwifi/iwl-debugfs.c | 22 +-
> drivers/net/wireless/iwlwifi/iwl-dev.h | 3 -
> drivers/net/wireless/iwlwifi/iwl-helpers.h | 72 -
> drivers/net/wireless/iwlwifi/iwl-led.c | 3 +-
> drivers/net/wireless/iwlwifi/iwl-pci.c | 2 +
> drivers/net/wireless/iwlwifi/iwl-power.c | 2 +-
> drivers/net/wireless/iwlwifi/iwl-scan.c | 4 +-
> drivers/net/wireless/iwlwifi/iwl-shared.h | 2 -
> drivers/net/wireless/iwlwifi/iwl-sta.c | 835 -
> drivers/net/wireless/iwlwifi/iwl-sta.h | 141 -
> drivers/net/wireless/iwlwifi/iwl-sv-open.c | 8 +-
> drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 1 -
> drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c | 23 +-
> drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 21 +-
> drivers/net/wireless/iwmc3200wifi/cfg80211.c | 6 +-
> drivers/net/wireless/libertas/cfg.c | 20 +-
> drivers/net/wireless/libertas/decl.h | 2 +
> drivers/net/wireless/libertas/main.c | 32 +
> drivers/net/wireless/mwifiex/11n_aggr.c | 3 +-
> drivers/net/wireless/mwifiex/Kconfig | 11 +
> drivers/net/wireless/mwifiex/Makefile | 3 +
> drivers/net/wireless/mwifiex/cfp.c | 10 +-
> drivers/net/wireless/mwifiex/cmdevt.c | 34 +-
> drivers/net/wireless/mwifiex/decl.h | 1 -
> drivers/net/wireless/mwifiex/fw.h | 36 +-
> drivers/net/wireless/mwifiex/init.c | 73 +-
> drivers/net/wireless/mwifiex/main.c | 10 +-
> drivers/net/wireless/mwifiex/main.h | 35 +-
> drivers/net/wireless/mwifiex/pcie.c | 1948 ++
> drivers/net/wireless/mwifiex/pcie.h | 148 +
> drivers/net/wireless/mwifiex/scan.c | 56 +-
> drivers/net/wireless/mwifiex/sdio.c | 19 +-
> drivers/net/wireless/mwifiex/sdio.h | 24 +-
> drivers/net/wireless/mwifiex/sta_cmd.c | 64 +
> drivers/net/wireless/mwifiex/sta_cmdresp.c | 2 +
> drivers/net/wireless/mwifiex/sta_ioctl.c | 12 +-
> drivers/net/wireless/mwifiex/sta_tx.c | 2 +-
> drivers/net/wireless/mwifiex/txrx.c | 45 +-
> drivers/net/wireless/mwifiex/util.c | 5 +-
> drivers/net/wireless/mwifiex/util.h | 9 +-
> drivers/net/wireless/mwifiex/wmm.c | 4 +-
> drivers/net/wireless/rtlwifi/base.c | 6 +-
> drivers/net/wireless/rtlwifi/debug.c | 6 -
> drivers/net/wireless/rtlwifi/pci.c | 19 +-
> drivers/net/wireless/rtlwifi/pci.h | 4 +-
> drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 14 +
> drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 35 +-
> drivers/net/wireless/rtlwifi/rtl8192cu/def.h | 4 -
> drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 7 +
> drivers/net/wireless/rtlwifi/rtl8192de/def.h | 135 +-
> drivers/net/wireless/rtlwifi/rtl8192de/hw.c | 15 +-
> drivers/net/wireless/rtlwifi/rtl8192de/sw.c | 21 +-
> drivers/net/wireless/rtlwifi/rtl8192se/hw.c | 22 +-
> drivers/net/wireless/rtlwifi/rtl8192se/reg.h | 1 +
> drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 22 +-
> drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 55 +-
> drivers/net/wireless/rtlwifi/wifi.h | 5 +
> drivers/net/wireless/wl12xx/acx.c | 16 +
> drivers/net/wireless/wl12xx/acx.h | 1 +
> drivers/net/wireless/wl12xx/boot.c | 6 +-
> drivers/net/wireless/wl12xx/cmd.c | 63 +-
> drivers/net/wireless/wl12xx/cmd.h | 20 +
> drivers/net/wireless/wl12xx/conf.h | 6 +-
> drivers/net/wireless/wl12xx/event.c | 15 +
> drivers/net/wireless/wl12xx/main.c | 48 +-
> drivers/net/wireless/wl12xx/wl12xx.h | 7 +-
> drivers/staging/Kconfig | 2 +-
> drivers/staging/Makefile | 4 +-
> include/linux/nl80211.h | 2 +
> include/net/cfg80211.h | 5 +-
> include/net/mac80211.h | 10 +-
> net/mac80211/cfg.c | 22 +-
> net/mac80211/ieee80211_i.h | 15 +-
> net/mac80211/main.c | 6 +-
> net/mac80211/mesh_hwmp.c | 9 +
> net/mac80211/scan.c | 1 +
> net/mac80211/sta_info.c | 6 +-
> net/mac80211/status.c | 137 +-
> net/mac80211/tx.c | 360 +-
> net/mac80211/work.c | 2 +-
> net/mac80211/wpa.c | 3 +-
> net/wireless/nl80211.c | 4 +
> 226 files changed, 102247 insertions(+), 2686 deletions(-)
> create mode 100644 drivers/net/wireless/ath/ath9k/ar9003_rtt.c
> create mode 100644 drivers/net/wireless/ath/ath9k/ar9003_rtt.h
> rename drivers/net/wireless/ath/ath9k/{ar9480_1p0_initvals.h => ar9462_1p0_initvals.h} (97%)
> rename drivers/net/wireless/ath/ath9k/{ar9480_2p0_initvals.h => ar9462_2p0_initvals.h} (97%)
> create mode 100644 drivers/net/wireless/brcm80211/Kconfig
> create mode 100644 drivers/net/wireless/brcm80211/Makefile
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/Makefile
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/bcmchip.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_proto.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/sdio_host.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/Makefile
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/aiutils.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/ampdu.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/antsel.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/antsel.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/brcms_trace_events.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/brcms_trace_events.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/channel.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/channel.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/d11.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/dma.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/dma.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/main.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/main.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/nicpci.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/nicpci.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/otp.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/otp.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_cmn.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_hal.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_qmath.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_qmath.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phy_radio.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phyreg_n.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_n.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_n.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy_shim.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/phy_shim.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/pmu.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/pmu.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/pub.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/rate.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/rate.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/scb.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/srom.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/srom.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/stf.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/stf.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/types.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/ucode_loader.c
> create mode 100644 drivers/net/wireless/brcm80211/brcmsmac/ucode_loader.h
> create mode 100644 drivers/net/wireless/brcm80211/brcmutil/Makefile
> create mode 100644 drivers/net/wireless/brcm80211/brcmutil/utils.c
> create mode 100644 drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
> create mode 100644 drivers/net/wireless/brcm80211/include/brcmu_utils.h
> create mode 100644 drivers/net/wireless/brcm80211/include/brcmu_wifi.h
> create mode 100644 drivers/net/wireless/brcm80211/include/chipcommon.h
> create mode 100644 drivers/net/wireless/brcm80211/include/defs.h
> create mode 100644 drivers/net/wireless/brcm80211/include/soc.h
> delete mode 100644 drivers/net/wireless/iwlwifi/iwl-5000-hw.h
> delete mode 100644 drivers/net/wireless/iwlwifi/iwl-6000-hw.h
> rename drivers/net/wireless/iwlwifi/{iwl-rx.c => iwl-agn-rx.c} (91%)
> delete mode 100644 drivers/net/wireless/iwlwifi/iwl-helpers.h
> delete mode 100644 drivers/net/wireless/iwlwifi/iwl-sta.c
> delete mode 100644 drivers/net/wireless/iwlwifi/iwl-sta.h
> create mode 100644 drivers/net/wireless/mwifiex/pcie.c
> create mode 100644 drivers/net/wireless/mwifiex/pcie.h
> --
> John W. Linville Someday the world will need a hero, and you
> linville@tuxdriver.com might be all we have. Be ready.
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ 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