From 5d534170affc9d34d42a660d6ddb3338ee45f518 Mon Sep 17 00:00:00 2001 From: Kevin Lo Date: Fri, 18 Oct 2013 07:43:49 +0000 Subject: [PATCH] Fix lower bits of RF_R3 for RT3370 and newer. This change doesn't affect older chipsets. --- sys/dev/usb/wlan/if_run.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/dev/usb/wlan/if_run.c b/sys/dev/usb/wlan/if_run.c index 985c4a75684..377a2f3abc9 100644 --- a/sys/dev/usb/wlan/if_run.c +++ b/sys/dev/usb/wlan/if_run.c @@ -3647,7 +3647,12 @@ run_rt3070_set_chan(struct run_softc *sc, uint32_t chan) txpow2 = sc->txpow2[i]; run_rt3070_rf_write(sc, 2, rt3070_freqs[i].n); - run_rt3070_rf_write(sc, 3, rt3070_freqs[i].k); + + /* RT3370/RT3390: RF R3 [7:4] is not reserved bits. */ + run_rt3070_rf_read(sc, 3, &rf); + rf = (rf & ~0x0f) | rt3070_freqs[i].k; + run_rt3070_rf_write(sc, 3, rf); + run_rt3070_rf_read(sc, 6, &rf); rf = (rf & ~0x03) | rt3070_freqs[i].r; run_rt3070_rf_write(sc, 6, rf);