I visited my parents last weekend with a pandora, and it turned out they have "incompatible" router with wifi power saving. PS is working fine here at home and disabling it doesn't give much positive effect, but there it went from 10-20KB/s with PS to ~350KB/s without (maxing out their Internet connection). However occasionally that router works fine with PS too, so as usual it's all inconsistent and confusing.
So when it went bad, I was able to do a bit driver-level debugging and found, with certain level or confidence, which firmware commands were causing problems. I've also found out that Linux wifi stack (mac80211) is trying to do dynamic power saving, i.e. it automatically turns off power saving when there is data to transfer and turns it back on when queues are empty for ~100ms. But what I found later is that this wifi chip is not very happy to change powersave modes too often, it takes it ~150+ ms to turn on PS and ~50ms to turn it off. Meanwhile, depending on load, stack may be switching states at 100ms internals, which means the chip is often interrupted in it's PS change sequence, which causes it misbehave. I did not have time for much coding at my parents' and had to go home (it's over 3h drive to them so I don't go there too often).
So I did some driver tweaks during this week, mainly to stop it switch PS states too often. I've also optimized scheduling a bit (moved transfers to dedicated thread to avoid context switching), optimized firmware command polling and register reads (see
http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=shortlog for code changes). With this I seem to get a bit of performance improvement and more stable transfers here at home. I don't know if it fixes problems with my parents' router as I won't be able to test with it for some time.
The wifi tweaks are available along with slightly newer kernel through "System->upgrade pandora OS". Everyone's invited to test.