[PATCH] Per chain RSSI reporting
norikd at ethertronics.com
Sat May 27 01:30:28 PDT 2017
I've been looking at this more and I believe that smoothing/filtering anywhere other than as close as possible to where the ppdu gets unpacked will have the disadvantage of being negatively influenced by 'out of band' values since the average is not computed or averaged in the upper layers until invoked from their callers? The possibility then exists for several 'out of band' values to make their way to the upper layers if the queries happen to coincide with bad values being fed from the hardware unfiltered from ppdu unpacking.
The ath10k_htt_rx_h_channel function considers every rx event and has a 100% likelihood of successfully cleaning up the data.
Because of this, I think a reasonable approach would be to introduce a module parameter that can be set to a filter value with 0 as the default or no filter/smooth function applies.
Does something like this seem reasonable?
** in core.h
** in core.c
MODULE_PARAM_DESC(ath10k_chain_rssi_avg, "Running average/filter of immediate per chain rssi value");
** in htt_rx.c
allocate space based on ath10k_chain_rssi_avg, do the average and cleanup
On 05/26/2017 07:09 PM, Norik Dzhandzhapanyan wrote:
> Hi Adrian,
> Inserting the smoothing function here is motivated by what we see as 'spikes' in rssi data under weak rssi conditions. Figured its best to get rid of the 'bogus' data as close to the source as possible. Also to minimize the impact on the changes.
> I believe the averaging that happens at higher levels is based on EWMA macros in net/mac80211/sta_info.c which not wifi card/chipset specific. Didn't want to touch that since other cards seem to not have this spikey behavior. And, it doesnt seem to have an effect on the ath10k data anyway (iw reports the exact same values for both).
> I wonder if it would be acceptable to pass a module load time parameter which would indicate an average factor with 0 (as default) to indicate no averaging?
> Another option would be to add the chain_signal_avg field to the ieee80211_tx_status struct in mac80211.h to expose the average value up the stack this way? I haven't looked too deep on what this entails though and I didn't want to risk impacting anything else.
> So yes.. I am OK with the per-chain RSSI changes first.
> From: adrian.chadd at gmail.com <adrian.chadd at gmail.com> on behalf of Adrian Chadd <adrian at freebsd.org>
> Sent: Friday, May 26, 2017 6:12 PM
> To: Norik Dzhandzhapanyan
> Cc: ath10k at lists.infradead.org; linux-wireless at vger.kernel.org
> Subject: Re: [PATCH] Per chain RSSI reporting
> I have something local that I've been meaning to push up to do this,
> but with no smoothing. Ideally (!) smoothing is done optionally in
> What do you think about just committing the per-chain RSSI stuff to
> mac80211 so it shows up right now, and then we figure out how to
> express the smoothing in mac80211 or further up the layers?
> (We care about packet-to-packet RSSI values for "reasons" - mostly
> bring-up and board validation, but also for runtime link checks.)
The contents of this transmission are Ethertronics Inc. Confidential and may contain proprietary or legally privileged information which may not be disclosed, copied or distributed without the express written consent of Ethertronics Inc. The information is intended to be for the use of the individual or entity named on this transmission. If you are not the intended recipient, be aware that any disclosure, copying, distribution or use of the contents of this information is prohibited. If you have received this transmission in error, please notify us by telephone immediately so that we can arrange for the retrieval of the original documents at no cost to you. Alternatively, notify the sender by replying to this transmission and delete the message without disclosing it. Thank you
More information about the ath10k