void r88eu_post_init(struct rtwn_softc *sc) { /* Enable per-packet TX report. */ rtwn_setbits_1(sc, R88E_TX_RPT_CTRL, 0, R88E_TX_RPT1_ENA); /* Disable Tx if MACID is not associated. */ rtwn_write_4(sc, R88E_MACID_NO_LINK, 0xffffffff); rtwn_write_4(sc, R88E_MACID_NO_LINK + 4, 0xffffffff); r88e_macid_enable_link(sc, RTWN_MACID_BC, 1); /* Perform LO and IQ calibrations. */ r88e_iq_calib(sc); /* Perform LC calibration. */ r92c_lc_calib(sc); rtwn_write_1(sc, R92C_USB_HRPWM, 0); if (sc->sc_ratectl_sysctl == RTWN_RATECTL_FW) { /* No support (yet?) for f/w rate adaptation. */ sc->sc_ratectl = RTWN_RATECTL_NET80211; } else sc->sc_ratectl = sc->sc_ratectl_sysctl; }
void r88e_set_media_status(struct rtwn_softc *sc, int macid) { struct r88e_fw_cmd_msrrpt status; if (macid & RTWN_MACID_VALID) status.msrb0 = R88E_MSRRPT_B0_ASSOC; else status.msrb0 = R88E_MSRRPT_B0_DISASSOC; status.macid = (macid & ~RTWN_MACID_VALID); r88e_macid_enable_link(sc, status.macid, (macid & RTWN_MACID_VALID) != 0); #ifndef RTWN_WITHOUT_UCODE if (r88e_fw_cmd(sc, R88E_CMD_MSR_RPT, &status, sizeof(status)) != 0) { device_printf(sc->sc_dev, "%s: cannot change media status!\n", __func__); } #endif }