Lines Matching defs:sc

65 r92c_fw_cmd(struct rtwn_softc *sc, uint8_t id, const void *buf, int len)
74 if (!(sc->sc_flags & RTWN_FW_LOADED)) {
75 RTWN_DPRINTF(sc, RTWN_DEBUG_FIRMWARE, "%s: firmware "
83 if (!(rtwn_read_1(sc, R92C_HMETFR) & (1 << sc->fwcur)))
85 rtwn_delay(sc, 2000);
88 device_printf(sc->sc_dev,
104 error = rtwn_write_2(sc, R92C_HMEBOX_EXT(sc->fwcur),
109 error = rtwn_write_4(sc, R92C_HMEBOX(sc->fwcur),
114 sc->fwcur = (sc->fwcur + 1) % R92C_H2C_NBOX;
120 r92c_fw_reset(struct rtwn_softc *sc, int reason)
128 rtwn_write_1(sc, R92C_HMETFR + 3, 0x20);
132 if ((rtwn_read_2(sc, R92C_SYS_FUNC_EN) &
135 rtwn_delay(sc, 50);
138 rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN,
143 r92c_fw_download_enable(struct rtwn_softc *sc, int enable)
147 rtwn_setbits_1_shift(sc, R92C_SYS_FUNC_EN, 0,
150 rtwn_setbits_1(sc, R92C_MCUFWDL, 0, R92C_MCUFWDL_EN);
152 rtwn_setbits_1_shift(sc, R92C_MCUFWDL, R92C_MCUFWDL_ROM_DLEN,
156 rtwn_setbits_1(sc, R92C_MCUFWDL, R92C_MCUFWDL_EN, 0);
158 rtwn_write_1(sc, R92C_MCUFWDL + 1, 0);
168 r92c_send_ra_cmd(struct rtwn_softc *sc, int macid, uint32_t rates,
184 RTWN_DPRINTF(sc, RTWN_DEBUG_RA,
191 error = rtwn_fw_cmd(sc, R92C_CMD_MACID_CONFIG, &cmd, sizeof(cmd));
193 device_printf(sc->sc_dev,
208 error = r92c_fw_cmd(sc, R92C_CMD_MACID_CONFIG, &cmd, sizeof(cmd));
210 device_printf(sc->sc_dev,
221 r92c_init_ra(struct rtwn_softc *sc, int macid)
228 RTWN_NT_LOCK(sc);
229 if (sc->node_list[macid] == NULL) {
230 RTWN_DPRINTF(sc, RTWN_DEBUG_RA, "%s: macid %d, ni is NULL\n",
232 RTWN_NT_UNLOCK(sc);
236 ni = ieee80211_ref_node(sc->node_list[macid]);
242 rtwn_get_rates(sc, &ni->ni_rates, rs_ht, &rates, &maxrate, 0);
243 RTWN_NT_UNLOCK(sc);
246 if (sc->sc_ratectl == RTWN_RATECTL_FW) {
247 r92c_send_ra_cmd(sc, macid, rates, maxrate);
251 rtwn_write_1(sc, R92C_INIDATA_RATE_SEL(macid), maxrate);
257 r92c_joinbss_rpt(struct rtwn_softc *sc, int macid)
260 struct r92c_softc *rs = sc->sc_priv;
264 if (sc->vaps[0] == NULL) /* XXX fix */
267 vap = &sc->vaps[0]->vap;
280 if (r92c_fw_cmd(sc, R92C_CMD_JOINBSS_RPT, &cmd, sizeof(cmd)) != 0) {
281 device_printf(sc->sc_dev, "%s: cannot change media status!\n",
290 r92c_init_ra(sc, macid & ~RTWN_MACID_VALID);
295 r92c_set_rsvd_page(struct rtwn_softc *sc, int probe_resp, int null,
304 return (r92c_fw_cmd(sc, R92C_CMD_RSVD_PAGE, &rsvd, sizeof(rsvd)));
308 r92c_set_pwrmode(struct rtwn_softc *sc, struct ieee80211vap *vap,
323 error = r92c_fw_cmd(sc, R92C_CMD_SET_PWRMODE, &mode, sizeof(mode));
325 device_printf(sc->sc_dev,
334 r92c_set_rssi(struct rtwn_softc *sc)
343 RTWN_NT_LOCK(sc);
344 for (i = 0; i < sc->macid_limit; i++) {
346 ni = sc->node_list[i];
353 RTWN_DPRINTF(sc, RTWN_DEBUG_RSSI,
357 RTWN_NT_UNLOCK(sc);
358 r92c_fw_cmd(sc, R92C_CMD_RSSI_SETTING, &cmd, sizeof(cmd));
359 RTWN_NT_LOCK(sc);
361 RTWN_NT_UNLOCK(sc);
365 r92c_ratectl_tx_complete(struct rtwn_softc *sc, uint8_t *buf, int len)
375 if (sc->sc_ratectl != RTWN_RATECTL_NET80211) {
377 device_printf(sc->sc_dev, "%s called while ratectl = %d!\n",
378 __func__, sc->sc_ratectl);
384 device_printf(sc->sc_dev,
390 RTWN_DPRINTF(sc, RTWN_DEBUG_INTR,
398 if (macid > sc->macid_limit) {
399 device_printf(sc->sc_dev,
407 RTWN_NT_LOCK(sc);
408 ni = sc->node_list[macid];
410 RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: frame for macid %u was"
438 RTWN_DPRINTF(sc, RTWN_DEBUG_INTR, "%s: macid %u, ni is NULL\n",
441 RTWN_NT_UNLOCK(sc);
444 if (sc->sc_tx_n_active > 0 && --sc->sc_tx_n_active <= 1)
445 rtwn_cmd_sleepable(sc, NULL, 0, rtwn_ff_flush_all);
450 r92c_handle_c2h_task(struct rtwn_softc *sc, union sec_param *data)
453 struct r92c_softc *rs = sc->sc_priv;
459 if (!(sc->sc_flags & RTWN_RUNNING))
463 status = rtwn_read_1(sc, R92C_C2H_EVT_CLEAR);
467 len = rtwn_read_1(sc, R92C_C2H_EVT_MSG);
474 buf[i / 2] = rtwn_read_2(sc, off + i);
480 r92c_ratectl_tx_complete(sc, (uint8_t *)buf, len);
483 device_printf(sc->sc_dev,
491 rtwn_write_1(sc, R92C_C2H_EVT_CLEAR, R92C_C2H_EVT_HOST_CLOSE);
508 r92c_handle_c2h_report, sc);
514 struct rtwn_softc *sc = arg;
516 rtwn_cmd_sleepable(sc, NULL, 0, r92c_handle_c2h_task);