Hi all,
I am using mac80211 and ath9k.
I put a debug trace in the net/wireless/scan.c, in
cfg80211_inform_bss_frame().
I exercise scanning with wpa_supplicant and I monitor the air with
wireshark/airpcapN.
Each time a probe response frame is received, I can see that
cfg80211_inform_bss_frame() is called *twice.*
I wonder if this is really needed ? Is it possible to remove one of the
calls ?
AFAICT, mac80211/scan.c/ieee80211_bss_info_update() is called along two
paths,
1) in mac80211/rx.c, from __ieee80211_rx_handle_packet() and
ieee80211_scan_rx()
2) in mac80211/mlme.c, from the work queue calling
ieee80211_sta_rx_queued_mgmt()
=> ieee80211_rx_mgmt_probe_resp() => ieee80211_rx_bss_info()
Maybe part of the call to ieee80211_scan_rx() could be delayed and merged
later when ieee80211_rx_mgmt_probe_resp() is called ? Any comments ?
I am using compat-wireless-2013-04-16.
On Wed, 2014-02-26 at 17:49 +0100, Jean-Pierre Tosoni wrote:
> Hi all,
>
> I am using mac80211 and ath9k.
> I put a debug trace in the net/wireless/scan.c, in
> cfg80211_inform_bss_frame().
> I exercise scanning with wpa_supplicant and I monitor the air with
> wireshark/airpcapN.
> Each time a probe response frame is received, I can see that
> cfg80211_inform_bss_frame() is called *twice.*
>
> I wonder if this is really needed ? Is it possible to remove one of the
> calls ?
>
> AFAICT, mac80211/scan.c/ieee80211_bss_info_update() is called along two
> paths,
> 1) in mac80211/rx.c, from __ieee80211_rx_handle_packet() and
> ieee80211_scan_rx()
> 2) in mac80211/mlme.c, from the work queue calling
> ieee80211_sta_rx_queued_mgmt()
> => ieee80211_rx_mgmt_probe_resp() => ieee80211_rx_bss_info()
>
> Maybe part of the call to ieee80211_scan_rx() could be delayed and merged
> later when ieee80211_rx_mgmt_probe_resp() is called ? Any comments ?
Not easily - the latter call is very much filtered. However, the
scan_rx() one should only do something during scan, I believe, and the
other *not* during scan?
johannes