git: wlan - if_ath driver - Make some adjustments to ath (prelim

看板DFBSD_commit作者時間15年前 (2010/09/08 16:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 0c208ba482c80073e86a7d8412cdd547fd1a3d82 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Wed Sep 8 00:20:23 2010 -0700 wlan - if_ath driver - Make some adjustments to ath (preliminary) These adjustments correct some chip races and appear to fix issues related to running the wlan in AP mode with the atheros driver. * Fix a bug in ath_txqmove(). This bug was hidden due to a queue length check in the one place that used the routine but fix it anyway. * Call stoptxdma() before messing with the beacon linkages rather than afterwords (ap mode). I'm a bit unclear as to whether the previously installed beacon should have been allowed to continue to run if no new beacons are found. For now it isn't. * Redo the qbusy logic. The old logic had at least 2 chipset/driver races related to the link field. The new logic makes no assumptions and only reactivates the txdma if the queue is clearly idle and we are adding the first (bf) to it. Otherwise leave it to the INT_TX code to detect where the txdma stopped and restart it at the appropriate place. This bit of code needs more work as the INT_TX for tx completion may be delayed indefinitely (we might need a callout check in there too, I'm not sure). * For the moment use MB_WAIT when loading or replentishing the receive ring. There does not appear to be a proper mechanism to deal with stalls that might be created if a mbuf fails to allocate. What we really need here is proper rx ring mbuf replacement logic where the filled mbuf is NOT removed if no new mbuf can be allocated to take its place. Using MB_WAIT is a bad hack. It isn't entirely trivial due to the DMA load and the 32 bit address space restriction. * Add a few cpu_sfence()s when poking the (bf) link field. This probably isn't correct. * Cleanup, add some debugging kprintf()s for a few unexpected conditions Summary of changes: sys/dev/netif/ath/ath/if_ath.c | 210 ++++++++++++-------- sys/dev/netif/ath/ath/if_ath_pci.c | 2 +- sys/dev/netif/ath/hal/ath_hal/ar5210/ar5210_xmit.c | 1 + sys/dev/netif/ath/hal/ath_hal/ar5211/ar5211_xmit.c | 1 + sys/dev/netif/ath/hal/ath_hal/ar5212/ar5212_xmit.c | 2 + 5 files changed, 133 insertions(+), 83 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0c208ba482c80073e86a7d8412cdd547fd1a3d82 -- DragonFly BSD source repository
文章代碼(AID): #1CXqB3v7 (DFBSD_commit)