hi!

since turning interference mitigation (ANI) on and off seems to have an 
important impact on performance, i traced it down, with both the "old" HAL 
v0.9.18.0 and the "new" HAL v0.9.30.13. superficially both do the same thing, 
but the new HAL ignores setting "intmit" to 0. well, for ath5k it doesn't 
really matter.

so ath_hal_setcapability reads and writes the following registers:

set intmit to 1 ->
R: 0x803c = 0x00000000 - AR5K_RX_FILTER_5211 ................................
R: 0x810c = 0x00000000 - AR5K_PHY_ERR_FIL    ................................
W: 0x803c = 0x00000000 - AR5K_RX_FILTER_5211 ................................
W: 0x810c = 0x02020000 - AR5K_PHY_ERR_FIL    ......1.......1.................
R: 0x0034 = 0x00000005 - AR5K_RXCFG          .............................1.1
W: 0x0034 = 0x00000015 - AR5K_RXCFG          ...........................1.1.1
set intmit <-
set intmit to 0 ->
R: 0x803c = 0x00000000 - AR5K_RX_FILTER_5211 ................................
R: 0x810c = 0x02020000 - AR5K_PHY_ERR_FIL    ......1.......1.................
W: 0x803c = 0x00000000 - AR5K_RX_FILTER_5211 ................................
W: 0x810c = 0x00000000 - AR5K_PHY_ERR_FIL    ................................
R: 0x0034 = 0x00000015 - AR5K_RXCFG          ...........................1.1.1
W: 0x0034 = 0x00000005 - AR5K_RXCFG          .............................1.1
set intmit <-

turning on ANI does, in terms of ath5k:

 1) write (AR5K_PHY_ERR_FIL_OFDM | AR5K_PHY_ERR_FIL_CCK) to AR5K_PHY_ERR_FIL
 2) set the bit that is currently defined as AR5K_RXCFG_ZLFDMA in AR5K_RXCFG

turning it off unsets these bits.

now i wonder about AR5K_RXCFG_ZLFDMA which is supposed to be, according to our 
comments /* Zero-length DMA */ - is it maybe something else (ANI)? or did i 
miss something?

also turning ANI on (or not turning it off, more precicely) adds the following 
in ath_hal_startpcurecv (which is done unconditionally in the new HAL): 

1020: R: 0x8090 = 0x00000000 - AR5K_ACK_FAIL_5211   
1021: R: 0x808c = 0x00000000 - AR5K_RTS_FAIL_5211   
1022: R: 0x8094 = 0x00000000 - AR5K_FCS_FAIL_5211   
1023: R: 0x8088 = 0x00000000 - AR5K_RTS_OK_5211     
1024: R: 0x8098 = 0x00000000 - AR5K_BEACON_CNT_5211 
1025: W: 0x8124 = 0x00000000 - unknown              
1026: W: 0x8128 = 0x00000000 - unknown              
1027: W: 0x0040 = 0x00000000 - AR5K_MIBC            
1028: W: 0x8130 = 0x00020000 - unknown              
1029: W: 0x8138 = 0x02000000 - unknown              
1030: R: 0x9850 = 0x0de8b0e0 - AR5K_PHY(20)         
1031: W: 0x9850 = 0x0c98b0e0 - AR5K_PHY(20)         
1032: R: 0x985c = 0x3137665e - AR5K_PHY_AGCCOARSE   
1033: W: 0x985c = 0x3137605e - AR5K_PHY_AGCCOARSE   
1034: R: 0x985c = 0x3137605e - AR5K_PHY_AGCCOARSE   
1035: W: 0x985c = 0x3139605e - AR5K_PHY_AGCCOARSE   
1036: R: 0x9858 = 0x7e800d2e - AR5K_PHY_SIG         
1037: W: 0x9858 = 0x7ec80d2e - AR5K_PHY_SIG         
1038: R: 0x9924 = 0x10058a05 - AR5K_PHY(73)         
1039: W: 0x9924 = 0x10058a05 - AR5K_PHY(73)         
1040: R: 0x9858 = 0x7ec80d2e - AR5K_PHY_SIG         
1041: W: 0x9858 = 0x7ec80d2e - AR5K_PHY_SIG         
1042: R: 0x986c = 0x050cb081 - AR5K_PHY(27)         
1043: W: 0x986c = 0x051ff081 - AR5K_PHY(27)         
1044: R: 0x986c = 0x051ff081 - AR5K_PHY(27)         
1045: W: 0x986c = 0x0ffff081 - AR5K_PHY(27)         
1046: R: 0x9868 = 0x409a4190 - AR5K_PHY(26)         
1047: W: 0x9868 = 0x40fe4190 - AR5K_PHY(26)         
1048: R: 0x9868 = 0x40fe4190 - AR5K_PHY(26)         
1049: W: 0x9868 = 0x7ffe4190 - AR5K_PHY(26)         
1050: R: 0x9868 = 0x7ffe4190 - AR5K_PHY(26)         
1051: W: 0x9868 = 0x7ffe419f - AR5K_PHY(26)         
1052: R: 0x986c = 0x0ffff081 - AR5K_PHY(27)         
1053: W: 0x986c = 0x0fffff81 - AR5K_PHY(27)         
1054: R: 0x986c = 0x0fffff81 - AR5K_PHY(27)         
1055: W: 0x986c = 0x0fffff80 - AR5K_PHY(27)         
1056: R: 0xa208 = 0xd03e6788 - AR5K_PHY(642)        
1057: W: 0xa208 = 0xd03e6788 - AR5K_PHY(642)        

now, here my understanding stops, maybe you guys can make more of that?
i put the original traces + some conversions of them at 
http://br1.einfach.org/ath/ani.tgz

that was a AR5212. "old" = HAL v0.9.18.0, "new" = HAL v0.9.30.13.

bruno


_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to