Index: rt2560.c =================================================================== RCS file: /data/repos/fbsd_cvs/src/sys/dev/ral/rt2560.c,v retrieving revision 1.18 diff -u -p -r1.18 rt2560.c --- rt2560.c 6 Nov 2007 07:30:11 -0000 1.18 +++ rt2560.c 2 Jan 2008 13:13:48 -0000 @@ -1515,8 +1515,8 @@ rt2560_setup_tx_desc(struct rt2560_softc desc->flags = htole32(flags); desc->flags |= htole32(len << 16); - desc->flags |= encrypt ? htole32(RT2560_TX_CIPHER_BUSY) : - htole32(RT2560_TX_BUSY | RT2560_TX_VALID); + if (!encrypt) + desc->flags |= htole32(RT2560_TX_VALID); desc->physaddr = htole32(physaddr); desc->wme = htole16( @@ -1548,6 +1548,9 @@ rt2560_setup_tx_desc(struct rt2560_softc if (rate != 2 && (ic->ic_flags & IEEE80211_F_SHPREAMBLE)) desc->plcp_signal |= 0x08; } + + desc->flags |= encrypt ? htole32(RT2560_TX_CIPHER_BUSY) + : htole32(RT2560_TX_BUSY); } static int @@ -2195,6 +2198,16 @@ rt2560_bbp_read(struct rt2560_softc *sc, uint32_t val; int ntries; + for (ntries = 0; ntries < 100; ntries++) { + if (!(RAL_READ(sc, RT2560_BBPCSR) & RT2560_BBP_BUSY)) + break; + DELAY(1); + } + if (ntries == 100) { + device_printf(sc->sc_dev, "could not read from BBP\n"); + return 0; + } + val = RT2560_BBP_BUSY | reg << 8; RAL_WRITE(sc, RT2560_BBPCSR, val); @@ -2752,8 +2765,6 @@ rt2560_init(void *priv) /* set basic rate set (will be updated later) */ RAL_WRITE(sc, RT2560_ARSP_PLCP_1, 0x153); - rt2560_set_txantenna(sc, sc->tx_ant); - rt2560_set_rxantenna(sc, sc->rx_ant); rt2560_update_slot(ifp); rt2560_update_plcp(sc); rt2560_update_led(sc, 0, 0); @@ -2767,6 +2778,9 @@ rt2560_init(void *priv) return; } + rt2560_set_txantenna(sc, sc->tx_ant); + rt2560_set_rxantenna(sc, sc->rx_ant); + /* set default BSS channel */ rt2560_set_chan(sc, ic->ic_curchan);