* Re: [PATCH] mac80211: fix crash if bitrate calculation goes wrong
From: Johannes Berg @ 2013-10-14 7:45 UTC (permalink / raw)
To: linux-wireless; +Cc: Thomas Lindroth
In-Reply-To: <1381499323-6502-1-git-send-email-johannes@sipsolutions.net>
On Fri, 2013-10-11 at 15:48 +0200, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> If a frame's timestamp is calculated, and the bitrate
> calculation goes wrong and returns zero, the system
> will attempt to divide by zero and crash. Catch this
> case and print the rate information that the driver
> reported when this happens.
Applied.
johannes
^ permalink raw reply
* Re: [PATCH] wireless: radiotap: fix parsing buffer overrun
From: Johannes Berg @ 2013-10-14 7:45 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <1381495982-28486-1-git-send-email-johannes@sipsolutions.net>
On Fri, 2013-10-11 at 14:53 +0200, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> When parsing an invalid radiotap header, the parser can overrun
> the buffer that is passed in because it doesn't correctly check
> 1) the minimum radiotap header size
> 2) the space for extended bitmaps
>
> The first issue doesn't affect any in-kernel user as they all
> check the minimum size before calling the radiotap function.
> The second issue could potentially affect the kernel if an skb
> is passed in that consists only of the radiotap header with a
> lot of extended bitmaps that extend past the SKB. In that case
> a read-only buffer overrun by at most 4 bytes is possible.
>
> Fix this by adding the appropriate checks to the parser.
Applied (with another fix pointed out by Evan)
johannes
^ permalink raw reply
* pull-request: mac80211 2013-10-14
From: Johannes Berg @ 2013-10-14 7:49 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
[-- Attachment #1: Type: text/plain, Size: 1452 bytes --]
John,
I know it's getting later in the game (rc5 is out) and my last pull
request hasn't even made it into Linus's tree, but we still have some
fixes ...
This time I have two fixes from Emmanuel for RF-kill issues, and fixed
two issues reported by Evan Huus and Thomas Lindroth respectively.
Let me know if there's any problem.
johannes
The following changes since commit 22c4ceed0184318ec5a6182c6d75d398452c2e39:
mac80211: Run deferred scan if last roc_list item is not started (2013-09-30 12:36:56 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git for-john
for you to fetch changes up to d86aa4f8ca58898ec6a94c0635da20b948171ed7:
mac80211: fix crash if bitrate calculation goes wrong (2013-10-14 09:47:08 +0200)
----------------------------------------------------------------
Emmanuel Grumbach (2):
mac80211: correctly close cancelled scans
cfg80211: don't add p2p device while in RFKILL
Johannes Berg (2):
wireless: radiotap: fix parsing buffer overrun
mac80211: fix crash if bitrate calculation goes wrong
net/mac80211/ieee80211_i.h | 3 +++
net/mac80211/scan.c | 19 +++++++++++++++++++
net/mac80211/util.c | 4 ++++
net/wireless/core.c | 2 --
net/wireless/core.h | 3 +++
net/wireless/radiotap.c | 7 ++++++-
6 files changed, 35 insertions(+), 3 deletions(-)
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* Getting the Sitecom WLA-2102 running with the rtl8192cu driver? (add its USB ID)
From: Hans de Jonge @ 2013-10-14 7:57 UTC (permalink / raw)
To: linux-wireless
Hi list,
In the course of this year I acquired a Sitecom N300 (WLA-2102) USB Wifi
adapter with a USB vendor,device ID:
0x0DF6,0x0070
According to a post on a german site, it is claimed that the device can
be set to run through the Realtek 8192CU driver and that this can be
achieved by adding the id at the appropriate place in the source code,
which I recognise as "the
same list as where the device with ID= 0x0DF6,0x0061 is added.
In the latest stable kernel source (3.11.4) I was able to identify this
to be situated in the file:
linux-3.11.4/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
Hence I my question whether it is possible to add the id as suggested in
the german post
(http://forum.ubuntuusers.de/topic/wi-fi-usb-adapter-n300-wla-2102-8192cu/)
in order get the device running in the next kernel version?
Since I myself stopped compiling my own custom kernels a few years ago.
(In favour of (automagically updated) Debian testing distribution
kernels), I have not yet tried to implement the modification in a
home-brewn kernel, but given clear indication on how to rebuild a
distribution kernel image package with just that one modification, I
would love to give that a try and test it.
Yours,
Hans de Jonge
^ permalink raw reply
* Re: [PATCH v2 1/2] cfg80211: add flags to define country IE processing rules
From: Johannes Berg @ 2013-10-14 8:53 UTC (permalink / raw)
To: Mihir Shete
Cc: linux-wireless, Henri Bahini, Tushnim Bhattacharyya,
Luis R. Rodriguez
In-Reply-To: <1381638697-2641-2-git-send-email-smihir@qti.qualcomm.com>
On Sun, 2013-10-13 at 10:01 +0530, Mihir Shete wrote:
> 802.11 cards may have different country IE parsing behavioural
> preferences and vendors may want to support these. These preferences
> were managed by the WIPHY_FLAG_CUSTOM_REGULATORY and the
> WIPHY_FLAG_STRICT_REGULATORY flags and their combination.
> Instead of using this existing notation, split out the country
> IE behavioural preferences to a new flag. This will allow
> us to add more customizations easily and make the code more
> maintainable
> regd = ath_world_regdomain(reg);
> wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY;
> + wiphy->country_ie_pref = NL80211_COUNTRY_IE_FOLLOW_POWER;
That seems pretty weird - maybe you should have a first patch that moves
the existing regulatory flags into some new field, and then adds the
country IE flags there? Adding a new flags field for just the country IE
seems odd and less useful for the future.
> + * @country_ie_pref: country IE processing preferences specified
> + * by enum nl80211_country_ie_pref
That implies you're exporting it to userspace - why?
> /**
> + * enum nl80211_country_ie_pref - country IE processing preferences
Why is this userspace API if it's not used anywhere as such?
johannes
^ permalink raw reply
* [PATCH 1/4] ath9k: dfs kill ath9k specyfic code
From: Janusz Dziedzic @ 2013-10-14 9:06 UTC (permalink / raw)
To: linux-wireless; +Cc: Janusz Dziedzic
Kill of using ath9k_hw_common() function
in dfs detector code.
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Reviewed-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
---
.../net/wireless/ath/ath9k/dfs_pattern_detector.c | 13 ++++++-------
.../net/wireless/ath/ath9k/dfs_pattern_detector.h | 8 +++++---
drivers/net/wireless/ath/ath9k/init.c | 4 ++--
3 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
index 491305c..c839a78 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
+++ b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
@@ -19,7 +19,7 @@
#include "dfs_pattern_detector.h"
#include "dfs_pri_detector.h"
-#include "ath9k.h"
+#include "../ath.h"
/*
* tolerated deviation of radar time stamp in usecs on both sides
@@ -143,7 +143,6 @@ channel_detector_create(struct dfs_pattern_detector *dpd, u16 freq)
{
u32 sz, i;
struct channel_detector *cd;
- struct ath_common *common = ath9k_hw_common(dpd->ah);
cd = kmalloc(sizeof(*cd), GFP_ATOMIC);
if (cd == NULL)
@@ -167,7 +166,7 @@ channel_detector_create(struct dfs_pattern_detector *dpd, u16 freq)
return cd;
fail:
- ath_dbg(common, DFS,
+ ath_dbg(dpd->common, DFS,
"failed to allocate channel_detector for freq=%d\n", freq);
channel_detector_exit(dpd, cd);
return NULL;
@@ -242,7 +241,7 @@ dpd_add_pulse(struct dfs_pattern_detector *dpd, struct pulse_event *event)
struct pri_detector *pd = cd->detectors[i];
struct pri_sequence *ps = pd->add_pulse(pd, event);
if (ps != NULL) {
- ath_dbg(ath9k_hw_common(dpd->ah), DFS,
+ ath_dbg(dpd->common, DFS,
"DFS: radar found on freq=%d: id=%d, pri=%d, "
"count=%d, count_false=%d\n",
event->freq, pd->rs->type_id,
@@ -288,10 +287,10 @@ static struct dfs_pattern_detector default_dpd = {
};
struct dfs_pattern_detector *
-dfs_pattern_detector_init(struct ath_hw *ah, enum nl80211_dfs_regions region)
+dfs_pattern_detector_init(struct ath_common *common,
+ enum nl80211_dfs_regions region)
{
struct dfs_pattern_detector *dpd;
- struct ath_common *common = ath9k_hw_common(ah);
dpd = kmalloc(sizeof(*dpd), GFP_KERNEL);
if (dpd == NULL)
@@ -300,7 +299,7 @@ dfs_pattern_detector_init(struct ath_hw *ah, enum nl80211_dfs_regions region)
*dpd = default_dpd;
INIT_LIST_HEAD(&dpd->channel_detectors);
- dpd->ah = ah;
+ dpd->common = common;
if (dpd->set_dfs_domain(dpd, region))
return dpd;
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
index 90a5abc..b09946f 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
+++ b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
@@ -81,7 +81,7 @@ struct dfs_pattern_detector {
u8 num_radar_types;
u64 last_pulse_ts;
/* needed for ath_dbg() */
- struct ath_hw *ah;
+ struct ath_common *common;
const struct radar_detector_specs *radar_spec;
struct list_head channel_detectors;
@@ -94,10 +94,12 @@ struct dfs_pattern_detector {
*/
#if defined(CONFIG_ATH9K_DFS_CERTIFIED)
extern struct dfs_pattern_detector *
-dfs_pattern_detector_init(struct ath_hw *ah, enum nl80211_dfs_regions region);
+dfs_pattern_detector_init(struct ath_common *common,
+ enum nl80211_dfs_regions region);
#else
static inline struct dfs_pattern_detector *
-dfs_pattern_detector_init(struct ath_hw *ah, enum nl80211_dfs_regions region)
+dfs_pattern_detector_init(struct ath_common *common,
+ enum nl80211_dfs_regions region)
{
return NULL;
}
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index e3d11c4..42758ce 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -647,7 +647,8 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc,
sc->sc_ah = ah;
pCap = &ah->caps;
- sc->dfs_detector = dfs_pattern_detector_init(ah, NL80211_DFS_UNSET);
+ common = ath9k_hw_common(ah);
+ sc->dfs_detector = dfs_pattern_detector_init(common, NL80211_DFS_UNSET);
if (!pdata) {
ah->ah_flags |= AH_USE_EEPROM;
@@ -661,7 +662,6 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc,
ah->external_reset = pdata->external_reset;
}
- common = ath9k_hw_common(ah);
common->ops = &ah->reg_ops;
common->bus_ops = bus_ops;
common->ah = ah;
--
1.7.9.5
^ permalink raw reply related
* [PATCH 2/4] ath9k: dfs move ath_dfs_pool_stats
From: Janusz Dziedzic @ 2013-10-14 9:06 UTC (permalink / raw)
To: linux-wireless; +Cc: Janusz Dziedzic
In-Reply-To: <1381741566-2330-1-git-send-email-janusz.dziedzic@tieto.com>
Move ath_dfs_pool_stats to dfs_pattern_detector
code to be not specyfic only for ath9k.
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Reviewed-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
---
drivers/net/wireless/ath/ath9k/dfs_debug.c | 9 ++++++---
drivers/net/wireless/ath/ath9k/dfs_debug.h | 16 ----------------
.../net/wireless/ath/ath9k/dfs_pattern_detector.c | 7 +++++++
.../net/wireless/ath/ath9k/dfs_pattern_detector.h | 14 ++++++++++++++
drivers/net/wireless/ath/ath9k/dfs_pri_detector.c | 8 ++++++--
drivers/net/wireless/ath/ath9k/dfs_pri_detector.h | 2 ++
6 files changed, 35 insertions(+), 21 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/dfs_debug.c b/drivers/net/wireless/ath/ath9k/dfs_debug.c
index 8215991..990c376 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_debug.c
+++ b/drivers/net/wireless/ath/ath9k/dfs_debug.c
@@ -20,16 +20,16 @@
#include "ath9k.h"
#include "dfs_debug.h"
+#include "dfs_pattern_detector.h"
-
-struct ath_dfs_pool_stats global_dfs_pool_stats = { 0 };
+static struct ath_dfs_pool_stats dfs_pool_stats = { 0 };
#define ATH9K_DFS_STAT(s, p) \
len += scnprintf(buf + len, size - len, "%28s : %10u\n", s, \
sc->debug.stats.dfs_stats.p);
#define ATH9K_DFS_POOL_STAT(s, p) \
len += scnprintf(buf + len, size - len, "%28s : %10u\n", s, \
- global_dfs_pool_stats.p);
+ dfs_pool_stats.p);
static ssize_t read_file_dfs(struct file *file, char __user *user_buf,
size_t count, loff_t *ppos)
@@ -44,6 +44,9 @@ static ssize_t read_file_dfs(struct file *file, char __user *user_buf,
if (buf == NULL)
return -ENOMEM;
+ if (sc->dfs_detector)
+ dfs_pool_stats = sc->dfs_detector->get_stats(sc->dfs_detector);
+
len += scnprintf(buf + len, size - len, "DFS support for "
"macVersion = 0x%x, macRev = 0x%x: %s\n",
hw_ver->macVersion, hw_ver->macRev,
diff --git a/drivers/net/wireless/ath/ath9k/dfs_debug.h b/drivers/net/wireless/ath/ath9k/dfs_debug.h
index e36810a..0a7ddf4 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_debug.h
+++ b/drivers/net/wireless/ath/ath9k/dfs_debug.h
@@ -51,25 +51,11 @@ struct ath_dfs_stats {
u32 radar_detected;
};
-/**
- * struct ath_dfs_pool_stats - DFS Statistics for global pools
- */
-struct ath_dfs_pool_stats {
- u32 pool_reference;
- u32 pulse_allocated;
- u32 pulse_alloc_error;
- u32 pulse_used;
- u32 pseq_allocated;
- u32 pseq_alloc_error;
- u32 pseq_used;
-};
#if defined(CONFIG_ATH9K_DFS_DEBUGFS)
#define DFS_STAT_INC(sc, c) (sc->debug.stats.dfs_stats.c++)
void ath9k_dfs_init_debug(struct ath_softc *sc);
-#define DFS_POOL_STAT_INC(c) (global_dfs_pool_stats.c++)
-#define DFS_POOL_STAT_DEC(c) (global_dfs_pool_stats.c--)
extern struct ath_dfs_pool_stats global_dfs_pool_stats;
#else
@@ -77,8 +63,6 @@ extern struct ath_dfs_pool_stats global_dfs_pool_stats;
#define DFS_STAT_INC(sc, c) do { } while (0)
static inline void ath9k_dfs_init_debug(struct ath_softc *sc) { }
-#define DFS_POOL_STAT_INC(c) do { } while (0)
-#define DFS_POOL_STAT_DEC(c) do { } while (0)
#endif /* CONFIG_ATH9K_DFS_DEBUGFS */
#endif /* ATH9K_DFS_DEBUG_H */
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
index c839a78..b0dcd1b 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
+++ b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
@@ -253,6 +253,12 @@ dpd_add_pulse(struct dfs_pattern_detector *dpd, struct pulse_event *event)
return false;
}
+static struct ath_dfs_pool_stats
+dpd_get_stats(struct dfs_pattern_detector *dpd)
+{
+ return global_dfs_pool_stats;
+}
+
static bool dpd_set_domain(struct dfs_pattern_detector *dpd,
enum nl80211_dfs_regions region)
{
@@ -283,6 +289,7 @@ static struct dfs_pattern_detector default_dpd = {
.exit = dpd_exit,
.set_dfs_domain = dpd_set_domain,
.add_pulse = dpd_add_pulse,
+ .get_stats = dpd_get_stats,
.region = NL80211_DFS_UNSET,
};
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
index b09946f..9c75297 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
+++ b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
@@ -22,6 +22,19 @@
#include <linux/nl80211.h>
/**
+ * struct ath_dfs_pool_stats - DFS Statistics for global pools
+ */
+struct ath_dfs_pool_stats {
+ u32 pool_reference;
+ u32 pulse_allocated;
+ u32 pulse_alloc_error;
+ u32 pulse_used;
+ u32 pseq_allocated;
+ u32 pseq_alloc_error;
+ u32 pseq_used;
+};
+
+/**
* struct pulse_event - describing pulses reported by PHY
* @ts: pulse time stamp in us
* @freq: channel frequency in MHz
@@ -77,6 +90,7 @@ struct dfs_pattern_detector {
bool (*add_pulse)(struct dfs_pattern_detector *dpd,
struct pulse_event *pe);
+ struct ath_dfs_pool_stats (*get_stats)(struct dfs_pattern_detector *dpd);
enum nl80211_dfs_regions region;
u8 num_radar_types;
u64 last_pulse_ts;
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c b/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c
index c718fc3..17b5bf9 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c
+++ b/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c
@@ -17,10 +17,14 @@
#include <linux/slab.h>
#include <linux/spinlock.h>
-#include "ath9k.h"
+#include "../ath.h"
#include "dfs_pattern_detector.h"
#include "dfs_pri_detector.h"
-#include "dfs_debug.h"
+
+struct ath_dfs_pool_stats global_dfs_pool_stats = {};
+
+#define DFS_POOL_STAT_INC(c) (global_dfs_pool_stats.c++)
+#define DFS_POOL_STAT_DEC(c) (global_dfs_pool_stats.c--)
/**
* struct pulse_elem - elements in pulse queue
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.h b/drivers/net/wireless/ath/ath9k/dfs_pri_detector.h
index 723962d..79f0fff 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.h
+++ b/drivers/net/wireless/ath/ath9k/dfs_pri_detector.h
@@ -19,6 +19,8 @@
#include <linux/list.h>
+extern struct ath_dfs_pool_stats global_dfs_pool_stats;
+
/**
* struct pri_sequence - sequence of pulses matching one PRI
* @head: list_head
--
1.7.9.5
^ permalink raw reply related
* [PATCH 3/4] ath9k: dfs use CFG80211_CERTIFICATION_ONUS flag
From: Janusz Dziedzic @ 2013-10-14 9:06 UTC (permalink / raw)
To: linux-wireless; +Cc: Janusz Dziedzic
In-Reply-To: <1381741566-2330-1-git-send-email-janusz.dziedzic@tieto.com>
Use CFG80211_CERTIFICATION_ONUS flag in the DFS
detector code. This is required as a preparation
for moving DFS detector code from ath9k to ath
module.
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Reviewed-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
---
.../net/wireless/ath/ath9k/dfs_pattern_detector.c | 3 +++
.../net/wireless/ath/ath9k/dfs_pattern_detector.h | 10 ----------
2 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
index b0dcd1b..c230ffc 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
+++ b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
@@ -299,6 +299,9 @@ dfs_pattern_detector_init(struct ath_common *common,
{
struct dfs_pattern_detector *dpd;
+ if (!config_enabled(CONFIG_CFG80211_CERTIFICATION_ONUS))
+ return NULL;
+
dpd = kmalloc(sizeof(*dpd), GFP_KERNEL);
if (dpd == NULL)
return NULL;
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
index 9c75297..dde2652 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
+++ b/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
@@ -106,17 +106,7 @@ struct dfs_pattern_detector {
* @param region: DFS domain to be used, can be NL80211_DFS_UNSET at creation
* @return instance pointer on success, NULL otherwise
*/
-#if defined(CONFIG_ATH9K_DFS_CERTIFIED)
extern struct dfs_pattern_detector *
dfs_pattern_detector_init(struct ath_common *common,
enum nl80211_dfs_regions region);
-#else
-static inline struct dfs_pattern_detector *
-dfs_pattern_detector_init(struct ath_common *common,
- enum nl80211_dfs_regions region)
-{
- return NULL;
-}
-#endif /* CONFIG_ATH9K_DFS_CERTIFIED */
-
#endif /* DFS_PATTERN_DETECTOR_H */
--
1.7.9.5
^ permalink raw reply related
* [PATCH 4/4] ath9k/ath: move dfs pattern detector to ath
From: Janusz Dziedzic @ 2013-10-14 9:06 UTC (permalink / raw)
To: linux-wireless; +Cc: Janusz Dziedzic
In-Reply-To: <1381741566-2330-1-git-send-email-janusz.dziedzic@tieto.com>
Move the DFS pattern detector code to the ath module so
the other Atheros drivers can make us of it. This makes
no functional changes.
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Reviewed-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
---
drivers/net/wireless/ath/Makefile | 4 +++-
drivers/net/wireless/ath/ath9k/Makefile | 4 +---
drivers/net/wireless/ath/ath9k/dfs.h | 2 +-
drivers/net/wireless/ath/ath9k/dfs_debug.c | 2 +-
.../ath/{ath9k => }/dfs_pattern_detector.c | 2 +-
.../ath/{ath9k => }/dfs_pattern_detector.h | 0
.../wireless/ath/{ath9k => }/dfs_pri_detector.c | 2 +-
.../wireless/ath/{ath9k => }/dfs_pri_detector.h | 0
8 files changed, 8 insertions(+), 8 deletions(-)
rename drivers/net/wireless/ath/{ath9k => }/dfs_pattern_detector.c (99%)
rename drivers/net/wireless/ath/{ath9k => }/dfs_pattern_detector.h (100%)
rename drivers/net/wireless/ath/{ath9k => }/dfs_pri_detector.c (99%)
rename drivers/net/wireless/ath/{ath9k => }/dfs_pri_detector.h (100%)
diff --git a/drivers/net/wireless/ath/Makefile b/drivers/net/wireless/ath/Makefile
index fb05cfd..90b9d75 100644
--- a/drivers/net/wireless/ath/Makefile
+++ b/drivers/net/wireless/ath/Makefile
@@ -11,7 +11,9 @@ obj-$(CONFIG_ATH_COMMON) += ath.o
ath-objs := main.o \
regd.o \
hw.o \
- key.o
+ key.o \
+ dfs_pattern_detector.o \
+ dfs_pri_detector.o
ath-$(CONFIG_ATH_DEBUG) += debug.o
ccflags-y += -D__CHECK_ENDIAN__
diff --git a/drivers/net/wireless/ath/ath9k/Makefile b/drivers/net/wireless/ath/ath9k/Makefile
index 75ee9e7..6205ef5 100644
--- a/drivers/net/wireless/ath/ath9k/Makefile
+++ b/drivers/net/wireless/ath/ath9k/Makefile
@@ -14,9 +14,7 @@ ath9k-$(CONFIG_ATH9K_AHB) += ahb.o
ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o
ath9k-$(CONFIG_ATH9K_DFS_DEBUGFS) += dfs_debug.o
ath9k-$(CONFIG_ATH9K_DFS_CERTIFIED) += \
- dfs.o \
- dfs_pattern_detector.o \
- dfs_pri_detector.o
+ dfs.o
ath9k-$(CONFIG_PM_SLEEP) += wow.o
obj-$(CONFIG_ATH9K) += ath9k.o
diff --git a/drivers/net/wireless/ath/ath9k/dfs.h b/drivers/net/wireless/ath/ath9k/dfs.h
index 3c839f0..c6fa3d5 100644
--- a/drivers/net/wireless/ath/ath9k/dfs.h
+++ b/drivers/net/wireless/ath/ath9k/dfs.h
@@ -17,7 +17,7 @@
#ifndef ATH9K_DFS_H
#define ATH9K_DFS_H
-#include "dfs_pattern_detector.h"
+#include "../dfs_pattern_detector.h"
#if defined(CONFIG_ATH9K_DFS_CERTIFIED)
/**
diff --git a/drivers/net/wireless/ath/ath9k/dfs_debug.c b/drivers/net/wireless/ath/ath9k/dfs_debug.c
index 990c376..90b8342 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_debug.c
+++ b/drivers/net/wireless/ath/ath9k/dfs_debug.c
@@ -20,7 +20,7 @@
#include "ath9k.h"
#include "dfs_debug.h"
-#include "dfs_pattern_detector.h"
+#include "../dfs_pattern_detector.h"
static struct ath_dfs_pool_stats dfs_pool_stats = { 0 };
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c b/drivers/net/wireless/ath/dfs_pattern_detector.c
similarity index 99%
rename from drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
rename to drivers/net/wireless/ath/dfs_pattern_detector.c
index c230ffc..a1a69c5 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
+++ b/drivers/net/wireless/ath/dfs_pattern_detector.c
@@ -19,7 +19,7 @@
#include "dfs_pattern_detector.h"
#include "dfs_pri_detector.h"
-#include "../ath.h"
+#include "ath.h"
/*
* tolerated deviation of radar time stamp in usecs on both sides
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h b/drivers/net/wireless/ath/dfs_pattern_detector.h
similarity index 100%
rename from drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
rename to drivers/net/wireless/ath/dfs_pattern_detector.h
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c b/drivers/net/wireless/ath/dfs_pri_detector.c
similarity index 99%
rename from drivers/net/wireless/ath/ath9k/dfs_pri_detector.c
rename to drivers/net/wireless/ath/dfs_pri_detector.c
index 17b5bf9..43b6081 100644
--- a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c
+++ b/drivers/net/wireless/ath/dfs_pri_detector.c
@@ -17,7 +17,7 @@
#include <linux/slab.h>
#include <linux/spinlock.h>
-#include "../ath.h"
+#include "ath.h"
#include "dfs_pattern_detector.h"
#include "dfs_pri_detector.h"
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.h b/drivers/net/wireless/ath/dfs_pri_detector.h
similarity index 100%
rename from drivers/net/wireless/ath/ath9k/dfs_pri_detector.h
rename to drivers/net/wireless/ath/dfs_pri_detector.h
--
1.7.9.5
^ permalink raw reply related
* [PATCH] ath10k: do not warn about unsupported vdev param
From: Bartosz Markowski @ 2013-10-14 11:16 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless, Bartosz Markowski
10.X firmware does not support WMI_VDEV_PARAM_TX_ENCAP_TYPE.
It's a known limitation and we should not warn about this.
Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 049eca2..9c800f8 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -2085,7 +2085,9 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
vdev_param = ar->wmi.vdev_param->tx_encap_type;
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
ATH10K_HW_TXRX_NATIVE_WIFI);
- if (ret)
+
+ /* 10.X firmware does not support this VDEV parameter. Do not warn */
+ if (ret && !test_bit(ATH10K_FW_FEATURE_WMI_10X, ar->fw_features))
ath10k_warn("Failed to set TX encap: %d\n", ret);
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
--
1.7.10
^ permalink raw reply related
* Re: [PATCH] cfg80211: fix channel to frequency mapping in 5.9GHz range
From: Johannes Berg @ 2013-10-14 12:02 UTC (permalink / raw)
To: Dennis H Jensen; +Cc: linville, linux-wireless
In-Reply-To: <1381506302.3711.10.camel@djensen-laptop>
On Fri, 2013-10-11 at 17:45 +0200, Dennis H Jensen wrote:
> > > + else if (chan > 196)
> > > + return 5000 + (chan - 15) * 5;
> >
> > Where does the +/- 15 come from? I can't find any evidence for this in
> > Annex E.
>
> I didn't double check Annex E. I just wanted to recover the lost
> frequencies that the 15 channels (182 - 196), map into 4.9 GHz.
"Recover"? When did they work? What broke them?
johannes
^ permalink raw reply
* Re: [PATCH] cfg80211: fix channel to frequency mapping in 5.9GHz range
From: Dennis H Jensen @ 2013-10-14 12:16 UTC (permalink / raw)
To: Johannes Berg; +Cc: linville, linux-wireless
In-Reply-To: <1381752176.13092.10.camel@jlt4.sipsolutions.net>
On Mon, 2013-10-14 at 14:02 +0200, Johannes Berg wrote:
> On Fri, 2013-10-11 at 17:45 +0200, Dennis H Jensen wrote:
>
> > > > + else if (chan > 196)
> > > > + return 5000 + (chan - 15) * 5;
> > >
> > > Where does the +/- 15 come from? I can't find any evidence for this in
> > > Annex E.
> >
> > I didn't double check Annex E. I just wanted to recover the lost
> > frequencies that the 15 channels (182 - 196), map into 4.9 GHz.
>
> "Recover"? When did they work? What broke them?
The commit 59eb21a6504731fc16db4cf9463065dd61093e08 moved those channels
to 4.9 GHz but left a hole in the 5.9 Ghz range.
//Dennis
^ permalink raw reply
* Re: [PATCH] cfg80211: fix channel to frequency mapping in 5.9GHz range
From: Johannes Berg @ 2013-10-14 14:02 UTC (permalink / raw)
To: Dennis H Jensen; +Cc: linville, linux-wireless
In-Reply-To: <1381752976.3711.14.camel@djensen-laptop>
On Mon, 2013-10-14 at 14:16 +0200, Dennis H Jensen wrote:
> On Mon, 2013-10-14 at 14:02 +0200, Johannes Berg wrote:
> > On Fri, 2013-10-11 at 17:45 +0200, Dennis H Jensen wrote:
> >
> > > > > + else if (chan > 196)
> > > > > + return 5000 + (chan - 15) * 5;
> > > >
> > > > Where does the +/- 15 come from? I can't find any evidence for this in
> > > > Annex E.
> > >
> > > I didn't double check Annex E. I just wanted to recover the lost
> > > frequencies that the 15 channels (182 - 196), map into 4.9 GHz.
> >
> > "Recover"? When did they work? What broke them?
>
> The commit 59eb21a6504731fc16db4cf9463065dd61093e08 moved those channels
> to 4.9 GHz but left a hole in the 5.9 Ghz range.
But there was no +/- 15 before, so what gives?
johannes
^ permalink raw reply
* Re: [Ilw] trouble with wireless AC 7260 in ubuntu 13.04
From: Seth Forshee @ 2013-10-14 14:06 UTC (permalink / raw)
To: Grumbach, Emmanuel, Ben Meiselman
Cc: linux-wireless@vger.kernel.org, ilw@linux.intel.com,
Yonah Meiselman
In-Reply-To: <0BA3FCBA62E2DC44AF3030971E174FB301DC1C5A@HASMSX103.ger.corp.intel.com>
On Sun, Oct 13, 2013 at 04:49:27AM +0000, Grumbach, Emmanuel wrote:
> Hi,
>
> First, please note that mails in any other format than plaintext won't go through the filters to the mailing list. So please, hit the plain text button in gmail.
>
>
> > Hello supporters,
>
> :)
>
> > I got your email addresses from here: http://wireless.kernel.org/en/users/Drivers/iwlwifi
> > (Also copying my brother on this email.)
>
> > I installed Ubuntu 13.04 on a new machine. It has an Intel Dual Band AC 7260 wireless card. I would like to connect to a wireless network but don't know how.
> > I put iwlwifi-7260-7.ucode into /lib/firmware
>
> I am not sure if Ubuntu 13.04 supports this new device already. I'd ask Seth Forshee (CCed).
> This device is supported starting from kernel 3.10 which AFAIK is not shipped with Ubuntu 13.04. They may very well have added a backport based driver.
Ubuntu 13.04 is using a 3.8 kernel. We'll be using 3.11 in the 13.10
release, which is due out this month. If you don't want to install a
newer kernel yourself you can either update to the 13.10 beta [1] or use
the backports project to get drivers from later kernels [2].
Seth
[1] http://fridge.ubuntu.com/2013/09/27/ubuntu-13-10-saucy-salamander-final-beta-released/
[2] https://backports.wiki.kernel.org
^ permalink raw reply
* Re: [PATCH v4 2/6] {nl,cfg,mac}80211: enable the triggering of CSA frame in mesh
From: Johannes Berg @ 2013-10-14 14:14 UTC (permalink / raw)
To: Chun-Yeow Yeoh; +Cc: linux-wireless, linville, devel, distro11s
In-Reply-To: <1381516190-23918-3-git-send-email-yeohchunyeow@cozybit.com>
On Fri, 2013-10-11 at 11:29 -0700, Chun-Yeow Yeoh wrote:
> Allow the triggering of CSA frame using mesh interface. The
> rules are more or less same with IBSS, such as not allowed to
> change between the band and channel width has to be same from
> the previous mode. Also, move the ieee80211_send_action_csa
> to a common space so that it can be re-used by mesh interface.
How will userspace know whether or not this is supported? Will it just
try and fail? Does it really not need to know?
johannes
^ permalink raw reply
* Re: [PATCH v4 3/6] mac80211: add the CSA and MCSP elements in mesh beaconing
From: Johannes Berg @ 2013-10-14 14:16 UTC (permalink / raw)
To: Chun-Yeow Yeoh; +Cc: linux-wireless, linville, devel, distro11s
In-Reply-To: <1381516190-23918-4-git-send-email-yeohchunyeow@cozybit.com>
On Fri, 2013-10-11 at 11:29 -0700, Chun-Yeow Yeoh wrote:
> /* Channel Switching Support */
> + struct cfg80211_csa_settings *csa_settings;
That should have an __rcu annotation now, I believe?
> + if (ifmsh->csa_settings) {
In which case this will result in a sparse warning.
Does this even make sense here - it can't ever be non-NULL in this
patch?
johannes
^ permalink raw reply
* Re: [PATCH v4 3/6] mac80211: add the CSA and MCSP elements in mesh beaconing
From: Johannes Berg @ 2013-10-14 14:18 UTC (permalink / raw)
To: Chun-Yeow Yeoh; +Cc: linux-wireless, linville, devel, distro11s
In-Reply-To: <1381516190-23918-4-git-send-email-yeohchunyeow@cozybit.com>
On Fri, 2013-10-11 at 11:29 -0700, Chun-Yeow Yeoh wrote:
> Support the adding of CSA and MCSP elements while building the beacon
> for mesh if necessary. This is defined in the IEEE Std 802.11-2012
> section 10.9.8.4.3 that both CSA and MCSP elements must be included
> in beacon and probe response frames until the intended channel
> switch time.
I also get
net/mac80211/mesh.c:673:42: warning: symbol 'ifmsh' shadows an earlier
one
net/mac80211/mesh.c:606:29: originally declared here
with this patch
^ permalink raw reply
* Re: [PATCH v4 5/6] {nl,cfg,mac}80211: finalizing mesh channel switching
From: Johannes Berg @ 2013-10-14 14:22 UTC (permalink / raw)
To: Chun-Yeow Yeoh; +Cc: linux-wireless, linville, devel, distro11s
In-Reply-To: <1381516190-23918-6-git-send-email-yeohchunyeow@cozybit.com>
On Fri, 2013-10-11 at 11:29 -0700, Chun-Yeow Yeoh wrote:
> finalizing
subject should read "finalize" or something I guess? Though it really
isn't clear to me why you split up the patches as is and didn't just put
3/5 together as "implement mesh channel switch userspace API" or so?
> struct cfg80211_csa_settings {
> + struct rcu_head rcu_head;
I don't think this belongs here, it's certainly not needed for the API.
Maybe you need a wrapper struct or so?
johannes
^ permalink raw reply
* Re: [PATCH] cfg80211: fix channel to frequency mapping in 5.9GHz range
From: Dennis H Jensen @ 2013-10-14 14:58 UTC (permalink / raw)
To: Johannes Berg; +Cc: linville, linux-wireless
In-Reply-To: <1381759370.13092.11.camel@jlt4.sipsolutions.net>
On Mon, 2013-10-14 at 16:02 +0200, Johannes Berg wrote:
> On Mon, 2013-10-14 at 14:16 +0200, Dennis H Jensen wrote:
> > On Mon, 2013-10-14 at 14:02 +0200, Johannes Berg wrote:
> > > On Fri, 2013-10-11 at 17:45 +0200, Dennis H Jensen wrote:
> > >
> > > > > > + else if (chan > 196)
> > > > > > + return 5000 + (chan - 15) * 5;
> > > > >
> > > > > Where does the +/- 15 come from? I can't find any evidence for this in
> > > > > Annex E.
> > > >
> > > > I didn't double check Annex E. I just wanted to recover the lost
> > > > frequencies that the 15 channels (182 - 196), map into 4.9 GHz.
> > >
> > > "Recover"? When did they work? What broke them?
> >
> > The commit 59eb21a6504731fc16db4cf9463065dd61093e08 moved those channels
> > to 4.9 GHz but left a hole in the 5.9 Ghz range.
>
> But there was no +/- 15 before, so what gives?
Well no :) but there also wasn't a special case for that particular
channel set (182 - 196).
So now, when you configure the frequency 5910, it is mapped to channel
182 which is mapped back to 4910 and nothing works, at least let the
functions be the inverse of the other.
In case that doesn't do it. What is needed to get channel 182 to be 5910
MHz as Annex E defines for the US and Europe? Channel to frequency
mapping based on operating class?
//Dennis
^ permalink raw reply
* Re: [PATCH] cfg80211: fix channel to frequency mapping in 5.9GHz range
From: Johannes Berg @ 2013-10-14 15:06 UTC (permalink / raw)
To: Dennis H Jensen; +Cc: linville, linux-wireless
In-Reply-To: <1381762681.3711.36.camel@djensen-laptop>
On Mon, 2013-10-14 at 16:58 +0200, Dennis H Jensen wrote:
> > > The commit 59eb21a6504731fc16db4cf9463065dd61093e08 moved those channels
> > > to 4.9 GHz but left a hole in the 5.9 Ghz range.
> >
> > But there was no +/- 15 before, so what gives?
>
> Well no :) but there also wasn't a special case for that particular
> channel set (182 - 196).
Yes, but then before 5910 would have been channel 182. Now you're making
it channel 197. That doesn't really make sense at all.
> So now, when you configure the frequency 5910, it is mapped to channel
> 182 which is mapped back to 4910 and nothing works, at least let the
> functions be the inverse of the other.
>
> In case that doesn't do it. What is needed to get channel 182 to be 5910
> MHz as Annex E defines for the US and Europe? Channel to frequency
> mapping based on operating class?
Annex E is the 802.11 spec, to get something into that ...
johannes
^ permalink raw reply
* Re: [PATCH] ath10k: do not warn about unsupported vdev param
From: Kalle Valo @ 2013-10-14 15:46 UTC (permalink / raw)
To: Bartosz Markowski; +Cc: ath10k, linux-wireless
In-Reply-To: <1381749381-15459-1-git-send-email-bartosz.markowski@tieto.com>
Bartosz Markowski <bartosz.markowski@tieto.com> writes:
> 10.X firmware does not support WMI_VDEV_PARAM_TX_ENCAP_TYPE.
> It's a known limitation and we should not warn about this.
>
> Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
> ---
> drivers/net/wireless/ath/ath10k/mac.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
> index 049eca2..9c800f8 100644
> --- a/drivers/net/wireless/ath/ath10k/mac.c
> +++ b/drivers/net/wireless/ath/ath10k/mac.c
> @@ -2085,7 +2085,9 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
> vdev_param = ar->wmi.vdev_param->tx_encap_type;
> ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
> ATH10K_HW_TXRX_NATIVE_WIFI);
> - if (ret)
> +
> + /* 10.X firmware does not support this VDEV parameter. Do not warn */
> + if (ret && !test_bit(ATH10K_FW_FEATURE_WMI_10X, ar->fw_features))
> ath10k_warn("Failed to set TX encap: %d\n", ret);
But why call ath10k_wmi_vdev_set_param() even if we know it won't work?
IMHO it's cleaner not to call it at all when ATH10K_FW_FEATURE_WMI_10X
is set.
Or if we want to avoid using ATH10K_FW_FEATURE_WMI_10X we could also
change ath10k_wmi_pdev_set_param() to return -EOPNOTSUPP and check for
that.
--
Kalle Valo
^ permalink raw reply
* [PATCH] mac80211: add ieee80211_tx_prepare_skb() helper function
From: Felix Fietkau @ 2013-10-14 16:01 UTC (permalink / raw)
To: linux-wireless; +Cc: johannes
This can be used by a driver to prepare skbs for transmission, which were
obtained via functions such as ieee80211_probereq_get or
ieee80211_nullfunc_get.
This is useful for drivers that want to send those frames directly, but
need rate control information to be prepared first.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
include/net/mac80211.h | 14 ++++++++++++++
net/mac80211/tx.c | 29 +++++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index f386c48..cf2f32a 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -4567,4 +4567,18 @@ void ieee80211_report_wowlan_wakeup(struct ieee80211_vif *vif,
struct cfg80211_wowlan_wakeup *wakeup,
gfp_t gfp);
+/**
+ * ieee80211_tx_prepare_skb - prepare an 802.11 skb for transmission
+ * @hw: pointer as obtained from ieee80211_alloc_hw()
+ * @vif: virtual interface
+ * @skb: frame to be sent from within the driver
+ * @band: the band to transmit on
+ * @sta: optional pointer to get the station to send the frame to
+ *
+ * Note: must be called under RCU lock
+ */
+bool ieee80211_tx_prepare_skb(struct ieee80211_hw *hw,
+ struct ieee80211_vif *vif, struct sk_buff *skb,
+ int band, struct ieee80211_sta **sta);
+
#endif /* MAC80211_H */
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 9993fcb..4340aa7 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1367,6 +1367,35 @@ static int invoke_tx_handlers(struct ieee80211_tx_data *tx)
return 0;
}
+bool ieee80211_tx_prepare_skb(struct ieee80211_hw *hw,
+ struct ieee80211_vif *vif, struct sk_buff *skb,
+ int band, struct ieee80211_sta **sta)
+{
+ struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
+ struct ieee80211_tx_data tx;
+
+ if (ieee80211_tx_prepare(sdata, &tx, skb) == TX_DROP)
+ return false;
+
+ info->band = band;
+ info->control.vif = vif;
+ info->hw_queue = vif->hw_queue[skb_get_queue_mapping(skb)];
+
+ if (invoke_tx_handlers(&tx))
+ return false;
+
+ if (sta) {
+ if (tx.sta)
+ *sta = &tx.sta->sta;
+ else
+ *sta = NULL;
+ }
+
+ return true;
+}
+EXPORT_SYMBOL(ieee80211_tx_prepare_skb);
+
/*
* Returns false if the frame couldn't be transmitted but was queued instead.
*/
--
1.8.0.2
^ permalink raw reply related
* Re: [PATCH] ath10k: do not warn about unsupported vdev param
From: Bartosz Markowski @ 2013-10-14 16:06 UTC (permalink / raw)
To: Kalle Valo; +Cc: ath10k, linux-wireless@vger.kernel.org
In-Reply-To: <87fvs3etz6.fsf@kamboji.qca.qualcomm.com>
On 14 October 2013 17:46, Kalle Valo <kvalo@qca.qualcomm.com> wrote:
> Bartosz Markowski <bartosz.markowski@tieto.com> writes:
>
>> 10.X firmware does not support WMI_VDEV_PARAM_TX_ENCAP_TYPE.
>> It's a known limitation and we should not warn about this.
>>
>> Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
>> ---
>> drivers/net/wireless/ath/ath10k/mac.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
>> index 049eca2..9c800f8 100644
>> --- a/drivers/net/wireless/ath/ath10k/mac.c
>> +++ b/drivers/net/wireless/ath/ath10k/mac.c
>> @@ -2085,7 +2085,9 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
>> vdev_param = ar->wmi.vdev_param->tx_encap_type;
>> ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
>> ATH10K_HW_TXRX_NATIVE_WIFI);
>> - if (ret)
>> +
>> + /* 10.X firmware does not support this VDEV parameter. Do not warn */
>> + if (ret && !test_bit(ATH10K_FW_FEATURE_WMI_10X, ar->fw_features))
>> ath10k_warn("Failed to set TX encap: %d\n", ret);
>
> But why call ath10k_wmi_vdev_set_param() even if we know it won't work?
> IMHO it's cleaner not to call it at all when ATH10K_FW_FEATURE_WMI_10X
> is set.
I tend to agree. Intention was to keep things generic and just hide the warning.
> Or if we want to avoid using ATH10K_FW_FEATURE_WMI_10X we could also
> change ath10k_wmi_pdev_set_param() to return -EOPNOTSUPP and check for
> that.
I like the second idea. I will send a v2 patch.
--
Bartosz
^ permalink raw reply
* Re: [PATCH v4 3/6] mac80211: add the CSA and MCSP elements in mesh beaconing
From: Chun-Yeow Yeoh @ 2013-10-14 17:15 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless, John Linville, devel, distro11s@cozybit.com
In-Reply-To: <1381760191.13092.13.camel@jlt4.sipsolutions.net>
On Mon, Oct 14, 2013 at 10:16 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Fri, 2013-10-11 at 11:29 -0700, Chun-Yeow Yeoh wrote:
>
>> /* Channel Switching Support */
>> + struct cfg80211_csa_settings *csa_settings;
>
> That should have an __rcu annotation now, I believe?
>
>> + if (ifmsh->csa_settings) {
>
> In which case this will result in a sparse warning.
>
> Does this even make sense here - it can't ever be non-NULL in this
> patch?
Actually, the NULL and non-NULL situation should occur here. Whenever
the node triggers the channel switching period, it will append CSA and
MCSP elements in the beacon. So in this case, ifmsh->csa_settings
should be non-NULL. Once the channel switching count based on TBTT is
expired, ifmsh->csa_setting should be NULL, and both elements no
longer append to the beacon. Does it make sense?
---
Chun-Yeow
^ permalink raw reply
* Re: [PATCH v4 2/6] {nl,cfg,mac}80211: enable the triggering of CSA frame in mesh
From: Chun-Yeow Yeoh @ 2013-10-14 17:15 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless, John Linville, devel, distro11s@cozybit.com
In-Reply-To: <1381760087.13092.12.camel@jlt4.sipsolutions.net>
> How will userspace know whether or not this is supported? Will it just
> try and fail? Does it really not need to know?
The userspace will only try and fail at the time being. If it is
failed, the initiator will still remain at the current operating
channel.
---
Chun-Yeow
^ 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