On 11/21/2011 3:09 PM, Adrian Chadd wrote:
> Hi,
>
> See if those valid or invalid RSSI's coincide with aggregate frames.
>
> ath9k_process_rssi() has a bit of logic which only considers frames
> that aren't part of continuing aggregate:
>
>          if (rx_stats->rs_rssi != ATH9K_RSSI_BAD&&  !rx_stats->rs_moreaggr)
>                  ATH_RSSI_LPF(sc->last_rssi, rx_stats->rs_rssi);
>
> .. ie, rs_moreaggr is set if the frame is part of an aggregate, clear
> if it's not an aggregate or is the last frame in an aggregate.
>
>
> Adrian


Hey Adrian!


Excellent call! So in mac.c:ath9k_hw_rxprocdesc() I put a three printk 
(in the following order) for when I detect the out-of-bounds rssi, an 
aggregate, and if there is more to the aggregate. As you can see below 
when my check is triggered on aggregate frames only.

Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.298868] [ath9k] frame 
is aggr: false
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300420] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300422] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300426] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300433] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300435] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300439] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300444] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300446] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300450] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300456] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.300460] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302637] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302641] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302645] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302654] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302657] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302662] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302670] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302674] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302679] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302687] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302692] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302700] [ath9k] frame 
is aggr: false
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302707] [ath9k] frame 
is aggr: false
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302714] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302717] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.302722] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304683] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304686] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304689] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304696] [ath9k] 
overriding RSSI
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304698] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304701] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304707] [ath9k] frame 
is aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304710] [ath9k] frame 
has more aggr: true
Nov 22 12:20:03 dpsmith-dev-system kernel: [357695.304716] [ath9k] frame 
is aggr: false

To verify that it was only tripped on aggregate frames,

$ grep -A 1 overriding /var/log/kern.log|grep -B 1 false
Nov 22 08:09:09 dpsmith-dev-system kernel: [342641.360141] [ath9k] 
overriding RSSI
Nov 22 08:09:09 dpsmith-dev-system kernel: [342641.360145] [ath9k] frame 
is aggr: false
--
Nov 22 08:14:53 dpsmith-dev-system kernel: [342985.292829] [ath9k] 
overriding RSSI
Nov 22 08:14:53 dpsmith-dev-system kernel: [342985.292834] [ath9k] frame 
is aggr: false
--
Nov 22 08:21:23 dpsmith-dev-system kernel: [343375.366725] [ath9k] 
overriding RSSI
Nov 22 08:21:23 dpsmith-dev-system kernel: [343375.366729] [ath9k] frame 
is aggr: false
--
Nov 22 12:25:06 dpsmith-dev-system kernel: [357998.381999] [ath9k] 
overriding RSSI
Nov 22 12:25:06 dpsmith-dev-system kernel: [357998.382004] [ath9k] frame 
is aggr: false

I did not print the combined and max RSSI, but I think these four are 
anomalies where abs(combined - max) was slightly over 10. Which probably 
was valid as 10 was chosen as a guesstimate more than a scientifically 
proven value.

So the question I have is that, is there a reason not to run 
ath9k_process_rssi on frames from a monitor interface? From what I read 
of that function as long as last_rssi != ATH_RSSI_DUMMY_MARKER then 
rs->rs_rssi will get set to last_rssi, which gets recalculated just 
before one of these incidents.

Thanks for the help!

Daniel

_______________________________________________
ath9k-devel mailing list
[email protected]
https://lists.ath9k.org/mailman/listinfo/ath9k-devel

Reply via email to