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