mac80211 and multiple RX queues (with RSS hashing)
Hi, We're currently investigating how to best add RSS hashing to the wireless stack. Let's say, for the sake of discussion, that we'll add a function to mac80211 called ieee80211_rx_napi_mq(struct hw *, struct napi_struct *, struct sk_buff *); and (depending on the outcome of the design) the driver would have to set the skb_queue_mapping to the queue this packet was received on. For context, there are a few requirements for callers of this function - here are the ones I'm planning: * It would only support (non-null) data frames, management frames must not be passed to the new API, but must be passed to the regular ieee80211_rx() function. * I'm not going to support ieee80211_rx_irqsafe() with this API, it would be quite pointless (or a lot of code to have per-queue tasklets?) * Won't support software crypto (PN checking can't really work in parallel) * Won't support monitor mode, and probably a few other similar things (TBD) * Won't support defragmentation (fragmented must anyway either be reassembled for hashing or somehow not hashed perhaps) * Won't support client powersave in mac80211 - uh ... just say no to that! * For not, I'm not planning to support mesh on this, maybe not even IBSS. * Duplicate detection must be handled by hardware/firmware or similar (possibly could be done with HW assist in driver, but clearly that cannot be handled generically in mac80211) * RX aggregation reordering done by hardware/firmware or similar (same here) * require a NAPI struct? (not really sure yet how the stack treats parallel RX) Of course these don't really seem fairly natural so far, by the nature of using multiple queues. There are a few other areas that are of more concern: a) Statistics Obviously, we can no longer have single counters. Using atomic counters would kill much of the benefit of having multiple queues to start with, so in some way we need to have multiple counters. b) handling AP/GO powersaving clients With RSS, we can end up with various races - right now we say TX status and RX must be serialized by the driver, but clearly that can no longer be guaranteed with multiple RX queues. [also need to check if there are *other* things that require serialization] c) aggregation session timeout/reorder timer handling There's a single field/timer (for each of this) per session, obviously it's not a great idea to hit these from multiple CPUs. Let's take these one by one: a) This is probably the biggest one. We have a LOT of statistics that we keep, and they all rely on RX being serialized. For example, per-station RX packet and byte counters. Making all of these atomic would be correct, but would obviously kill much of the performance benefit of RSS. As a consequence, I see two possible solutions here: a1) Just make this the driver's concern, change sta_set_sinfo() to not provide any (with a few exceptions) mac80211 statistics when multi-queue RX is used. This could mean the same kind of statistics code is in each driver, if the driver supports the statistics at all - or it could mean that we cause a lot of divergence with statistics between drivers. a2) Alternatively, drivers could tell mac80211 before-hand how many queues they'll use, pass a queue identifier to mac80211 for each packet (e.g. in skb's queue_mapping) and have mac80211 gather per-queue statistics that get combined when read. This means allocating separate statistics/queue arrays for stations etc. in mac80211, and then using u64_stats_update_begin() etc. to get a consistent reading like we do with per-cpu netdev stats already (since my fairly recent patch.) Clearly this cannot support the "average" values like "average signal strength" and the "last packet signal strength" might not always be really the very last packet (which doesn't really matter though) so those would still have to be excluded and generated by the driver, but it could mean a bit more code sharing (if more than our driver ends up using this facility) and more consistency. The downside might be that if drivers want to do statistics in the firmware or so, they'd waste the extra cycles on the host. I don't think we're planning to do that for now though. b) I think this one is pretty simple - just require the driver to set AP_LINK_PS and if necessary call ieee80211_sta_ps_transition(). However, it might require adding more logic for U-APSD support depending on the hardware design. c) I'm not really sure about this. I think it really needs hardware assist. Does anyone else have any thoughts? johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] staging: wilc1000: remove oswrapper & type file
remove OS Wrapper & Type files. now does not used os wrapper file. type file is included os wrapper file. so delete files and rework include method. Signed-off-by: Dean Lee --- drivers/staging/wilc1000/coreconfigurator.h | 1 - drivers/staging/wilc1000/fifo_buffer.c | 1 - drivers/staging/wilc1000/fifo_buffer.h | 5 +++- drivers/staging/wilc1000/host_interface.c | 1 - drivers/staging/wilc1000/wilc_memory.c | 2 +- drivers/staging/wilc1000/wilc_memory.h | 4 ++- drivers/staging/wilc1000/wilc_msgqueue.c| 2 +- drivers/staging/wilc1000/wilc_msgqueue.h| 5 drivers/staging/wilc1000/wilc_oswrapper.h | 41 - drivers/staging/wilc1000/wilc_sleep.c | 2 +- drivers/staging/wilc1000/wilc_sleep.h | 3 +++ drivers/staging/wilc1000/wilc_strutils.c| 2 +- drivers/staging/wilc1000/wilc_strutils.h| 4 +++ drivers/staging/wilc1000/wilc_timer.c | 2 +- drivers/staging/wilc1000/wilc_timer.h | 3 +++ drivers/staging/wilc1000/wilc_type.h| 34 drivers/staging/wilc1000/wilc_wlan.h| 2 +- drivers/staging/wilc1000/wilc_wlan_if.h | 10 ++- 18 files changed, 37 insertions(+), 87 deletions(-) delete mode 100644 drivers/staging/wilc1000/wilc_oswrapper.h delete mode 100644 drivers/staging/wilc1000/wilc_type.h diff --git a/drivers/staging/wilc1000/coreconfigurator.h b/drivers/staging/wilc1000/coreconfigurator.h index 697ceb1..f2f6e64 100644 --- a/drivers/staging/wilc1000/coreconfigurator.h +++ b/drivers/staging/wilc1000/coreconfigurator.h @@ -12,7 +12,6 @@ #ifndef CORECONFIGURATOR_H #define CORECONFIGURATOR_H -#include "wilc_oswrapper.h" #include "wilc_wlan_if.h" /*/ /* Constants */ diff --git a/drivers/staging/wilc1000/fifo_buffer.c b/drivers/staging/wilc1000/fifo_buffer.c index c801406..b6c07cf 100644 --- a/drivers/staging/wilc1000/fifo_buffer.c +++ b/drivers/staging/wilc1000/fifo_buffer.c @@ -1,6 +1,5 @@ -#include "wilc_oswrapper.h" #include "fifo_buffer.h" diff --git a/drivers/staging/wilc1000/fifo_buffer.h b/drivers/staging/wilc1000/fifo_buffer.h index 57f7732..7b76998 100644 --- a/drivers/staging/wilc1000/fifo_buffer.h +++ b/drivers/staging/wilc1000/fifo_buffer.h @@ -1,5 +1,8 @@ -#include "wilc_oswrapper.h" +#include +#include +#include "wilc_memory.h" +#include "wilc_strutils.h" #define tHANDLEvoid * diff --git a/drivers/staging/wilc1000/host_interface.c b/drivers/staging/wilc1000/host_interface.c index a1e90a5..60245b1 100644 --- a/drivers/staging/wilc1000/host_interface.c +++ b/drivers/staging/wilc1000/host_interface.c @@ -1,5 +1,4 @@ #include "host_interface.h" -#include "wilc_oswrapper.h" #include "itypes.h" #include "coreconfigurator.h" diff --git a/drivers/staging/wilc1000/wilc_memory.c b/drivers/staging/wilc1000/wilc_memory.c index 080fa61..ca6850c7 100644 --- a/drivers/staging/wilc1000/wilc_memory.c +++ b/drivers/staging/wilc1000/wilc_memory.c @@ -1,5 +1,5 @@ -#include "wilc_oswrapper.h" +#include "wilc_memory.h" /*! * @authorsyounan diff --git a/drivers/staging/wilc1000/wilc_memory.h b/drivers/staging/wilc1000/wilc_memory.h index 93642d0..a7a80e5 100644 --- a/drivers/staging/wilc1000/wilc_memory.h +++ b/drivers/staging/wilc1000/wilc_memory.h @@ -10,6 +10,9 @@ * @version 1.0 */ +#include +#include + /*! * @struct tstrWILC_MemoryAttrs * @brief Memory API options @@ -234,4 +237,3 @@ void WILC_MemoryFree(const void *pvBlock, tstrWILC_MemoryAttrs *strAttrs, #endif - diff --git a/drivers/staging/wilc1000/wilc_msgqueue.c b/drivers/staging/wilc1000/wilc_msgqueue.c index 04fe5a5..16bcef4 100644 --- a/drivers/staging/wilc1000/wilc_msgqueue.c +++ b/drivers/staging/wilc1000/wilc_msgqueue.c @@ -1,5 +1,5 @@ -#include "wilc_oswrapper.h" +#include "wilc_msgqueue.h" #include /*! diff --git a/drivers/staging/wilc1000/wilc_msgqueue.h b/drivers/staging/wilc1000/wilc_msgqueue.h index 2ca02db..35b1001 100644 --- a/drivers/staging/wilc1000/wilc_msgqueue.h +++ b/drivers/staging/wilc1000/wilc_msgqueue.h @@ -10,6 +10,11 @@ * @version 1.0 */ +#include "wilc_platform.h" +#include "wilc_errorsupport.h" +#include "wilc_memory.h" +#include "wilc_strutils.h" + /*! * @struct tstrWILC_MsgQueueAttrs * @brief Message Queue API options diff --git a/drivers/staging/wilc1000/wilc_oswrapper.h b/drivers/staging/wilc1000/wilc_oswrapper.h deleted file mode 100644 index e97aa96..000 --- a/drivers/staging/wilc1000/wilc_oswrapper.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef __WILC_OSWRAPPER_H__ -#define __WILC_OSWRAPPER_H__ - -/*! - * @file wilc_oswrapper.h - * @brief Top level OS Wrapper, include this file and it will include all - * other files as necessary - * @authorsyounan - * @d
Re: [PATCH] staging: wilc1000: remove oswrapper & type file
On 06/12, Dean Lee wrote: > remove OS Wrapper & Type files. > now does not used os wrapper file. > type file is included os wrapper file. > so delete files and rework include method. I do not understand the commit message and it does not parse well. - konrad > > Signed-off-by: Dean Lee > --- > drivers/staging/wilc1000/coreconfigurator.h | 1 - > drivers/staging/wilc1000/fifo_buffer.c | 1 - > drivers/staging/wilc1000/fifo_buffer.h | 5 +++- > drivers/staging/wilc1000/host_interface.c | 1 - > drivers/staging/wilc1000/wilc_memory.c | 2 +- > drivers/staging/wilc1000/wilc_memory.h | 4 ++- > drivers/staging/wilc1000/wilc_msgqueue.c| 2 +- > drivers/staging/wilc1000/wilc_msgqueue.h| 5 > drivers/staging/wilc1000/wilc_oswrapper.h | 41 > - > drivers/staging/wilc1000/wilc_sleep.c | 2 +- > drivers/staging/wilc1000/wilc_sleep.h | 3 +++ > drivers/staging/wilc1000/wilc_strutils.c| 2 +- > drivers/staging/wilc1000/wilc_strutils.h| 4 +++ > drivers/staging/wilc1000/wilc_timer.c | 2 +- > drivers/staging/wilc1000/wilc_timer.h | 3 +++ > drivers/staging/wilc1000/wilc_type.h| 34 > drivers/staging/wilc1000/wilc_wlan.h| 2 +- > drivers/staging/wilc1000/wilc_wlan_if.h | 10 ++- > 18 files changed, 37 insertions(+), 87 deletions(-) > delete mode 100644 drivers/staging/wilc1000/wilc_oswrapper.h > delete mode 100644 drivers/staging/wilc1000/wilc_type.h > > diff --git a/drivers/staging/wilc1000/coreconfigurator.h > b/drivers/staging/wilc1000/coreconfigurator.h > index 697ceb1..f2f6e64 100644 > --- a/drivers/staging/wilc1000/coreconfigurator.h > +++ b/drivers/staging/wilc1000/coreconfigurator.h > @@ -12,7 +12,6 @@ > #ifndef CORECONFIGURATOR_H > #define CORECONFIGURATOR_H > > -#include "wilc_oswrapper.h" > #include "wilc_wlan_if.h" > > /*/ > /* Constants > */ > diff --git a/drivers/staging/wilc1000/fifo_buffer.c > b/drivers/staging/wilc1000/fifo_buffer.c > index c801406..b6c07cf 100644 > --- a/drivers/staging/wilc1000/fifo_buffer.c > +++ b/drivers/staging/wilc1000/fifo_buffer.c > @@ -1,6 +1,5 @@ > > > -#include "wilc_oswrapper.h" > #include "fifo_buffer.h" > > > diff --git a/drivers/staging/wilc1000/fifo_buffer.h > b/drivers/staging/wilc1000/fifo_buffer.h > index 57f7732..7b76998 100644 > --- a/drivers/staging/wilc1000/fifo_buffer.h > +++ b/drivers/staging/wilc1000/fifo_buffer.h > @@ -1,5 +1,8 @@ > > -#include "wilc_oswrapper.h" > +#include > +#include > +#include "wilc_memory.h" > +#include "wilc_strutils.h" > > > #define tHANDLE void * > diff --git a/drivers/staging/wilc1000/host_interface.c > b/drivers/staging/wilc1000/host_interface.c > index a1e90a5..60245b1 100644 > --- a/drivers/staging/wilc1000/host_interface.c > +++ b/drivers/staging/wilc1000/host_interface.c > @@ -1,5 +1,4 @@ > #include "host_interface.h" > -#include "wilc_oswrapper.h" > #include "itypes.h" > #include "coreconfigurator.h" > > diff --git a/drivers/staging/wilc1000/wilc_memory.c > b/drivers/staging/wilc1000/wilc_memory.c > index 080fa61..ca6850c7 100644 > --- a/drivers/staging/wilc1000/wilc_memory.c > +++ b/drivers/staging/wilc1000/wilc_memory.c > @@ -1,5 +1,5 @@ > > -#include "wilc_oswrapper.h" > +#include "wilc_memory.h" > > /*! > * @author syounan > diff --git a/drivers/staging/wilc1000/wilc_memory.h > b/drivers/staging/wilc1000/wilc_memory.h > index 93642d0..a7a80e5 100644 > --- a/drivers/staging/wilc1000/wilc_memory.h > +++ b/drivers/staging/wilc1000/wilc_memory.h > @@ -10,6 +10,9 @@ > * @version 1.0 > */ > > +#include > +#include > + > /*! > * @struct tstrWILC_MemoryAttrs > * @brief Memory API options > @@ -234,4 +237,3 @@ void WILC_MemoryFree(const void *pvBlock, > tstrWILC_MemoryAttrs *strAttrs, > > > #endif > - > diff --git a/drivers/staging/wilc1000/wilc_msgqueue.c > b/drivers/staging/wilc1000/wilc_msgqueue.c > index 04fe5a5..16bcef4 100644 > --- a/drivers/staging/wilc1000/wilc_msgqueue.c > +++ b/drivers/staging/wilc1000/wilc_msgqueue.c > @@ -1,5 +1,5 @@ > > -#include "wilc_oswrapper.h" > +#include "wilc_msgqueue.h" > #include > > /*! > diff --git a/drivers/staging/wilc1000/wilc_msgqueue.h > b/drivers/staging/wilc1000/wilc_msgqueue.h > index 2ca02db..35b1001 100644 > --- a/drivers/staging/wilc1000/wilc_msgqueue.h > +++ b/drivers/staging/wilc1000/wilc_msgqueue.h > @@ -10,6 +10,11 @@ > * @version 1.0 > */ > > +#include "wilc_platform.h" > +#include "wilc_errorsupport.h" > +#include "wilc_memory.h" > +#include "wilc_strutils.h" > + > /*! > * @struct tstrWILC_MsgQueueAttrs > * @brief Message Queue API options > diff --git a/drivers/staging/wilc1000/wilc_oswrapper.h > b/drivers/staging/wilc1000/wilc_o
[PATCH] staging: wilc1000: remove warnings reported by checkpatch.pl.
Remove the following warnings in the wilc_log.h: - unnecessary whitespace before a quoted newline - line over 80 characters - single statement macros should not use a do {} while (0) loop. Signed-off-by: Dean Lee --- drivers/staging/wilc1000/wilc_log.h | 53 + 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_log.h b/drivers/staging/wilc1000/wilc_log.h index 2269ebd..93f467a 100644 --- a/drivers/staging/wilc1000/wilc_log.h +++ b/drivers/staging/wilc1000/wilc_log.h @@ -2,46 +2,53 @@ #define __WILC_LOG_H__ /* Errors will always get printed */ -#define WILC_ERROR(...) do { WILC_PRINTF("(ERR)(%s:%d) ", __WILC_FUNCTION__, __WILC_LINE__); \ - WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_ERROR(...) \ +do { \ + WILC_PRINTF("(ERR)(%s:%d)", __WILC_FUNCTION__, __WILC_LINE__); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) /* Wraning only printed if verbosity is 1 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 0) -#define WILC_WARN(...) do { WILC_PRINTF("(WRN)"); \ - WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_WARN(...) \ +do { \ + WILC_PRINTF("(WRN)"); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) #else -#define WILC_WARN(...) (0) +#define WILC_WARN(...) (0) #endif /* Info only printed if verbosity is 2 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 1) -#define WILC_INFO(...) do { WILC_PRINTF("(INF)"); \ -WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_INFO(...) \ +do { \ + WILC_PRINTF("(INF)"); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) #else -#define WILC_INFO(...) (0) +#define WILC_INFO(...) (0) #endif /* Debug is only printed if verbosity is 3 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 2) -#define WILC_DBG(...) do { WILC_PRINTF("(DBG)(%s:%d) ", __WILC_FUNCTION__, __WILC_LINE__); \ - WILC_PRINTF(__VA_ARGS__); \ - } while (0) - +#define WILC_DBG(...) \ +do { \ + WILC_PRINTF("(DBG)(%s:%d)", __WILC_FUNCTION__, __WILC_LINE__); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) #else -#define WILC_DBG(...) (0) +#define WILC_DBG(...) (0) #endif /* Function In/Out is only printed if verbosity is 4 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 3) -#define WILC_FN_IN do { WILC_PRINTF("(FIN) (%s:%d) \n", __WILC_FUNCTION__, __WILC_LINE__); } while (0) -#define WILC_FN_OUT(ret) do { WILC_PRINTF("(FOUT) (%s:%d) %d.\n", __WILC_FUNCTION__, __WILC_LINE__, (ret)); } while (0) +#define WILC_FN_IN \ + WILC_PRINTF("(FIN)(%s:%d)\n", __WILC_FUNCTION__, __WILC_LINE__) +#define WILC_FN_OUT(ret) \ + WILC_PRINTF("(FOUT)(%s:%d)%d\n", __WILC_FUNCTION__, __WILC_LINE__, ret) #else -#define WILC_FN_IN (0) -#define WILC_FN_OUT(ret) (0) +#define WILC_FN_IN (0) +#define WILC_FN_OUT(ret) (0) +#endif #endif - - -#endif \ No newline at end of file -- 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] staging: wilc1000: remove oswrapper & type file
On 06/12, Dean.lee wrote: > > > On 2015๋ 06์ 12์ผ 18:17, Konrad Zapalowicz wrote: > >On 06/12, Dean Lee wrote: > >>remove OS Wrapper & Type files. > >>now does not used os wrapper file. > >>type file is included os wrapper file. > >>so delete files and rework include method. > >I do not understand the commit message and it does not parse well. > > > > - konrad > Sorry. my english language skill is very poor...:'-( > > remove OS Wrapper function(wilc_oswrapper.h) is in our plan. > i try removed OS Wrapper function and it's done. > and i found wilc_type.h file is does not used it. > so i deleted them and modify #include line in another file. This is better now. Just focus on what has been done [that is do not write 'try'] and send the v2 of this patch with updated commit message. Thanks - konrad > thanks for your comment. > > B.R > > dean > > >>Signed-off-by: Dean Lee > >>--- > >> drivers/staging/wilc1000/coreconfigurator.h | 1 - > >> drivers/staging/wilc1000/fifo_buffer.c | 1 - > >> drivers/staging/wilc1000/fifo_buffer.h | 5 +++- > >> drivers/staging/wilc1000/host_interface.c | 1 - > >> drivers/staging/wilc1000/wilc_memory.c | 2 +- > >> drivers/staging/wilc1000/wilc_memory.h | 4 ++- > >> drivers/staging/wilc1000/wilc_msgqueue.c| 2 +- > >> drivers/staging/wilc1000/wilc_msgqueue.h| 5 > >> drivers/staging/wilc1000/wilc_oswrapper.h | 41 > >> - > >> drivers/staging/wilc1000/wilc_sleep.c | 2 +- > >> drivers/staging/wilc1000/wilc_sleep.h | 3 +++ > >> drivers/staging/wilc1000/wilc_strutils.c| 2 +- > >> drivers/staging/wilc1000/wilc_strutils.h| 4 +++ > >> drivers/staging/wilc1000/wilc_timer.c | 2 +- > >> drivers/staging/wilc1000/wilc_timer.h | 3 +++ > >> drivers/staging/wilc1000/wilc_type.h| 34 > >> drivers/staging/wilc1000/wilc_wlan.h| 2 +- > >> drivers/staging/wilc1000/wilc_wlan_if.h | 10 ++- > >> 18 files changed, 37 insertions(+), 87 deletions(-) > >> delete mode 100644 drivers/staging/wilc1000/wilc_oswrapper.h > >> delete mode 100644 drivers/staging/wilc1000/wilc_type.h > >> > >>diff --git a/drivers/staging/wilc1000/coreconfigurator.h > >>b/drivers/staging/wilc1000/coreconfigurator.h > >>index 697ceb1..f2f6e64 100644 > >>--- a/drivers/staging/wilc1000/coreconfigurator.h > >>+++ b/drivers/staging/wilc1000/coreconfigurator.h > >>@@ -12,7 +12,6 @@ > >> #ifndef CORECONFIGURATOR_H > >> #define CORECONFIGURATOR_H > >>-#include "wilc_oswrapper.h" > >> #include "wilc_wlan_if.h" > >> > >> /*/ > >> /* Constants > >>*/ > >>diff --git a/drivers/staging/wilc1000/fifo_buffer.c > >>b/drivers/staging/wilc1000/fifo_buffer.c > >>index c801406..b6c07cf 100644 > >>--- a/drivers/staging/wilc1000/fifo_buffer.c > >>+++ b/drivers/staging/wilc1000/fifo_buffer.c > >>@@ -1,6 +1,5 @@ > >>-#include "wilc_oswrapper.h" > >> #include "fifo_buffer.h" > >>diff --git a/drivers/staging/wilc1000/fifo_buffer.h > >>b/drivers/staging/wilc1000/fifo_buffer.h > >>index 57f7732..7b76998 100644 > >>--- a/drivers/staging/wilc1000/fifo_buffer.h > >>+++ b/drivers/staging/wilc1000/fifo_buffer.h > >>@@ -1,5 +1,8 @@ > >>-#include "wilc_oswrapper.h" > >>+#include > >>+#include > >>+#include "wilc_memory.h" > >>+#include "wilc_strutils.h" > >> #define tHANDLE void * > >>diff --git a/drivers/staging/wilc1000/host_interface.c > >>b/drivers/staging/wilc1000/host_interface.c > >>index a1e90a5..60245b1 100644 > >>--- a/drivers/staging/wilc1000/host_interface.c > >>+++ b/drivers/staging/wilc1000/host_interface.c > >>@@ -1,5 +1,4 @@ > >> #include "host_interface.h" > >>-#include "wilc_oswrapper.h" > >> #include "itypes.h" > >> #include "coreconfigurator.h" > >>diff --git a/drivers/staging/wilc1000/wilc_memory.c > >>b/drivers/staging/wilc1000/wilc_memory.c > >>index 080fa61..ca6850c7 100644 > >>--- a/drivers/staging/wilc1000/wilc_memory.c > >>+++ b/drivers/staging/wilc1000/wilc_memory.c > >>@@ -1,5 +1,5 @@ > >>-#include "wilc_oswrapper.h" > >>+#include "wilc_memory.h" > >> /*! > >> * @author syounan > >>diff --git a/drivers/staging/wilc1000/wilc_memory.h > >>b/drivers/staging/wilc1000/wilc_memory.h > >>index 93642d0..a7a80e5 100644 > >>--- a/drivers/staging/wilc1000/wilc_memory.h > >>+++ b/drivers/staging/wilc1000/wilc_memory.h > >>@@ -10,6 +10,9 @@ > >> * @version 1.0 > >> */ > >>+#include > >>+#include > >>+ > >> /*! > >> * @struct tstrWILC_MemoryAttrs > >> * @briefMemory API options > >>@@ -234,4 +237,3 @@ void WILC_MemoryFree(const void *pvBlock, > >>tstrWILC_MemoryAttrs *strAttrs, > >> #endif > >>- > >>diff --git a/drivers/staging/wilc1000/wilc_msgqueue.c > >>b/drivers/staging/wilc1000/wilc_msgqueue.c > >>index 04fe5a5..16bcef4 100644 > >>--- a/drivers/st
[PATCH v2] staging: wilc1000: remove oswrapper & type file
remove OS Wrapper function(wilc_oswrapper.h) is in our plan. i try removed OS Wrapper function and it's done. and i found wilc_type.h file is does not used it. so i deleted them and modify #include line in another file. Signed-off-by: Dean Lee --- Change modify commit message. --- drivers/staging/wilc1000/coreconfigurator.h | 1 - drivers/staging/wilc1000/fifo_buffer.c | 1 - drivers/staging/wilc1000/fifo_buffer.h | 5 ++- drivers/staging/wilc1000/host_interface.c | 1 - drivers/staging/wilc1000/wilc_log.h | 53 - drivers/staging/wilc1000/wilc_memory.c | 2 +- drivers/staging/wilc1000/wilc_memory.h | 4 ++- drivers/staging/wilc1000/wilc_msgqueue.c| 2 +- drivers/staging/wilc1000/wilc_msgqueue.h| 5 +++ drivers/staging/wilc1000/wilc_oswrapper.h | 41 -- drivers/staging/wilc1000/wilc_sleep.c | 2 +- drivers/staging/wilc1000/wilc_sleep.h | 3 ++ drivers/staging/wilc1000/wilc_strutils.c| 2 +- drivers/staging/wilc1000/wilc_strutils.h| 4 +++ drivers/staging/wilc1000/wilc_timer.c | 2 +- drivers/staging/wilc1000/wilc_timer.h | 3 ++ drivers/staging/wilc1000/wilc_type.h| 34 -- drivers/staging/wilc1000/wilc_wlan.h| 2 +- drivers/staging/wilc1000/wilc_wlan_if.h | 10 +- 19 files changed, 67 insertions(+), 110 deletions(-) delete mode 100644 drivers/staging/wilc1000/wilc_oswrapper.h delete mode 100644 drivers/staging/wilc1000/wilc_type.h diff --git a/drivers/staging/wilc1000/coreconfigurator.h b/drivers/staging/wilc1000/coreconfigurator.h index 697ceb1..f2f6e64 100644 --- a/drivers/staging/wilc1000/coreconfigurator.h +++ b/drivers/staging/wilc1000/coreconfigurator.h @@ -12,7 +12,6 @@ #ifndef CORECONFIGURATOR_H #define CORECONFIGURATOR_H -#include "wilc_oswrapper.h" #include "wilc_wlan_if.h" /*/ /* Constants */ diff --git a/drivers/staging/wilc1000/fifo_buffer.c b/drivers/staging/wilc1000/fifo_buffer.c index c801406..b6c07cf 100644 --- a/drivers/staging/wilc1000/fifo_buffer.c +++ b/drivers/staging/wilc1000/fifo_buffer.c @@ -1,6 +1,5 @@ -#include "wilc_oswrapper.h" #include "fifo_buffer.h" diff --git a/drivers/staging/wilc1000/fifo_buffer.h b/drivers/staging/wilc1000/fifo_buffer.h index 57f7732..7b76998 100644 --- a/drivers/staging/wilc1000/fifo_buffer.h +++ b/drivers/staging/wilc1000/fifo_buffer.h @@ -1,5 +1,8 @@ -#include "wilc_oswrapper.h" +#include +#include +#include "wilc_memory.h" +#include "wilc_strutils.h" #define tHANDLEvoid * diff --git a/drivers/staging/wilc1000/host_interface.c b/drivers/staging/wilc1000/host_interface.c index a1e90a5..60245b1 100644 --- a/drivers/staging/wilc1000/host_interface.c +++ b/drivers/staging/wilc1000/host_interface.c @@ -1,5 +1,4 @@ #include "host_interface.h" -#include "wilc_oswrapper.h" #include "itypes.h" #include "coreconfigurator.h" diff --git a/drivers/staging/wilc1000/wilc_log.h b/drivers/staging/wilc1000/wilc_log.h index 2269ebd..93f467a 100644 --- a/drivers/staging/wilc1000/wilc_log.h +++ b/drivers/staging/wilc1000/wilc_log.h @@ -2,46 +2,53 @@ #define __WILC_LOG_H__ /* Errors will always get printed */ -#define WILC_ERROR(...) do { WILC_PRINTF("(ERR)(%s:%d) ", __WILC_FUNCTION__, __WILC_LINE__); \ - WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_ERROR(...) \ +do { \ + WILC_PRINTF("(ERR)(%s:%d)", __WILC_FUNCTION__, __WILC_LINE__); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) /* Wraning only printed if verbosity is 1 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 0) -#define WILC_WARN(...) do { WILC_PRINTF("(WRN)"); \ - WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_WARN(...) \ +do { \ + WILC_PRINTF("(WRN)"); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) #else -#define WILC_WARN(...) (0) +#define WILC_WARN(...) (0) #endif /* Info only printed if verbosity is 2 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 1) -#define WILC_INFO(...) do { WILC_PRINTF("(INF)"); \ -WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_INFO(...) \ +do { \ + WILC_PRINTF("(INF)"); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) #else -#define WILC_INFO(...) (0) +#define WILC_INFO(...) (0) #endif /* Debug is only printed if verbosity is 3 or more */ #
[PATCH v3] staging: wilc1000: remove oswrapper & type file
remove OS Wrapper function(wilc_oswrapper.h) is in our plan. i removed OS Wrapper function and it's done. and i found wilc_type.h file is does not used it. so i deleted them and modify #include line in another file. Signed-off-by: Dean Lee --- drivers/staging/wilc1000/coreconfigurator.h | 1 - drivers/staging/wilc1000/fifo_buffer.c | 1 - drivers/staging/wilc1000/fifo_buffer.h | 5 ++- drivers/staging/wilc1000/host_interface.c | 1 - drivers/staging/wilc1000/wilc_log.h | 53 - drivers/staging/wilc1000/wilc_memory.c | 2 +- drivers/staging/wilc1000/wilc_memory.h | 4 ++- drivers/staging/wilc1000/wilc_msgqueue.c| 2 +- drivers/staging/wilc1000/wilc_msgqueue.h| 5 +++ drivers/staging/wilc1000/wilc_oswrapper.h | 41 -- drivers/staging/wilc1000/wilc_sleep.c | 2 +- drivers/staging/wilc1000/wilc_sleep.h | 3 ++ drivers/staging/wilc1000/wilc_strutils.c| 2 +- drivers/staging/wilc1000/wilc_strutils.h| 4 +++ drivers/staging/wilc1000/wilc_timer.c | 2 +- drivers/staging/wilc1000/wilc_timer.h | 3 ++ drivers/staging/wilc1000/wilc_type.h| 34 -- drivers/staging/wilc1000/wilc_wlan.h| 2 +- drivers/staging/wilc1000/wilc_wlan_if.h | 10 +- 19 files changed, 67 insertions(+), 110 deletions(-) delete mode 100644 drivers/staging/wilc1000/wilc_oswrapper.h delete mode 100644 drivers/staging/wilc1000/wilc_type.h diff --git a/drivers/staging/wilc1000/coreconfigurator.h b/drivers/staging/wilc1000/coreconfigurator.h index 697ceb1..f2f6e64 100644 --- a/drivers/staging/wilc1000/coreconfigurator.h +++ b/drivers/staging/wilc1000/coreconfigurator.h @@ -12,7 +12,6 @@ #ifndef CORECONFIGURATOR_H #define CORECONFIGURATOR_H -#include "wilc_oswrapper.h" #include "wilc_wlan_if.h" /*/ /* Constants */ diff --git a/drivers/staging/wilc1000/fifo_buffer.c b/drivers/staging/wilc1000/fifo_buffer.c index c801406..b6c07cf 100644 --- a/drivers/staging/wilc1000/fifo_buffer.c +++ b/drivers/staging/wilc1000/fifo_buffer.c @@ -1,6 +1,5 @@ -#include "wilc_oswrapper.h" #include "fifo_buffer.h" diff --git a/drivers/staging/wilc1000/fifo_buffer.h b/drivers/staging/wilc1000/fifo_buffer.h index 57f7732..7b76998 100644 --- a/drivers/staging/wilc1000/fifo_buffer.h +++ b/drivers/staging/wilc1000/fifo_buffer.h @@ -1,5 +1,8 @@ -#include "wilc_oswrapper.h" +#include +#include +#include "wilc_memory.h" +#include "wilc_strutils.h" #define tHANDLEvoid * diff --git a/drivers/staging/wilc1000/host_interface.c b/drivers/staging/wilc1000/host_interface.c index a1e90a5..60245b1 100644 --- a/drivers/staging/wilc1000/host_interface.c +++ b/drivers/staging/wilc1000/host_interface.c @@ -1,5 +1,4 @@ #include "host_interface.h" -#include "wilc_oswrapper.h" #include "itypes.h" #include "coreconfigurator.h" diff --git a/drivers/staging/wilc1000/wilc_log.h b/drivers/staging/wilc1000/wilc_log.h index 2269ebd..93f467a 100644 --- a/drivers/staging/wilc1000/wilc_log.h +++ b/drivers/staging/wilc1000/wilc_log.h @@ -2,46 +2,53 @@ #define __WILC_LOG_H__ /* Errors will always get printed */ -#define WILC_ERROR(...) do { WILC_PRINTF("(ERR)(%s:%d) ", __WILC_FUNCTION__, __WILC_LINE__); \ - WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_ERROR(...) \ +do { \ + WILC_PRINTF("(ERR)(%s:%d)", __WILC_FUNCTION__, __WILC_LINE__); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) /* Wraning only printed if verbosity is 1 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 0) -#define WILC_WARN(...) do { WILC_PRINTF("(WRN)"); \ - WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_WARN(...) \ +do { \ + WILC_PRINTF("(WRN)"); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) #else -#define WILC_WARN(...) (0) +#define WILC_WARN(...) (0) #endif /* Info only printed if verbosity is 2 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 1) -#define WILC_INFO(...) do { WILC_PRINTF("(INF)"); \ -WILC_PRINTF(__VA_ARGS__); \ - } while (0) +#define WILC_INFO(...) \ +do { \ + WILC_PRINTF("(INF)"); \ + WILC_PRINTF(__VA_ARGS__); \ +} while (0) #else -#define WILC_INFO(...) (0) +#define WILC_INFO(...) (0) #endif /* Debug is only printed if verbosity is 3 or more */ #if (WILC_LOG_VERBOSITY_LEVEL > 2) -#def
[PATCH] staging: wilc1000: update TODO list
remove complete OS wrapper functions. Signed-off-by: Dean Lee --- drivers/staging/wilc1000/TODO | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/wilc1000/TODO b/drivers/staging/wilc1000/TODO index 95199d8..e876008 100644 --- a/drivers/staging/wilc1000/TODO +++ b/drivers/staging/wilc1000/TODO @@ -1,6 +1,5 @@ TODO: - remove the defined feature as kernel versions -- remove OS wrapper functions - remove custom debug and tracing functions - rework comments and function headers(also coding style) - replace all semaphores with mutexes or completions -- 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] staging: wilc1000: update TODO list
On Fri, Jun 12, 2015 at 07:23:11PM +0900, Dean Lee wrote: > remove complete OS wrapper functions. just a minor thing. It will be easy if you send your patches in series instead of separate patches. your patch "remove oswrapper & type file" is dependent on one of the previous patch that you have sent today. If for some reason that previous patch is not applied then "remove oswrapper & type file" will not apply and then this patch will have no meaning. regards sudip -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] mac80211: don't store napi struct
From: Johannes Berg When introducing multiple RX queues, a single NAPI struct will not be sufficient. Instead of trying to store multiple, simply change the API to have the NAPI struct passed to the RX function. This of course means that drivers using rx_irqsafe() cannot use NAPI, but that seems a reasonable trade-off, particularly since only two of all drivers are currently using it at all. While at it, we can now remove the IEEE80211_RX_REORDER_TIMER flag again since this code path cannot have a napi struct anyway. Signed-off-by: Johannes Berg --- drivers/net/wireless/iwlwifi/dvm/dev.h | 2 ++ drivers/net/wireless/iwlwifi/dvm/main.c | 3 ++- drivers/net/wireless/iwlwifi/dvm/rx.c | 2 +- drivers/net/wireless/iwlwifi/mvm/mvm.h | 1 + drivers/net/wireless/iwlwifi/mvm/ops.c | 3 ++- drivers/net/wireless/iwlwifi/mvm/rx.c | 2 +- include/net/mac80211.h | 37 + net/mac80211/ieee80211_i.h | 6 +- net/mac80211/main.c | 12 --- net/mac80211/rx.c | 18 +--- 10 files changed, 44 insertions(+), 42 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/dvm/dev.h b/drivers/net/wireless/iwlwifi/dvm/dev.h index 3811878ab9cd..074977ede343 100644 --- a/drivers/net/wireless/iwlwifi/dvm/dev.h +++ b/drivers/net/wireless/iwlwifi/dvm/dev.h @@ -669,6 +669,8 @@ struct iwl_priv { /* ieee device used by generic ieee processing code */ struct ieee80211_hw *hw; + struct napi_struct *napi; + struct list_head calib_results; struct workqueue_struct *workqueue; diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c index 234e30f498b2..644819563cf0 100644 --- a/drivers/net/wireless/iwlwifi/dvm/main.c +++ b/drivers/net/wireless/iwlwifi/dvm/main.c @@ -2037,7 +2037,8 @@ static void iwl_napi_add(struct iwl_op_mode *op_mode, { struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode); - ieee80211_napi_add(priv->hw, napi, napi_dev, poll, weight); + netif_napi_add(napi_dev, napi, poll, weight); + priv->napi = napi; } static const struct iwl_op_mode_ops iwl_dvm_ops = { diff --git a/drivers/net/wireless/iwlwifi/dvm/rx.c b/drivers/net/wireless/iwlwifi/dvm/rx.c index debec963c610..5a91f5d6b1dc 100644 --- a/drivers/net/wireless/iwlwifi/dvm/rx.c +++ b/drivers/net/wireless/iwlwifi/dvm/rx.c @@ -786,7 +786,7 @@ static void iwlagn_pass_packet_to_mac80211(struct iwl_priv *priv, memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); - ieee80211_rx(priv->hw, skb); + ieee80211_rx_napi(priv->hw, skb, priv->napi); } static u32 iwlagn_translate_rx_status(struct iwl_priv *priv, u32 decrypt_in) diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h index 2d4bad5fe825..605f57a2c6be 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h @@ -559,6 +559,7 @@ struct iwl_mvm { const struct iwl_cfg *cfg; struct iwl_phy_db *phy_db; struct ieee80211_hw *hw; + struct napi_struct *napi; /* for protecting access to iwl_mvm */ struct mutex mutex; diff --git a/drivers/net/wireless/iwlwifi/mvm/ops.c b/drivers/net/wireless/iwlwifi/mvm/ops.c index e4fa50075ffd..3967df63e0f3 100644 --- a/drivers/net/wireless/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/iwlwifi/mvm/ops.c @@ -1316,7 +1316,8 @@ static void iwl_mvm_napi_add(struct iwl_op_mode *op_mode, { struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); - ieee80211_napi_add(mvm->hw, napi, napi_dev, poll, weight); + netif_napi_add(napi_dev, napi, poll, weight); + mvm->napi = napi; } static const struct iwl_op_mode_ops iwl_mvm_ops = { diff --git a/drivers/net/wireless/iwlwifi/mvm/rx.c b/drivers/net/wireless/iwlwifi/mvm/rx.c index 8f1d93b7a13a..9ff0b4321df3 100644 --- a/drivers/net/wireless/iwlwifi/mvm/rx.c +++ b/drivers/net/wireless/iwlwifi/mvm/rx.c @@ -129,7 +129,7 @@ static void iwl_mvm_pass_packet_to_mac80211(struct iwl_mvm *mvm, fraglen, rxb->truesize); } - ieee80211_rx(mvm->hw, skb); + ieee80211_rx_napi(mvm->hw, skb, mvm->napi); } /* diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 6b1077c2a63f..c1c2af0c5b70 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -3696,20 +3696,28 @@ void ieee80211_free_hw(struct ieee80211_hw *hw); void ieee80211_restart_hw(struct ieee80211_hw *hw); /** - * ieee80211_napi_add - initialize mac80211 NAPI context - * @hw: the hardware to initialize the NAPI context on - * @napi: the NAPI context to initialize - * @napi_dev: dummy NAPI netdevice, here to not waste the space if the - * driver doesn't use NAPI - * @poll: poll function - * @weight: default weight + * ieee80211_rx_napi - receive frame from NAPI context * - * See also netif_napi_add(). + * Use t
Re: Question on beacon-miss offloading.
On 06/11/2015 11:03 PM, Michal Kazior wrote: On 12 June 2015 at 01:38, Ben Greear wrote: On 06/11/2015 02:07 PM, Ben Greear wrote: In my ath10k CT firmware, I am disabling the beacon-miss offloading to save space and because it will not work with lots of virtual stations. But, it must be that I need some way to tell the stack that this feature is not enabled, because when suddenly kill my AP, then the ath10k station connected to it shows endless 'beacon loss' events in 'iw events' output, but it never actually loses connection. Stock firmware works fine, so probably I just need to disable some feature flag when registering the ath10k hardware when using CT firmware. With stock firmware, I see a quick dissassociation due to inactivity. I am having poor luck finding how a driver tells the stack it has beacon miss offload or not, so, does anyone know how this is controlled? I still am not sure why stock firmware works, but it appears the reason mine is failing is that the ACK status for mgt frames is always set to TRUE since the ath10k wmi-mgt-tx API is so lame. So, mac80211 does a probe, ath10k lies and says it was acked, and mac80211 then things all is well for another few seconds. mac80211 shouldn't do a Probe Req to an AP on beacon loss because ath10k advertises it supports tx-status report. Hence mac80211 should use NullFunc frames which shouldn't go through wmi-mgmt-tx but htt tx-frm. But then again: NullFunc status reporting via htt tx-frm was broken on 10.1 if memory serves right. I believe it was fixed in 10.2 or 10.2.4. This problem has been effectively obscured on stock 10.1 by the offloaded beacon miss. For what it's worth, I looked at the 4.0.4 ath10k yesterday, and it appears it ignores the message that the 10.1 firmware sends when beacon loss happens anyway. Maybe I misread the firmware code..it's a pile of indirection. Do you know how the firmware is supposed to signal beacon loss to the host (from the host's perspective). Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2] ath10k: enable VHT for IBSS
On 06/11/2015 10:12 PM, Janusz Dziedzic wrote: On 11 June 2015 at 16:15, Kalle Valo wrote: Janusz Dziedzic writes: Enable VHT support for IBSS, while mac80211/cfg80211 and wpa_supplicant already support this. In my test env, ath10k 2x2 I get: (udp) ath10k-1 ath10k-2 (server) - speed: 419 Mbits/sec (tcp) ath10k-1 ath10k-2 (server) - speed: 404 Mbits/sec What hw and firmware version? Do you expect this to work with both qca988x and qca6174? Results are for qca9888x. But IBSS (VHT IBSS) works correctly also with qca6174 FW. Oh, we should still add ATH10K_FW_FEATURE_NO_ADHOC so that we can disable ad-hoc on 10.x firmwares. Anyone have some spare time to cook up a patch? I am not sure we need this, while we add ar->hw->wiphy->interface_modes |= BIT(NL80211_IFTYPE_ADHOC) only for main and tlv version. Seems we already cover 10.x case correctly. If you give me some way to advertise my CT 10.1 firmware supports ADHOC mode in the upstream driver then there will be one more firmware variant that works with IBSS in stock kernels Maybe a feature flag 'ATH10K_FW_FEATURE_SUPPORTS_ADHOC' ? You can special case older firmware that is known to support ADHOC but has no feature flag for it. And new firmware could add the feature flag as needed. Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH py80211 0/4] py80211: add support for scheduled scan
From: Luciano Coelho Hi Arend, Here's a small patchset that adds support for scheduled scans in py80211. I'm not sure this is the right approach, I added separate classes for each command, so feel free to ask me to change it completely if you want and I may or may not do it. :P Cheers, Luca. Luciano Coelho (4): py80211: scan: spin base scan classes off scan_request py80211: scan: add sched_scan start class py80211: add sched_scan stop class py80211: scan: add matchsets support for scheduled scans lib/scan.py | 157 +--- 1 file changed, 119 insertions(+), 38 deletions(-) -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH py80211 4/4] py80211: scan: add matchsets support for scheduled scans
From: Luciano Coelho Modify the sched_scan_start class so that the caller can pass a list of matches to be used in the scheduled scan request. Signed-off-by: Luciano Coelho --- lib/scan.py | 24 1 file changed, 24 insertions(+) diff --git a/lib/scan.py b/lib/scan.py index bfaf3d2..b55d148 100644 --- a/lib/scan.py +++ b/lib/scan.py @@ -192,10 +192,34 @@ class sched_scan_start(scan_start_base): def __init__(self, ifidx, level=nl.NL_CB_DEFAULT): super(sched_scan_start, self).__init__(ifidx, level) self._nl_cmd = nl80211.CMD_START_SCHED_SCAN +self._matches = None def set_interval(self, interval): self._interval = interval +def add_matches(self, matches): +self._matches = matches + +def _add_matches_attrs(self): + if self._matches: + i = 0 + +matchset = nl.nla_nest_start(self._nl_msg._msg, nl80211.ATTR_SCHED_SCAN_MATCH) + for match in self._matches: +nest = nl.nla_nest_start(self._nl_msg._msg, i) +if 'ssid' in match: +nl.nla_put(self._nl_msg._msg, nl80211.SCHED_SCAN_MATCH_ATTR_SSID, match['ssid']) + i += 1 +nl.nla_nest_end(self._nl_msg._msg, nest) + +nl.nla_nest_end(self._nl_msg._msg, matchset) + +def send(self): +self._prepare_cmd() +self._add_scan_attrs() +self._add_matches_attrs() +self._send_and_wait() + def handle(self, msg, arg): genlh = genl.genlmsg_hdr(nl.nlmsg_hdr(msg)) -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH py80211 1/4] py80211: scan: spin base scan classes off scan_request
From: Luciano Coelho Most of the scan_request code can be reused for scheduled scan, so spin the common part off the regular scan class. Additionally, add one extra class that is able to send scan commands (for sched_scan stop, for instance) without adding any scan attributes. Signed-off-by: Luciano Coelho --- lib/scan.py | 106 1 file changed, 64 insertions(+), 42 deletions(-) diff --git a/lib/scan.py b/lib/scan.py index 491c0b7..5ccae55 100644 --- a/lib/scan.py +++ b/lib/scan.py @@ -84,14 +84,65 @@ class bss_list(custom_handler): traceback.print_tb(tb) return nl.NL_SKIP -class scan_request(custom_handler): +class scan_cmd_base(custom_handler): def __init__(self, ifidx, level=nl.NL_CB_DEFAULT): - self._ifidx = ifidx self._access = access80211(level) +self._nl_cmd = None + self._ifidx = ifidx + + def _wait_for_completion(self): + while self.scan_busy: + self._access._sock.recvmsgs(self._access._rx_cb) + + def _prepare_cmd(self): +if self._nl_cmd == None: +raise Exception("sub-class must set _nl_cmd") + + flags = nlc.NLM_F_REQUEST | nlc.NLM_F_ACK + self._nl_msg = self._access.alloc_genlmsg(self._nl_cmd, flags) + nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_IFINDEX, self._ifidx) + +def _send_and_wait(self): + self.scan_busy = True + self._access.disable_seq_check() + mcid = self._access.subscribe_multicast('scan') + ret = self._access.send(self._nl_msg, self) + if ret < 0: + self.scan_busy = False + return ret + + self._wait_for_completion() + self._access.drop_multicast(mcid) + return 0 + +class scan_start_base(scan_cmd_base): +def __init__(self, ifidx, level=nl.NL_CB_DEFAULT): +super(scan_start_base, self).__init__(ifidx, level) self._ssids = None self._freqs = None self._flags = 0 self._ies = None +self._nl_cmd = None + +def _add_scan_attrs(self): + if self._ssids: + i = 0 + nest = nl.nla_nest_start(self._nl_msg._msg, nl80211.ATTR_SCAN_SSIDS) + for ssid in self._ssids: + nl.nla_put(self._nl_msg._msg, i, ssid) + i += 1 + nl.nla_nest_end(self._nl_msg._msg, nest) + if self._freqs: + i = 0 + nest = nl.nla_nest_start(self._nl_msg._msg, nl80211.ATTR_SCAN_FREQUENCIES) + for freq in self._freqs: + nl.nla_put_u32(self._nl_msg._msg, i, freq) + i += 1 + nl.nla_nest_end(self._nl_msg._msg, nest) + if self._flags != 0: + nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_SCAN_FLAGS, self._flags) + if self._ies: + nl.nla_put(self._nl_msg._msg, nl80211.ATTR_IE, self._ies) def add_ssids(self, ssids): if self._ssids == None: @@ -115,49 +166,20 @@ class scan_request(custom_handler): def set_flags(self, flags): self._flags = flags - def wait_for_scan_completion(self): - while self.scan_busy: - self._access._sock.recvmsgs(self._access._rx_cb) - - def send(self): - flags = nlc.NLM_F_REQUEST | nlc.NLM_F_ACK - m = self._access.alloc_genlmsg(nl80211.CMD_TRIGGER_SCAN, flags) - nl.nla_put_u32(m._msg, nl80211.ATTR_IFINDEX, self._ifidx) +def send(self): +self._prepare_cmd() +self._add_scan_attrs() +self._send_and_wait() - if self._ssids: - i = 0 - nest = nl.nla_nest_start(m._msg, nl80211.ATTR_SCAN_SSIDS) - for ssid in self._ssids: - nl.nla_put(m._msg, i, ssid) - i += 1 - nl.nla_nest_end(m._msg, nest) - if self._freqs: - i = 0 - nest = nl.nla_nest_start(m._msg, nl80211.ATTR_SCAN_FREQUENCIES) - for freq in self._freqs: - nl.nla_put_u32(m._msg, i, freq) - i += 1 - nl.nla_nest_end(m._msg, nest) - if self._flags != 0: - nl.nla_put_u32(m._msg, nl80211.ATTR_SCAN_FLAGS, self._flags) - if self._ies: -
[PATCH py80211 2/4] py80211: scan: add sched_scan start class
From: Luciano Coelho Add a class to start scheduled scans. Signed-off-by: Luciano Coelho --- lib/scan.py | 20 1 file changed, 20 insertions(+) diff --git a/lib/scan.py b/lib/scan.py index 5ccae55..bfaf4da 100644 --- a/lib/scan.py +++ b/lib/scan.py @@ -123,6 +123,7 @@ class scan_start_base(scan_cmd_base): self._flags = 0 self._ies = None self._nl_cmd = None +self._interval = None def _add_scan_attrs(self): if self._ssids: @@ -144,6 +145,9 @@ class scan_start_base(scan_cmd_base): if self._ies: nl.nla_put(self._nl_msg._msg, nl80211.ATTR_IE, self._ies) +if self._interval != None: +nl.nla_put_u32(self._nl_msg._msg, nl80211.ATTR_SCHED_SCAN_INTERVAL, self._interval) + def add_ssids(self, ssids): if self._ssids == None: self._ssids = ssids @@ -183,3 +187,19 @@ class scan_request(scan_start_base): if genlh.cmd in [ nl80211.CMD_SCAN_ABORTED, nl80211.CMD_NEW_SCAN_RESULTS ]: self.scan_busy = False return nl.NL_SKIP + +class sched_scan_start(scan_start_base): + def __init__(self, ifidx, level=nl.NL_CB_DEFAULT): +super(sched_scan_start, self).__init__(ifidx, level) +self._nl_cmd = nl80211.CMD_START_SCHED_SCAN + + def set_interval(self, interval): + self._interval = interval + +def handle(self, msg, arg): + genlh = genl.genlmsg_hdr(nl.nlmsg_hdr(msg)) + +# A schedule scan is complete immediately when it gets started +if genlh.cmd in [ nl80211.CMD_START_SCHED_SCAN ]: +self.scan_busy = False + return nl.NL_SKIP -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH py80211 3/4] py80211: add sched_scan stop class
From: Luciano Coelho Add a class to stop scheduled scans. Signed-off-by: Luciano Coelho --- lib/scan.py | 15 +++ 1 file changed, 15 insertions(+) diff --git a/lib/scan.py b/lib/scan.py index bfaf4da..bfaf3d2 100644 --- a/lib/scan.py +++ b/lib/scan.py @@ -203,3 +203,18 @@ class sched_scan_start(scan_start_base): if genlh.cmd in [ nl80211.CMD_START_SCHED_SCAN ]: self.scan_busy = False return nl.NL_SKIP + +class sched_scan_stop(scan_cmd_base): + def __init__(self, ifidx, level=nl.NL_CB_DEFAULT): +super(sched_scan_stop, self).__init__(ifidx, level) +self._nl_cmd = nl80211.CMD_STOP_SCHED_SCAN + +def send(self): +self._prepare_cmd() +self._send_and_wait() + +def handle(self, msg, arg): + genlh = genl.genlmsg_hdr(nl.nlmsg_hdr(msg)) +if genlh.cmd in [ nl80211.CMD_SCHED_SCAN_STOPPED ]: +self.scan_busy = False + return nl.NL_SKIP -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Question on beacon-miss offloading.
On Fri, Jun 12, 2015 at 6:59 PM, Ben Greear wrote: > > > On 06/11/2015 11:03 PM, Michal Kazior wrote: >> >> On 12 June 2015 at 01:38, Ben Greear wrote: >>> >>> On 06/11/2015 02:07 PM, Ben Greear wrote: In my ath10k CT firmware, I am disabling the beacon-miss offloading to save space and because it will not work with lots of virtual stations. But, it must be that I need some way to tell the stack that this feature is not enabled, because when suddenly kill my AP, then the ath10k station connected to it shows endless 'beacon loss' events in 'iw events' output, but it never actually loses connection. Stock firmware works fine, so probably I just need to disable some feature flag when registering the ath10k hardware when using CT firmware. With stock firmware, I see a quick dissassociation due to inactivity. I am having poor luck finding how a driver tells the stack it has beacon miss offload or not, so, does anyone know how this is controlled? >>> >>> >>> I still am not sure why stock firmware works, but it appears >>> the reason mine is failing is that the ACK status for mgt frames >>> is always set to TRUE since the ath10k wmi-mgt-tx API is so >>> lame. So, mac80211 does a probe, ath10k lies and says it was >>> acked, and mac80211 then things all is well for another few >>> seconds. >> >> >> mac80211 shouldn't do a Probe Req to an AP on beacon loss because >> ath10k advertises it supports tx-status report. Hence mac80211 should >> use NullFunc frames which shouldn't go through wmi-mgmt-tx but htt >> tx-frm. >> >> But then again: NullFunc status reporting via htt tx-frm was broken on >> 10.1 if memory serves right. I believe it was fixed in 10.2 or 10.2.4. >> >> This problem has been effectively obscured on stock 10.1 by the >> offloaded beacon miss. > > > For what it's worth, I looked at the 4.0.4 ath10k yesterday, and it appears > it > ignores the message that the 10.1 firmware sends when beacon loss happens > anyway. Maybe I misread the firmware code..it's a pile of indirection. > > Do you know how the firmware is supposed to signal beacon loss to > the host (from the host's perspective). Normally driver would advertise IEEE80211_HW_CONNECTION_MONITOR to disable mac80211 from tracking connection. and driver should call ieee80211_beacon_loss up on receiving beacon loss event from FW which triggers disconnection in mac80211. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] staging: wilc1000: remove warnings reported by checkpatch.pl.
On Fri, Jun 12, 2015 at 06:51:56PM +0900, Dean Lee wrote: > Remove the following warnings in the wilc_log.h: > - unnecessary whitespace before a quoted newline > - line over 80 characters > - single statement macros should not use a do {} while (0) loop. Those are different things, so this should be broken up into different patches. Please make this a series of patches, each one only doing one type of thing. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Question on beacon-miss offloading.
On 06/12/2015 07:10 AM, Krishna Chaitanya wrote: > On Fri, Jun 12, 2015 at 6:59 PM, Ben Greear wrote: >> >> >> On 06/11/2015 11:03 PM, Michal Kazior wrote: >>> >>> On 12 June 2015 at 01:38, Ben Greear wrote: On 06/11/2015 02:07 PM, Ben Greear wrote: > > In my ath10k CT firmware, I am disabling the beacon-miss offloading > to save space and because it will not work with lots of virtual > stations. > > But, it must be that I need some way to tell the stack that this > feature is not enabled, because when suddenly kill my AP, then > the ath10k station connected to it shows endless 'beacon loss' events > in 'iw events' output, but it never actually loses connection. > > Stock firmware works fine, so probably I just need to disable > some feature flag when registering the ath10k hardware > when using CT firmware. > > With stock firmware, I see a quick dissassociation due to inactivity. > > I am having poor luck finding how a driver tells the stack > it has beacon miss offload or not, so, does anyone know how > this is controlled? I still am not sure why stock firmware works, but it appears the reason mine is failing is that the ACK status for mgt frames is always set to TRUE since the ath10k wmi-mgt-tx API is so lame. So, mac80211 does a probe, ath10k lies and says it was acked, and mac80211 then things all is well for another few seconds. >>> >>> >>> mac80211 shouldn't do a Probe Req to an AP on beacon loss because >>> ath10k advertises it supports tx-status report. Hence mac80211 should >>> use NullFunc frames which shouldn't go through wmi-mgmt-tx but htt >>> tx-frm. >>> >>> But then again: NullFunc status reporting via htt tx-frm was broken on >>> 10.1 if memory serves right. I believe it was fixed in 10.2 or 10.2.4. >>> >>> This problem has been effectively obscured on stock 10.1 by the >>> offloaded beacon miss. >> >> >> For what it's worth, I looked at the 4.0.4 ath10k yesterday, and it appears >> it >> ignores the message that the 10.1 firmware sends when beacon loss happens >> anyway. Maybe I misread the firmware code..it's a pile of indirection. >> >> Do you know how the firmware is supposed to signal beacon loss to >> the host (from the host's perspective). > > Normally driver would advertise IEEE80211_HW_CONNECTION_MONITOR > to disable mac80211 from tracking connection. and driver should call > ieee80211_beacon_loss up on receiving beacon loss event from FW > which triggers disconnection in mac80211. I do not see any calls to beacon_loss() in the ath10k driver, so probably that firmware feature is not just fully wired up to the driver. Just as well since that firmware feature is disabled in my (-diet variant) firmware entirely. Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v3] staging: wilc1000: remove oswrapper & type file
On Fri, Jun 12, 2015 at 07:21:11PM +0900, Dean Lee wrote: > remove OS Wrapper function(wilc_oswrapper.h) is in our plan. > i removed OS Wrapper function and it's done. > and i found wilc_type.h file is does not used it. > so i deleted them and modify #include line in another file. You are also doing other things here that you don't describe: > /* Errors will always get printed */ > -#define WILC_ERROR(...) do { WILC_PRINTF("(ERR)(%s:%d) ", > __WILC_FUNCTION__, __WILC_LINE__); \ > - WILC_PRINTF(__VA_ARGS__); \ > - } while (0) > +#define WILC_ERROR(...) > \ > +do { \ > + WILC_PRINTF("(ERR)(%s:%d)", __WILC_FUNCTION__, __WILC_LINE__); \ > + WILC_PRINTF(__VA_ARGS__); \ > +} while (0) You reformatted this. > #if (WILC_LOG_VERBOSITY_LEVEL > 3) > -#define WILC_FN_IN do { WILC_PRINTF("(FIN) (%s:%d) \n", __WILC_FUNCTION__, > __WILC_LINE__); } while (0) > -#define WILC_FN_OUT(ret) do { WILC_PRINTF("(FOUT) (%s:%d) %d.\n", > __WILC_FUNCTION__, __WILC_LINE__, (ret)); } while (0) > +#define WILC_FN_IN \ > + WILC_PRINTF("(FIN)(%s:%d)\n", __WILC_FUNCTION__, __WILC_LINE__) > +#define WILC_FN_OUT(ret) \ > + WILC_PRINTF("(FOUT)(%s:%d)%d\n", __WILC_FUNCTION__, __WILC_LINE__, ret) And changed this for no obvious reason. Please, only do one thing per patch. Break this up into logical steps and resend it as a series of patches, with the last one being the TODO file item removal. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] staging: wilc1000: update TODO list
On Fri, Jun 12, 2015 at 07:23:11PM +0900, Dean Lee wrote: > remove complete OS wrapper functions. > > Signed-off-by: Dean Lee > --- > drivers/staging/wilc1000/TODO | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/staging/wilc1000/TODO b/drivers/staging/wilc1000/TODO > index 95199d8..e876008 100644 > --- a/drivers/staging/wilc1000/TODO > +++ b/drivers/staging/wilc1000/TODO > @@ -1,6 +1,5 @@ > TODO: > - remove the defined feature as kernel versions > -- remove OS wrapper functions > - remove custom debug and tracing functions > - rework comments and function headers(also coding style) > - replace all semaphores with mutexes or completions > -- > 2.4.3 This isn't done yet, please make it the last patch in your series. And are you sure you have removed them all? thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] staging: wilc1000: change WILC_Char to s8
On Fri, Jun 12, 2015 at 02:39:08PM +0900, Dean Lee wrote: > change own data type(WILC_Char) to common data type(s8) Why not just 'char'? And you are using these in "strings", so why not u8? thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Question on beacon-miss offloading.
On 06/11/2015 11:03 PM, Michal Kazior wrote: > On 12 June 2015 at 01:38, Ben Greear wrote: >> On 06/11/2015 02:07 PM, Ben Greear wrote: >>> In my ath10k CT firmware, I am disabling the beacon-miss offloading >>> to save space and because it will not work with lots of virtual >>> stations. >>> >>> But, it must be that I need some way to tell the stack that this >>> feature is not enabled, because when suddenly kill my AP, then >>> the ath10k station connected to it shows endless 'beacon loss' events >>> in 'iw events' output, but it never actually loses connection. >>> >>> Stock firmware works fine, so probably I just need to disable >>> some feature flag when registering the ath10k hardware >>> when using CT firmware. >>> >>> With stock firmware, I see a quick dissassociation due to inactivity. >>> >>> I am having poor luck finding how a driver tells the stack >>> it has beacon miss offload or not, so, does anyone know how >>> this is controlled? >> >> I still am not sure why stock firmware works, but it appears >> the reason mine is failing is that the ACK status for mgt frames >> is always set to TRUE since the ath10k wmi-mgt-tx API is so >> lame. So, mac80211 does a probe, ath10k lies and says it was >> acked, and mac80211 then things all is well for another few >> seconds. > > mac80211 shouldn't do a Probe Req to an AP on beacon loss because > ath10k advertises it supports tx-status report. Hence mac80211 should > use NullFunc frames which shouldn't go through wmi-mgmt-tx but htt > tx-frm. > > But then again: NullFunc status reporting via htt tx-frm was broken on > 10.1 if memory serves right. I believe it was fixed in 10.2 or 10.2.4. > > This problem has been effectively obscured on stock 10.1 by the > offloaded beacon miss. Thanks for the hint. I was able to fix my firmware to properly return htt tx status, and now it appears to work properly. A quick throughput test works as well, so hopefully no regressions. I guess the NulFunc related comment is incorrect for 10.1 stock firmware? Maybe some others? static void ath10k_tx_htt(struct ath10k *ar, struct sk_buff *skb) { struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; int ret = 0; if (ar->htt.target_version_major >= 3) { /* Since HTT 3.0 there is no separate mgmt tx command */ ret = ath10k_htt_tx(&ar->htt, skb); goto exit; } if (ieee80211_is_mgmt(hdr->frame_control)) { if (test_bit(ATH10K_FW_FEATURE_HAS_WMI_MGMT_TX, ar->fw_features)) { if (skb_queue_len(&ar->wmi_mgmt_tx_queue) >= ATH10K_MAX_NUM_MGMT_PENDING) { ath10k_warn(ar, "reached WMI management transmit queue limit\n"); ret = -EBUSY; goto exit; } skb_queue_tail(&ar->wmi_mgmt_tx_queue, skb); ieee80211_queue_work(ar->hw, &ar->wmi_mgmt_tx_work); } else { ret = ath10k_htt_mgmt_tx(&ar->htt, skb); } } else if (!test_bit(ATH10K_FW_FEATURE_HAS_WMI_MGMT_TX, ar->fw_features) && ieee80211_is_nullfunc(hdr->frame_control)) { /* FW does not report tx status properly for NullFunc frames * unless they are sent through mgmt tx path. mac80211 sends * those frames when it detects link/beacon loss and depends * on the tx status to be correct. */ ret = ath10k_htt_mgmt_tx(&ar->htt, skb); } else { ret = ath10k_htt_tx(&ar->htt, skb); } Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[BUG ?] delay always evaluates to 0
Hi ! commit 2c86c275015c ("Add ipw2100 wireless driver.") introduced drivers/net/wireless/ipw2100.c - line-numbers are from next-20150511 1410 static int ipw2100_hw_phy_off(struct ipw2100_priv *priv) 1411 { 1412 1413 #define HW_PHY_OFF_LOOP_DELAY (HZ / 5000) 1414 ... 1437 1438 schedule_timeout_uninterruptible(HW_PHY_OFF_LOOP_DELAY); 1439 } but (HZ / 5000) will evaluate to 0 for all configurable HZ values - typo ? and this schedule_timeout_uninterruptible() is probably not doing what is intended. thx! hofrat -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH] mac80211: fix a NULL dereference in ath9k (and likely other drivers) when fixed mesh paths are used
> -Original Message- > From: Bob Copeland [mailto:m...@bobcopeland.com] > Sent: Monday, May 25, 2015 9:16 AM > To: Alexis Green > Cc: Johannes Berg; linux-wireless; Jesse Jones > Subject: Re: [PATCH] mac80211: fix a NULL dereference in ath9k (and likely > other drivers) when fixed mesh paths are used > > On Thu, May 21, 2015 at 06:05:13PM -0700, Alexis Green wrote: > > This patch fixes a NULL dereference in ath9k (and likely other > > drivers) when fixed mesh paths are used. The problem is that when a > > station comes up sta_info_alloc allocates ath_node implicitly via > > hw->sta_data_size. When it does that the ath_node is zeroed out. The > > ath_node isnโt actually initialized until the station becomes associated > > and > ath9k_sta_state is called. > > Good catch. > > I wonder if we should instead remove the mesh special case in > ieee80211_tx_h_check_assoc() -- given that we require an assoc station in > peering before we send data frames to that RA, and userspace should also > be setting assoc flag after MPM completes, I can't think of a reason > offhand > why we'd need to bail out there. > > Does this also fix the problem for you? It passed the wpa_supplicant test > cases at least (but we aren't fixing mpaths in any of those...) > > From 246febaa51d555fda437cc8064798db06c5f4d6e Mon Sep 17 00:00:00 > 2001 > From: Bob Copeland > Date: Mon, 25 May 2015 12:01:52 -0400 > Subject: [PATCH] mac80211: enable assoc check for mesh interfaces > > We already set a station to be associated when peering completes, both in > user space and in the kernel. Thus we should always have an associated > sta > before sending data frames to that station. > > Failure to do this can cause crashes in the lower-level driver due to > transmitting unicast data frames before driver sta structures (e.g. ampdu > state in ath9k) are initialized. This could have happened if fixing > mpaths, > which could then allow TX to stations with whom we haven't yet completed > peering. > > Reported-by: Alexis Green > Signed-off-by: Bob Copeland > --- > net/mac80211/tx.c | 3 --- > 1 file changed, 3 deletions(-) > > diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index > 667111ee6a20..5787f15a3a12 100644 > --- a/net/mac80211/tx.c > +++ b/net/mac80211/tx.c > @@ -301,9 +301,6 @@ ieee80211_tx_h_check_assoc(struct > ieee80211_tx_data *tx) > if (tx->sdata->vif.type == NL80211_IFTYPE_WDS) > return TX_CONTINUE; > > - if (tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT) > - return TX_CONTINUE; > - > if (tx->flags & IEEE80211_TX_PS_BUFFERED) > return TX_CONTINUE; > > -- > 2.1.4 > > > > -- > Bob Copeland %% http://bobcopeland.com/ Sorry for the delay in responding to this... I had trouble reproing the reboot caused by ath9k de-referencing NULL pointers but after a fair amount of work I was able to consistently get reboots. Your patch *does* fix the problem so I am going to switch our repo over to your patch instead of what we were using. Thanks for the help. -- Jesse -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
iwlwifi in AP mode is experimental?
Hello, On wireless.wiki.kernel.org, iwlwifi is listed as experimental for AP Mode. We have done some basic testing with a 3160 card in AP mode & hostapd without issue. Now we need to determine if it makes sense to ramp up a rigorous test plan for it. Is AP mode with iwlwifi basically a "use at your own risk" scenario? Can I expect AP mode to be supported more fully in the future? Is there a particular HW module that does AP mode better than others? Is there a list of missing features? Are others using iwlwifi for AP mode in a product? Any additional, current information on this will be greatly appreciated. Thank you, Bob -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: r8188eu deadlock
On 06/11/2015 10:00 PM, Paul Thomas wrote: Hello, I just got a TP-LINK TL-WN725N adapter (VID 0bda, PID 8179) The driver in the staging area seems to be working fine, but I get this on startup. I'm using this with a BeagleBone Black. I did a fresh git pull today, so it is with kernel 4.1.0-rc7-00063-gcff100f, I haven't tried it with the wireless-testing branch. Anyway, thought someone might be interested. thanks, Paul [ 22.489564] = [ 22.495221] [ INFO: possible recursive locking detected ] [ 22.500883] 4.1.0-rc7-00063-gcff100f #3 Tainted: G C [ 22.507266] - [ 22.512921] RTW_CMD_THREAD/554 is trying to acquire lock: [ 22.518577] (&(&(pqueue->lock))->rlock){+.-...}, at: [] _rtw_alloc_network+0x14/0xc4 [r8188eu] [ 22.528847] [ 22.528847] but task is already holding lock: [ 22.534969] (&(&(pqueue->lock))->rlock){+.-...}, at: [] rtw_update_scanned_network+0x18/0x234 [r8188eu] [ 22.545910] [ 22.545910] other info that might help us debug this: [ 22.552759] Possible unsafe locking scenario: [ 22.552759] [ 22.558969]CPU0 [ 22.561534] [ 22.564097] lock(&(&(pqueue->lock))->rlock); [ 22.568765] lock(&(&(pqueue->lock))->rlock); [ 22.573433] [ 22.573433] *** DEADLOCK *** [ 22.573433] [ 22.579654] May be due to missing lock nesting notation [ 22.579654] [ 22.586775] 2 locks held by RTW_CMD_THREAD/554: [ 22.591520] #0: (&(&(pmlmepriv->lock))->rlock){+.}, at: [] rtw_survey_event_callback+0x7c/0x1c4 [r8188eu] [ 22.603094] #1: (&(&(pqueue->lock))->rlock){+.-...}, at: [] rtw_update_scanned_network+0x18/0x234 [r8188eu] [ 22.614481] [ 22.614481] stack backtrace: [ 22.619064] CPU: 0 PID: 554 Comm: RTW_CMD_THREAD Tainted: G C 4.1.0-rc7-00063-gcff100f #3 [ 22.628817] Hardware name: Generic AM33XX (Flattened Device Tree) [ 22.635227] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 22.643355] [] (show_stack) from [] (dump_stack+0x84/0x9c) [ 22.650944] [] (dump_stack) from [] (__lock_acquire+0x1a44/0x1edc) [ 22.659253] [] (__lock_acquire) from [] (lock_acquire+0xa8/0x124) [ 22.667473] [] (lock_acquire) from [] (_raw_spin_lock_bh+0x44/0x54) [ 22.675926] [] (_raw_spin_lock_bh) from [] (_rtw_alloc_network+0x14/0xc4 [r8188eu]) [ 22.685883] [] (_rtw_alloc_network [r8188eu]) from [] (rtw_update_scanned_network+0xec/0x234 [r8188eu]) [ 22.697654] [] (rtw_update_scanned_network [r8188eu]) from [] (rtw_survey_event_callback+0xf8/0x1c4 [r8188eu]) [ 22.710069] [] (rtw_survey_event_callback [r8188eu]) from [] (mlme_evt_hdl+0x5c/0xe8 [r8188eu]) [ 22.721110] [] (mlme_evt_hdl [r8188eu]) from [] (rtw_cmd_thread+0xac/0x2a8 [r8188eu]) [ 22.731191] [] (rtw_cmd_thread [r8188eu]) from [] (kthread+0xd4/0xf0) [ 22.739780] [] (kthread) from [] (ret_from_fork+0x14/0x3c) That is a known problem, but I do not know the fix. The only downside is that this occurrence disables lockdep testing. FYI, staging drivers are not updated through wireless, but this is a good place to report problems. If you want to try the latest versions of one of these drivers, then you need to use staging-next, which is a branch of the staging repo maintained by GregKH. Larry -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v4] ath10k: enable raw encap mode and software crypto engine.
From: David Liu This patch enables raw Rx/Tx encap mode to support software based crypto engine. This patch introduces a new module param 'cryptmode'. cryptmode: 0: Use hardware crypto engine globally with native Wi-Fi mode TX/RX encapsulation to the firmware. This is the default mode. 1: Use sofware crypto engine globally with raw mode TX/RX encapsulation to the firmware. Known limitation: A-MSDU must be disabled for RAW Tx encap mode to perform well when heavy traffic is applied. Testing: (by Michal Kazior ) a) Performance Testing cryptmode=1 ap=qca988x sta=killer1525 killer1525 -> qca988x 194.496 mbps [tcp1 ip4] killer1525 -> qca988x 238.309 mbps [tcp5 ip4] killer1525 -> qca988x 266.958 mbps [udp1 ip4] killer1525 -> qca988x 477.468 mbps [udp5 ip4] qca988x -> killer1525 301.378 mbps [tcp1 ip4] qca988x -> killer1525 297.949 mbps [tcp5 ip4] qca988x -> killer1525 331.351 mbps [udp1 ip4] qca988x -> killer1525 371.528 mbps [udp5 ip4] ap=killer1525 sta=qca988x qca988x -> killer1525 331.447 mbps [tcp1 ip4] qca988x -> killer1525 328.783 mbps [tcp5 ip4] qca988x -> killer1525 375.309 mbps [udp1 ip4] qca988x -> killer1525 403.379 mbps [udp5 ip4] killer1525 -> qca988x 203.689 mbps [tcp1 ip4] killer1525 -> qca988x 222.339 mbps [tcp5 ip4] killer1525 -> qca988x 264.199 mbps [udp1 ip4] killer1525 -> qca988x 479.371 mbps [udp5 ip4] Note: - only open network tested for RAW vs nwifi performance comparison - killer1525 (qca6174 hw2.2) is 2x2 device (hence max 866mbps) - used iperf - OTA, devices a few cm apart from each other, no shielding - tcpX/udpX, X - means number of threads used Overview: - relative Tx performance drop is seen but is within reasonable and expected threshold (A-MSDU must be disabled with RAW Tx) b) Connectivity Testing cryptmode=1 ap=iwl6205 sta1=qca988x crypto=open topology-1ap1sta OK ap=iwl6205 sta1=qca988x crypto=wep1 topology-1ap1sta OK ap=iwl6205 sta1=qca988x crypto=wpa topology-1ap1sta OK ap=iwl6205 sta1=qca988x crypto=wpa-ccmp topology-1ap1sta OK ap=qca988x sta1=iwl6205 crypto=open topology-1ap1sta OK ap=qca988x sta1=iwl6205 crypto=wep1 topology-1ap1sta OK ap=qca988x sta1=iwl6205 crypto=wpa topology-1ap1sta OK ap=qca988x sta1=iwl6205 crypto=wpa-ccmp topology-1ap1sta OK ap=iwl6205 sta1=qca988x crypto=open topology-1ap1sta2br OK ap=iwl6205 sta1=qca988x crypto=wep1 topology-1ap1sta2br OK ap=iwl6205 sta1=qca988x crypto=wpa topology-1ap1sta2br OK ap=iwl6205 sta1=qca988x crypto=wpa-ccmp topology-1ap1sta2br OK ap=qca988x sta1=iwl6205 crypto=open topology-1ap1sta2br OK ap=qca988x sta1=iwl6205 crypto=wep1 topology-1ap1sta2br OK ap=qca988x sta1=iwl6205 crypto=wpa topology-1ap1sta2br OK ap=qca988x sta1=iwl6205 crypto=wpa-ccmp topology-1ap1sta2br OK ap=iwl6205 sta1=qca988x crypto=open topology-1ap1sta2br1vlan OK ap=iwl6205 sta1=qca988x crypto=wep1 topology-1ap1sta2br1vlan OK ap=iwl6205 sta1=qca988x crypto=wpa topology-1ap1sta2br1vlan OK ap=iwl6205 sta1=qca988x crypto=wpa-ccmp topology-1ap1sta2br1vlan OK ap=qca988x sta1=iwl6205 crypto=open topology-1ap1sta2br1vlan OK ap=qca988x sta1=iwl6205 crypto=wep1 topology-1ap1sta2br1vlan OK ap=qca988x sta1=iwl6205 crypto=wpa topology-1ap1sta2br1vlan OK ap=qca988x sta1=iwl6205 crypto=wpa-ccmp topology-1ap1sta2br1vlan OK Note: - each test takes all possible endpoint pairs and pings - each pair-ping flushes arp table - ip6 is used c) Testbed Topology: 1ap1sta: [ap] [sta] endpoints: ap, sta 1ap1sta2br: [veth0] [ap] [sta] [veth2] | | | | [veth1] | \ [veth3] \ /\ / [br0][br1] endpoints: veth0, veth2, br0, br1 note: STA works in 4addr mode, AP has wds_sta=1 1ap1sta2br1vlan: [veth0] [ap] [sta] [veth2] | | | | [veth1] | \ [veth3] \ /\ / [br0] [br1] | | [vlan0_id2][vlan1_id2] endpoints: vlan0_id2, vlan1_id2 note: STA works in 4addr mode, AP has wds_sta=1 Credits: Thanks to Michal Kazior who helped find the amsdu issue, contributed a workaround (alre
Re: [PATCH] mac80211: fix a NULL dereference in ath9k (and likely other drivers) when fixed mesh paths are used
On Fri, 2015-06-12 at 11:01 -0700, Jesse Jones wrote: > I had trouble reproing the reboot caused by ath9k de-referencing NULL > pointers but after a fair amount of work I was able to consistently get > reboots. Your patch *does* fix the problem so I am going to switch our repo > over to your patch instead of what we were using. Thanks for the help. Great. Bob, if it's no bother I'd appreciate if you'd resend the patch correctly so it gets picked up by patchwork etc. Thanks, johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] mac80211: don't invalidate SN on discovery failure
From: Jesse Jones The 2012 spec mentions that path SNs can be invalid when created (see section 13.10.8.4 table 13-9) but AFAICT never talks about invalidating SNs. Which makes sense: if we have figured out the path to a target at a certain SN then we want to remember that fact. Failing to do so can lead to routing loops because if we don't have a valid SN then we have no way of knowing whether an incoming path message leads to or away from the target. However currently when discovery fails we zero out mpath->flags which clears MESH_PATH_SN_VALID. This patch fixes that so that only the discovery relevant flags are cleared. Signed-off-by: Alexis Green --- diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c index 085edc1..1d849be --- a/net/mac80211/mesh_hwmp.c +++ b/net/mac80211/mesh_hwmp.c @@ -1176,7 +1176,8 @@ void mesh_path_timer(unsigned long data) spin_unlock_bh(&mpath->state_lock); mesh_queue_preq(mpath, 0); } else { - mpath->flags = 0; + mpath->flags &= ~(MESH_PATH_RESOLVING | + MESH_PATH_RESOLVED | MESH_PATH_REQ_QUEUED); mpath->exp_time = jiffies; spin_unlock_bh(&mpath->state_lock); if (!mpath->is_gate && mesh_gate_num(sdata) > 0) { -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] mac80211: fix a NULL dereference in ath9k (and likely other drivers) when fixed mesh paths are used
On Fri, Jun 12, 2015 at 10:10:32PM +0200, Johannes Berg wrote: > On Fri, 2015-06-12 at 11:01 -0700, Jesse Jones wrote: > > > I had trouble reproing the reboot caused by ath9k de-referencing NULL > > pointers but after a fair amount of work I was able to consistently get > > reboots. Your patch *does* fix the problem so I am going to switch our repo > > over to your patch instead of what we were using. Thanks for the help. > > Great. Bob, if it's no bother I'd appreciate if you'd resend the patch > correctly so it gets picked up by patchwork etc. Sure. Jesse, want me to add your Tested-by? -- Bob Copeland %% http://bobcopeland.com/ -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] mac80211: Check SN for deactivated mpaths
From: Jesse Jones When processing a PREQ or PREP it's critical to use the incoming SN. If that is improperly done routing loops and other types of badness can happen. But the code was always processing path messages for deactivated paths. This path fixes that so that if we have a valid SN then we use it to verify that it is a message we can accept. For reference the relevant section of the standard is 13.10.8.4 which doesn't address the deactivated path case at all. I also included a special case for when our peer reboots or restarts networking. This is an important case because without it there can be a very long delay before we accept path messages from that peer. It's also a simple case and intimately associated with processing messages for deactivated paths so I used one patch instead of two. Signed-off-by: Alexis Green --- diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c index 45485f3..3c5f76a 100755 --- a/net/mac80211/mesh_hwmp.c +++ b/net/mac80211/mesh_hwmp.c @@ -79,6 +79,12 @@ static inline u16 u16_field_get(const u8 *preq_elem, int offset, bool ae) #define MSEC_TO_TU(x) (x*1000/1024) #define SN_GT(x, y) ((s32)(y - x) < 0) #define SN_LT(x, y) ((s32)(x - y) < 0) +#define MAX_SANE_SN_DELTA 32 + +static inline u32 SN_DELTA(u32 x, u32 y) +{ + return x >= y ? x - y : y - x; +} #define net_traversal_jiffies(s) \ msecs_to_jiffies(s->u.mesh.mshcfg.dot11MeshHWMPnetDiameterTraversalTime) @@ -441,6 +447,26 @@ static u32 hwmp_route_info_get(struct ieee80211_sub_if_data *sdata, process = false; fresh_info = false; } + } else if (!(mpath->flags & MESH_PATH_ACTIVE)) { + bool have_sn, newer_sn, bounced; + + have_sn = mpath->flags & MESH_PATH_SN_VALID; + newer_sn = have_sn && SN_GT(orig_sn, mpath->sn); + bounced = have_sn && + (SN_DELTA(orig_sn, mpath->sn) > + MAX_SANE_SN_DELTA); + + if (!have_sn || newer_sn) { + /* if SN is newer than what we had +* then we can take it */; + } else if (bounced) { + /* if SN is way different than what +* we had then assume the other side +* rebooted or restarted */; + } else { + process = false; + fresh_info = false; + } } } else { mpath = mesh_path_add(sdata, orig_addr); -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH py80211 0/4] py80211: add support for scheduled scan
On 12-06-15 16:00, Luca Coelho wrote: > From: Luciano Coelho > > Hi Arend, > > Here's a small patchset that adds support for scheduled scans in > py80211. Thanks! One general remark. It seems you are using soft-tabs where I stick to true tabs. Python is pretty anal about that so better stick to true tabs. > I'm not sure this is the right approach, I added separate classes for > each command, so feel free to ask me to change it completely if you > want and I may or may not do it. :P Me neither, but it may be a bit too classy ;-) So I would prefer to have a scheduled scan class with start and stop operation. Good to see you are using '_' consistently for class private members and functions. I need to clean it up in other files. I recently added Pyro support allowing remote access to py80211 objects and it only exposes public members and functions. Thanks again, Arend > Cheers, > Luca. > > Luciano Coelho (4): > py80211: scan: spin base scan classes off scan_request > py80211: scan: add sched_scan start class > py80211: add sched_scan stop class > py80211: scan: add matchsets support for scheduled scans > > lib/scan.py | 157 > +--- > 1 file changed, 119 insertions(+), 38 deletions(-) > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 2/2] staging: wilc1000: remove itypes.h
Remove itypes.h that is not needed. Signed-off-by: Chaehyun Lim --- drivers/staging/wilc1000/coreconfigurator.c | 1 - drivers/staging/wilc1000/host_interface.c | 1 - drivers/staging/wilc1000/itypes.h | 39 - 3 files changed, 41 deletions(-) delete mode 100644 drivers/staging/wilc1000/itypes.h diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c index 9abc73d..792ba6d 100644 --- a/drivers/staging/wilc1000/coreconfigurator.c +++ b/drivers/staging/wilc1000/coreconfigurator.c @@ -12,7 +12,6 @@ /*/ /* File Includes */ /*/ -#include "itypes.h" #include "coreconfigurator.h" /*/ /* Constants */ diff --git a/drivers/staging/wilc1000/host_interface.c b/drivers/staging/wilc1000/host_interface.c index ca59f1b..1e9a2f1 100644 --- a/drivers/staging/wilc1000/host_interface.c +++ b/drivers/staging/wilc1000/host_interface.c @@ -1,6 +1,5 @@ #include "host_interface.h" #include "wilc_oswrapper.h" -#include "itypes.h" #include "coreconfigurator.h" extern s32 TransportInit(void); diff --git a/drivers/staging/wilc1000/itypes.h b/drivers/staging/wilc1000/itypes.h deleted file mode 100644 index d64ae35..000 --- a/drivers/staging/wilc1000/itypes.h +++ /dev/null @@ -1,39 +0,0 @@ -/*/ -/* */ -/* Ittiam 802.11 MAC SOFTWARE*/ -/* */ -/* ITTIAM SYSTEMS PVT LTD, BANGALORE*/ -/* COPYRIGHT(C) 2005 */ -/* */ -/* This program is proprietary to Ittiam Systems Private Limited and */ -/* is protected under Indian Copyright Law as an unpublished work. Its use */ -/* and disclosure is limited by the terms and conditions of a license */ -/* agreement. It may not be copied or otherwise reproduced or disclosed to */ -/* persons outside the licensee's organization except in accordance with the*/ -/* terms and conditions of such an agreement. All copies and */ -/* reproductions shall be the property of Ittiam Systems Private Limited and*/ -/* must bear this notice in its entirety. */ -/* */ -/*/ - -/*/ -/* */ -/* File Name : itypes.h */ -/* */ -/* Description : This file contains all the data type definitions for */ -/* MAC implementation. */ -/* */ -/* List of Functions : None */ -/* Issues / Problems : None */ -/* */ -/* Revision History : */ -/* */ -/* DD MM Author(s) Changes */ -/* 01 05 2005 Ittiam Draft*/ -/* */ -/*/ - -#ifndef ITYPES_H -#define ITYPES_H - -#endif /* ITYPES_H */ -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 1/2] staging: wilc1000: remove BOOL_T typedef
Remove BOOL_T typedef. Signed-off-by: Chaehyun Lim --- drivers/staging/wilc1000/host_interface.c | 6 +++--- drivers/staging/wilc1000/itypes.h | 9 - 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/drivers/staging/wilc1000/host_interface.c b/drivers/staging/wilc1000/host_interface.c index 17ab5cd..ca59f1b 100644 --- a/drivers/staging/wilc1000/host_interface.c +++ b/drivers/staging/wilc1000/host_interface.c @@ -7698,7 +7698,7 @@ static void *host_int_ParseJoinBssParam(tstrNetworkInfo *ptstrNetworkInfo) /* HT Cap. IE */ else if (pu8IEs[index] == HT_CAPABILITY_IE) { /* if IE found set the flag */ - pNewJoinBssParam->ht_capable = BTRUE; + pNewJoinBssParam->ht_capable = true; index += pu8IEs[index + 1] + 2; /* ID,Length bytes and IE body */ /* PRINT_D(HOSTINF_DBG,"HT_CAPABALE\n"); */ continue; @@ -7709,11 +7709,11 @@ static void *host_int_ParseJoinBssParam(tstrNetworkInfo *ptstrNetworkInfo) ((pu8IEs[index + 6] == 0x00) || (pu8IEs[index + 6] == 0x01)) && /* OUI Sub Type */ (pu8IEs[index + 7] == 0x01)) { /* Presence of WMM Info/Param element indicates WMM capability */ - pNewJoinBssParam->wmm_cap = BTRUE; + pNewJoinBssParam->wmm_cap = true; /* Check if Bit 7 is set indicating U-APSD capability */ if (pu8IEs[index + 8] & (1 << 7)) { - pNewJoinBssParam->uapsd_cap = BTRUE; + pNewJoinBssParam->uapsd_cap = true; } index += pu8IEs[index + 1] + 2; continue; diff --git a/drivers/staging/wilc1000/itypes.h b/drivers/staging/wilc1000/itypes.h index 2441853..d64ae35 100644 --- a/drivers/staging/wilc1000/itypes.h +++ b/drivers/staging/wilc1000/itypes.h @@ -36,13 +36,4 @@ #ifndef ITYPES_H #define ITYPES_H -/*/ -/* Enums */ -/*/ - -typedef enum { - BFALSE = 0, - BTRUE = 1 -} BOOL_T; - #endif /* ITYPES_H */ -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html