[PATCH 5/5] staging: wilc1000: use mutex instead of struct semaphore hSemScanReq
This patch replaces struct semaphore hSemScanReq with struct mutex scan_req_lock. It is better to use mutex than semaphore. Signed-off-by: Chaehyun Lim--- drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 10 +- drivers/staging/wilc1000/wilc_wfi_netdevice.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c index f6aec47..358632b 100644 --- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c @@ -451,7 +451,7 @@ static void CfgScanResult(enum scan_event scan_event, } else if (scan_event == SCAN_EVENT_DONE) { refresh_scan(priv, 1, false); - down(&(priv->hSemScanReq)); + mutex_lock(>scan_req_lock); if (priv->pstrScanReq) { cfg80211_scan_done(priv->pstrScanReq, false); @@ -459,9 +459,9 @@ static void CfgScanResult(enum scan_event scan_event, priv->bCfgScanning = false; priv->pstrScanReq = NULL; } - up(&(priv->hSemScanReq)); + mutex_unlock(>scan_req_lock); } else if (scan_event == SCAN_EVENT_ABORTED) { - down(&(priv->hSemScanReq)); + mutex_lock(>scan_req_lock); if (priv->pstrScanReq) { update_scan_time(); @@ -471,7 +471,7 @@ static void CfgScanResult(enum scan_event scan_event, priv->bCfgScanning = false; priv->pstrScanReq = NULL; } - up(&(priv->hSemScanReq)); + mutex_unlock(>scan_req_lock); } } } @@ -2307,7 +2307,7 @@ int wilc_init_host_int(struct net_device *net) priv->bInP2PlistenState = false; - sema_init(&(priv->hSemScanReq), 1); + mutex_init(>scan_req_lock); s32Error = wilc_init(net, >hif_drv); if (s32Error) netdev_err(net, "Error while initializing hostinterface\n"); diff --git a/drivers/staging/wilc1000/wilc_wfi_netdevice.h b/drivers/staging/wilc1000/wilc_wfi_netdevice.h index 94a41b4..3d0ca8e 100644 --- a/drivers/staging/wilc1000/wilc_wfi_netdevice.h +++ b/drivers/staging/wilc1000/wilc_wfi_netdevice.h @@ -130,7 +130,7 @@ struct wilc_priv { struct wilc_wfi_key *wilc_ptk[MAX_NUM_STA]; u8 wilc_groupkey; /* semaphores */ - struct semaphore hSemScanReq; + struct mutex scan_req_lock; /* */ bool gbAutoRateAdjusted; -- 2.7.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 3/5] staging: wilc1000: change data type of wid argument in wilc_wlan_cfg_get_val
This patch changes data type of wid argument in wilc_wlan_cfg_get_val from u32 to u16. It is better to change data type of wid because wid has one of enum WID_T that is data type of u16. And, there is no need to use u16 type casting when calling wilc_wlan_cfg_get_wid_value function. Signed-off-by: Chaehyun Lim--- drivers/staging/wilc1000/wilc_wlan.c | 4 ++-- drivers/staging/wilc1000/wilc_wlan.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_wlan.c b/drivers/staging/wilc1000/wilc_wlan.c index db79ae2..7da3b4a 100644 --- a/drivers/staging/wilc1000/wilc_wlan.c +++ b/drivers/staging/wilc1000/wilc_wlan.c @@ -1276,9 +1276,9 @@ int wilc_wlan_cfg_get(struct wilc_vif *vif, int start, u16 wid, int commit, return ret_size; } -int wilc_wlan_cfg_get_val(u32 wid, u8 *buffer, u32 buffer_size) +int wilc_wlan_cfg_get_val(u16 wid, u8 *buffer, u32 buffer_size) { - return wilc_wlan_cfg_get_wid_value((u16)wid, buffer, buffer_size); + return wilc_wlan_cfg_get_wid_value(wid, buffer, buffer_size); } int wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids, diff --git a/drivers/staging/wilc1000/wilc_wlan.h b/drivers/staging/wilc1000/wilc_wlan.h index 38edeeb..30e5312 100644 --- a/drivers/staging/wilc1000/wilc_wlan.h +++ b/drivers/staging/wilc1000/wilc_wlan.h @@ -288,7 +288,7 @@ int wilc_wlan_cfg_set(struct wilc_vif *vif, int start, u16 wid, u8 *buffer, u32 buffer_size, int commit, u32 drv_handler); int wilc_wlan_cfg_get(struct wilc_vif *vif, int start, u16 wid, int commit, u32 drv_handler); -int wilc_wlan_cfg_get_val(u32 wid, u8 *buffer, u32 buffer_size); +int wilc_wlan_cfg_get_val(u16 wid, u8 *buffer, u32 buffer_size); int wilc_wlan_txq_add_mgmt_pkt(struct net_device *dev, void *priv, u8 *buffer, u32 buffer_size, wilc_tx_complete_func_t func); void wilc_chip_sleep_manually(struct wilc *wilc); -- 2.7.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 4/5] staging: wilc1000: remove unused struct semaphore SemHandleUpdateStats
struct semaphore SemHandleUpdateStats is defined but never used in this driver, so just remove it. Signed-off-by: Chaehyun Lim--- drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 1 - drivers/staging/wilc1000/wilc_wfi_netdevice.h | 1 - 2 files changed, 2 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c index 5785dda..f6aec47 100644 --- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c @@ -2262,7 +2262,6 @@ struct wireless_dev *wilc_create_wiphy(struct net_device *net, struct device *de } priv = wdev_priv(wdev); - sema_init(&(priv->SemHandleUpdateStats), 1); priv->wdev = wdev; wdev->wiphy->max_scan_ssids = MAX_NUM_PROBED_SSID; #ifdef CONFIG_PM diff --git a/drivers/staging/wilc1000/wilc_wfi_netdevice.h b/drivers/staging/wilc1000/wilc_wfi_netdevice.h index debb139..94a41b4 100644 --- a/drivers/staging/wilc1000/wilc_wfi_netdevice.h +++ b/drivers/staging/wilc1000/wilc_wfi_netdevice.h @@ -130,7 +130,6 @@ struct wilc_priv { struct wilc_wfi_key *wilc_ptk[MAX_NUM_STA]; u8 wilc_groupkey; /* semaphores */ - struct semaphore SemHandleUpdateStats; struct semaphore hSemScanReq; /* */ bool gbAutoRateAdjusted; -- 2.7.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 2/5] staging: wilc1000: change data type of wid argument in wilc_wlan_cfg_get
This patch changes data type of wid argument in wilc_wlan_cfg_get from u32 to u16. It is better to change data type of wid because wid has one of enum WID_T that is data type of u16. And, there is no need to use u16 type casting when calling wilc_wlan_cfg_get_wid function. Signed-off-by: Chaehyun Lim--- drivers/staging/wilc1000/wilc_wlan.c | 5 ++--- drivers/staging/wilc1000/wilc_wlan.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_wlan.c b/drivers/staging/wilc1000/wilc_wlan.c index d09aa3b..db79ae2 100644 --- a/drivers/staging/wilc1000/wilc_wlan.c +++ b/drivers/staging/wilc1000/wilc_wlan.c @@ -1239,7 +1239,7 @@ int wilc_wlan_cfg_set(struct wilc_vif *vif, int start, u16 wid, u8 *buffer, return ret_size; } -int wilc_wlan_cfg_get(struct wilc_vif *vif, int start, u32 wid, int commit, +int wilc_wlan_cfg_get(struct wilc_vif *vif, int start, u16 wid, int commit, u32 drv_handler) { u32 offset; @@ -1253,8 +1253,7 @@ int wilc_wlan_cfg_get(struct wilc_vif *vif, int start, u32 wid, int commit, wilc->cfg_frame_offset = 0; offset = wilc->cfg_frame_offset; - ret_size = wilc_wlan_cfg_get_wid(wilc->cfg_frame.frame, offset, -(u16)wid); + ret_size = wilc_wlan_cfg_get_wid(wilc->cfg_frame.frame, offset, wid); offset += ret_size; wilc->cfg_frame_offset = offset; diff --git a/drivers/staging/wilc1000/wilc_wlan.h b/drivers/staging/wilc1000/wilc_wlan.h index ef70642..38edeeb 100644 --- a/drivers/staging/wilc1000/wilc_wlan.h +++ b/drivers/staging/wilc1000/wilc_wlan.h @@ -286,7 +286,7 @@ void wilc_handle_isr(struct wilc *wilc); void wilc_wlan_cleanup(struct net_device *dev); int wilc_wlan_cfg_set(struct wilc_vif *vif, int start, u16 wid, u8 *buffer, u32 buffer_size, int commit, u32 drv_handler); -int wilc_wlan_cfg_get(struct wilc_vif *vif, int start, u32 wid, int commit, +int wilc_wlan_cfg_get(struct wilc_vif *vif, int start, u16 wid, int commit, u32 drv_handler); int wilc_wlan_cfg_get_val(u32 wid, u8 *buffer, u32 buffer_size); int wilc_wlan_txq_add_mgmt_pkt(struct net_device *dev, void *priv, u8 *buffer, -- 2.7.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 1/5] staging: wilc1000: change data type of wid argument in wilc_wlan_cfg_set
This patch changes data type of wid argument in wilc_wlan_cfg_set from u32 to u16. It is better to change data type of wid because wid has one of enum WID_T that is data type of u16. And, there is no need to use u16 type casting when calling wilc_wlan_cfg_set_wid function. Signed-off-by: Chaehyun Lim--- drivers/staging/wilc1000/wilc_wlan.c | 4 ++-- drivers/staging/wilc1000/wilc_wlan.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_wlan.c b/drivers/staging/wilc1000/wilc_wlan.c index 30e1c03..d09aa3b 100644 --- a/drivers/staging/wilc1000/wilc_wlan.c +++ b/drivers/staging/wilc1000/wilc_wlan.c @@ -1197,7 +1197,7 @@ static int wilc_wlan_cfg_commit(struct wilc_vif *vif, int type, return 0; } -int wilc_wlan_cfg_set(struct wilc_vif *vif, int start, u32 wid, u8 *buffer, +int wilc_wlan_cfg_set(struct wilc_vif *vif, int start, u16 wid, u8 *buffer, u32 buffer_size, int commit, u32 drv_handler) { u32 offset; @@ -1212,7 +1212,7 @@ int wilc_wlan_cfg_set(struct wilc_vif *vif, int start, u32 wid, u8 *buffer, offset = wilc->cfg_frame_offset; ret_size = wilc_wlan_cfg_set_wid(wilc->cfg_frame.frame, offset, -(u16)wid, buffer, buffer_size); +wid, buffer, buffer_size); offset += ret_size; wilc->cfg_frame_offset = offset; diff --git a/drivers/staging/wilc1000/wilc_wlan.h b/drivers/staging/wilc1000/wilc_wlan.h index bcd4bfa..ef70642 100644 --- a/drivers/staging/wilc1000/wilc_wlan.h +++ b/drivers/staging/wilc1000/wilc_wlan.h @@ -284,7 +284,7 @@ int wilc_wlan_txq_add_net_pkt(struct net_device *dev, void *priv, u8 *buffer, int wilc_wlan_handle_txq(struct net_device *dev, u32 *txq_count); void wilc_handle_isr(struct wilc *wilc); void wilc_wlan_cleanup(struct net_device *dev); -int wilc_wlan_cfg_set(struct wilc_vif *vif, int start, u32 wid, u8 *buffer, +int wilc_wlan_cfg_set(struct wilc_vif *vif, int start, u16 wid, u8 *buffer, u32 buffer_size, int commit, u32 drv_handler); int wilc_wlan_cfg_get(struct wilc_vif *vif, int start, u32 wid, int commit, u32 drv_handler); -- 2.7.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: [PATCH] brcmfmac: sdio: remove unused variable retry_limit
Hi All, On Mon, Mar 21, 2016 at 4:34 AM, Colin Kingwrote: > From: Colin Ian King > > retry_limit has never been used during the life of this driver, so > we may as well remove it as it is redundant. > > Signed-off-by: Colin Ian King Looks right to me. Reviewed-by: Julian Calaby > --- > drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 --- > 1 file changed, 3 deletions(-) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > index 43fd3f4..cd92ba7 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > @@ -535,9 +535,6 @@ static int qcount[NUMPRIO]; > > #define RETRYCHAN(chan) ((chan) == SDPCM_EVENT_CHANNEL) > > -/* Retry count for register access failures */ > -static const uint retry_limit = 2; > - > /* Limit on rounding up frames */ > static const uint max_roundup = 512; > > -- > 2.7.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 -- Julian Calaby Email: julian.cal...@gmail.com Profile: http://www.google.com/profiles/julian.calaby/ -- 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: rtl8723au: Remove function rtw_enqueue_{recvbuf23a/recvbuf23a_to_head}
Hi All, On Sat, Mar 26, 2016 at 5:24 PM, Bhumika Goyalwrote: > The functions rtw_enqueue_recvbuf23a and rtw_enqueue_recvbuf23a_to_head > are never used anywhere in the kernel. So, remove their definition and > prototype. > Grepped to find occurences. > > Signed-off-by: Bhumika Goyal Looks right to me. Reviewed-by: Julian Calaby > --- > drivers/staging/rtl8723au/core/rtw_recv.c| 25 - > drivers/staging/rtl8723au/include/rtw_recv.h | 2 -- > 2 files changed, 27 deletions(-) > > diff --git a/drivers/staging/rtl8723au/core/rtw_recv.c > b/drivers/staging/rtl8723au/core/rtw_recv.c > index 989ed07..150dabc 100644 > --- a/drivers/staging/rtl8723au/core/rtw_recv.c > +++ b/drivers/staging/rtl8723au/core/rtw_recv.c > @@ -211,31 +211,6 @@ u32 rtw_free_uc_swdec_pending_queue23a(struct > rtw_adapter *adapter) > return cnt; > } > > -int rtw_enqueue_recvbuf23a_to_head(struct recv_buf *precvbuf, struct > rtw_queue *queue) > -{ > - spin_lock_bh(>lock); > - > - list_del_init(>list); > - list_add(>list, get_list_head(queue)); > - > - spin_unlock_bh(>lock); > - > - return _SUCCESS; > -} > - > -int rtw_enqueue_recvbuf23a(struct recv_buf *precvbuf, struct rtw_queue > *queue) > -{ > - unsigned long irqL; > - > - spin_lock_irqsave(>lock, irqL); > - > - list_del_init(>list); > - > - list_add_tail(>list, get_list_head(queue)); > - spin_unlock_irqrestore(>lock, irqL); > - return _SUCCESS; > -} > - > struct recv_buf *rtw_dequeue_recvbuf23a (struct rtw_queue *queue) > { > unsigned long irqL; > diff --git a/drivers/staging/rtl8723au/include/rtw_recv.h > b/drivers/staging/rtl8723au/include/rtw_recv.h > index dc784be..85a5edb 100644 > --- a/drivers/staging/rtl8723au/include/rtw_recv.h > +++ b/drivers/staging/rtl8723au/include/rtw_recv.h > @@ -279,8 +279,6 @@ int rtw_enqueue_recvframe23a(struct recv_frame > *precvframe, struct rtw_queue *qu > > u32 rtw_free_uc_swdec_pending_queue23a(struct rtw_adapter *adapter); > > -int rtw_enqueue_recvbuf23a_to_head(struct recv_buf *precvbuf, struct > rtw_queue *queue); > -int rtw_enqueue_recvbuf23a(struct recv_buf *precvbuf, struct rtw_queue > *queue); > struct recv_buf *rtw_dequeue_recvbuf23a(struct rtw_queue *queue); > > void rtw_reordering_ctrl_timeout_handler23a(unsigned long pcontext); > -- > 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 -- Julian Calaby Email: julian.cal...@gmail.com Profile: http://www.google.com/profiles/julian.calaby/ -- 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: rtl8723au: Remove unused functions
Hi All, On Sat, Mar 26, 2016 at 5:14 PM, Bhumika Goyalwrote: > The functions rtw_get_oper_bw23a and rtw_get_oper_ch23aoffset are never > used anywhere in the kernel. So, remove their definition and prototype. > Grepped to find occurences. > > Signed-off-by: Bhumika Goyal Looks right to me. Reviewed-by: Julian Calaby > --- > drivers/staging/rtl8723au/core/rtw_wlan_util.c | 10 -- > drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 2 -- > 2 files changed, 12 deletions(-) > > diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c > b/drivers/staging/rtl8723au/core/rtw_wlan_util.c > index cc2b84b..694cf17 100644 > --- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c > +++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c > @@ -304,21 +304,11 @@ inline void rtw_set_oper_ch23a(struct rtw_adapter > *adapter, u8 ch) > adapter_to_dvobj(adapter)->oper_channel = ch; > } > > -inline u8 rtw_get_oper_bw23a(struct rtw_adapter *adapter) > -{ > - return adapter_to_dvobj(adapter)->oper_bwmode; > -} > - > inline void rtw_set_oper_bw23a(struct rtw_adapter *adapter, u8 bw) > { > adapter_to_dvobj(adapter)->oper_bwmode = bw; > } > > -inline u8 rtw_get_oper_ch23aoffset(struct rtw_adapter *adapter) > -{ > - return adapter_to_dvobj(adapter)->oper_ch_offset; > -} > - > inline void rtw_set_oper_ch23aoffset23a(struct rtw_adapter *adapter, u8 > offset) > { > adapter_to_dvobj(adapter)->oper_ch_offset = offset; > diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h > b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h > index ea2a6c9..0e7d3da 100644 > --- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h > +++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h > @@ -461,9 +461,7 @@ void Update23aTblForSoftAP(u8 *bssrateset, u32 > bssratelen); > > u8 rtw_get_oper_ch23a(struct rtw_adapter *adapter); > void rtw_set_oper_ch23a(struct rtw_adapter *adapter, u8 ch); > -u8 rtw_get_oper_bw23a(struct rtw_adapter *adapter); > void rtw_set_oper_bw23a(struct rtw_adapter *adapter, u8 bw); > -u8 rtw_get_oper_ch23aoffset(struct rtw_adapter *adapter); > void rtw_set_oper_ch23aoffset23a(struct rtw_adapter *adapter, u8 offset); > > void set_channel_bwmode23a(struct rtw_adapter *padapter, unsigned char > channel, > -- > 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 -- Julian Calaby Email: julian.cal...@gmail.com Profile: http://www.google.com/profiles/julian.calaby/ -- 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
wireless-testing updated for 4.6
Linus released 4.6-rc1 yesterday, so wireless-testing is now updated to 4.6 and resuming near-daily updates. Do let me know of any issues. -- 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
Re: Bonjour mDNS broacast can be lost during BT-WLAN coexistence schemes?
These folk claim an open source prototype. http://www.sigcomm.org/sites/default/files/ccr/papers/2014/January/2567561-2567567.pdf -- 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: Bonjour mDNS broacast can be lost during BT-WLAN coexistence schemes?
On 27 March 2016 at 09:43, sandeep sureshwrote: > Dear Experts, > > WiFi-BT Coexistence: > To let wireless LAN systems coexist with Bluetooth system, a hardware Packet > Traffic Arbiter (PTA) scheme is used. Here PTA is based on 2-wire > coexistence , BT_ACTIVE and WL_ACTIVE. When BT wants to use the medium, it > will assert the BT_ACTIVE line, during which WLAN cannot perform any > transactions. When WLAN is in client mode, during this assertion period > waiting for a packet from WLAN router (AP) to be received , WLAN packet will > be lost !!! Let us call this window during which WiFi being stomped by BT > as stomping window. WLAN device in client mode considered here is based on > AR9287 chipset and let us call this as Apple accessory > > Bonjour discovery: > Apple devices connect to the same WiFi router to which the Apple accessory > is also connected. Apple device is also connected in WiFi client mode. In > order to determine other clients (Apple compatible) in the same network, it > performs Bonjour discovery which is based on mDNS broadcast. > > Concern/Query:- > The mDNS query is a broadcast query received from Apple device and sent by > the WiFi AP to the WiFi network (to which the apple accessory is also > connected) only once. The period of reception of this broadcast query can > coincide with the stomping window. Hence the broadcast query can be lost by > Apple accessory. This might result in discovery, pair verify (later) from > apple devices to fail. Apple devices implement a back-off strategy and as > per this the next discovery will be after 10s of minutes. During this long > period the WiFi client based apple accessory will be offline > Is the understanding and concern correct? If so, how can this be solved via > ath9k drivers and/or settings in WiFi AP? Well, sure. I mean, the bluetooth coexistence code is just designed to ensure that they stomp predictably and can be controlled. I didn't think the pair/discovery would take so long though, so I'd go and figure out what's going on there. You can set up the weights and stomping preference for controlling bluetooth and wifi. I think at the moment ath9k (and freebsd) just use a static weight matrix and prefer bt? I forget. There's some extensions to 802.11 (802.11aa, at least) which allows for reliable multicast. That means it gets replicated to each device that asks for it, and it gets ACKed/retransmitted/etc. I don't know of anything open source that implements all of that. -adrian -- 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