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
