Lines Matching +full:convert +full:- +full:rate
20 /*-
21 * Based on BSD-licensed source modules in the Linux iwlwifi driver,
34 * Copyright(c) 2007 - 2013 Intel Corporation. All rights reserved.
55 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
60 * Copyright(c) 2005 - 2013 Intel Corporation. All rights reserved.
90 /*-
91 * Copyright (c) 2007-2010 Damien Bergamini <damien.bergamini@free.fr>
159 * BEGIN mvm/mac-ctxt.c
178 struct ieee80211_rateset *rs = &in->in_ni.ni_rates; in iwm_ack_rates()
192 ofdm |= (1 << (i - IWM_FIRST_OFDM_RATE)); in iwm_ack_rates()
202 * and 6 Mbps because the 802.11-2007 standard says in 9.6: in iwm_ack_rates()
205 * its Control Response frame [...] at the highest rate in the in iwm_ack_rates()
207 * rate of the immediately previous frame in the frame exchange in iwm_ack_rates()
209 * ([...]) as the received frame. If no rate contained in the in iwm_ack_rates()
212 * transmitted at the highest mandatory rate of the PHY that is in iwm_ack_rates()
213 * less than or equal to the rate of the received frame, and in iwm_ack_rates()
230 * - if no CCK rates are basic, it must be ERP since there must in iwm_ack_rates()
233 * - if 11M is a basic rate, it must be ERP as well, so add 5.5M in iwm_ack_rates()
234 * - if 5.5M is basic, 1M and 2M are mandatory in iwm_ack_rates()
235 * - if 2M is basic, 1M is mandatory in iwm_ack_rates()
236 * - if 1M is basic, that's the only valid ACK rate. in iwm_ack_rates()
238 * any lower rates to the ACK rate bitmap. in iwm_ack_rates()
257 struct ieee80211com *ic = &sc->sc_ic; in iwm_mac_ctxt_cmd_common()
258 struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); in iwm_mac_ctxt_cmd_common()
259 struct ieee80211_node *ni = vap->iv_bss; in iwm_mac_ctxt_cmd_common()
266 * id is the MAC address ID - something to do with MAC filtering. in iwm_mac_ctxt_cmd_common()
267 * color - not sure. in iwm_mac_ctxt_cmd_common()
270 * So, for now, hard-code both to 0 (default). in iwm_mac_ctxt_cmd_common()
272 cmd->id_and_color = htole32(IWM_FW_CMD_ID_AND_COLOR(ivp->id, in iwm_mac_ctxt_cmd_common()
273 ivp->color)); in iwm_mac_ctxt_cmd_common()
274 cmd->action = htole32(action); in iwm_mac_ctxt_cmd_common()
276 cmd->mac_type = htole32(IWM_FW_MAC_TYPE_BSS_STA); in iwm_mac_ctxt_cmd_common()
282 * For now, just hard-code it to TSF tracking ID 0; we only support in iwm_mac_ctxt_cmd_common()
285 * It's per-vap, not per-node. in iwm_mac_ctxt_cmd_common()
287 cmd->tsf_id = htole32(IWM_DEFAULT_TSFID); in iwm_mac_ctxt_cmd_common()
289 IEEE80211_ADDR_COPY(cmd->node_addr, vap->iv_myaddr); in iwm_mac_ctxt_cmd_common()
295 if (in->in_assoc) { in iwm_mac_ctxt_cmd_common()
296 IEEE80211_ADDR_COPY(cmd->bssid_addr, ni->ni_bssid); in iwm_mac_ctxt_cmd_common()
299 IEEE80211_ADDR_COPY(cmd->bssid_addr, ieee80211broadcastaddr); in iwm_mac_ctxt_cmd_common()
308 * associating, ni->ni_bssid should always make sense here. in iwm_mac_ctxt_cmd_common()
310 if (ivp->iv_auth) { in iwm_mac_ctxt_cmd_common()
311 IEEE80211_ADDR_COPY(cmd->bssid_addr, ni->ni_bssid); in iwm_mac_ctxt_cmd_common()
314 IEEE80211_ADDR_COPY(cmd->bssid_addr, ieee80211broadcastaddr); in iwm_mac_ctxt_cmd_common()
321 if (in && in->in_ni.ni_chan != IEEE80211_CHAN_ANYC) { in iwm_mac_ctxt_cmd_common()
322 is2ghz = !! IEEE80211_IS_CHAN_2GHZ(in->in_ni.ni_chan); in iwm_mac_ctxt_cmd_common()
327 cmd->cck_rates = htole32(cck_ack_rates); in iwm_mac_ctxt_cmd_common()
328 cmd->ofdm_rates = htole32(ofdm_ack_rates); in iwm_mac_ctxt_cmd_common()
330 cmd->cck_short_preamble in iwm_mac_ctxt_cmd_common()
331 = htole32((ic->ic_flags & IEEE80211_F_SHPREAMBLE) in iwm_mac_ctxt_cmd_common()
333 cmd->short_slot in iwm_mac_ctxt_cmd_common()
334 = htole32((ic->ic_flags & IEEE80211_F_SHSLOT) in iwm_mac_ctxt_cmd_common()
339 * cmd->qos_flags |= cpu_to_le32(MAC_QOS_FLG_UPDATE_EDCA) in iwm_mac_ctxt_cmd_common()
345 cmd->ac[txf].cw_min = htole16(ivp->queue_params[i].cw_min); in iwm_mac_ctxt_cmd_common()
346 cmd->ac[txf].cw_max = htole16(ivp->queue_params[i].cw_max); in iwm_mac_ctxt_cmd_common()
347 cmd->ac[txf].edca_txop = in iwm_mac_ctxt_cmd_common()
348 htole16(ivp->queue_params[i].edca_txop); in iwm_mac_ctxt_cmd_common()
349 cmd->ac[txf].aifsn = ivp->queue_params[i].aifsn; in iwm_mac_ctxt_cmd_common()
350 cmd->ac[txf].fifos_mask = (1 << txf); in iwm_mac_ctxt_cmd_common()
353 if (ivp->have_wme) in iwm_mac_ctxt_cmd_common()
354 cmd->qos_flags |= htole32(IWM_MAC_QOS_FLG_UPDATE_EDCA); in iwm_mac_ctxt_cmd_common()
356 if (ic->ic_flags & IEEE80211_F_USEPROT) in iwm_mac_ctxt_cmd_common()
357 cmd->protection_flags |= htole32(IWM_MAC_PROT_FLG_TGG_PROTECT); in iwm_mac_ctxt_cmd_common()
359 cmd->filter_flags = htole32(IWM_MAC_FILTER_ACCEPT_GRP); in iwm_mac_ctxt_cmd_common()
368 device_printf(sc->sc_dev, in iwm_mac_ctxt_send_cmd()
370 __func__, le32toh(cmd->action), ret); in iwm_mac_ctxt_send_cmd()
381 struct ieee80211_node *ni = &in->in_ni; in iwm_mac_ctxt_cmd_fill_sta()
383 struct ieee80211com *ic = &sc->sc_ic; in iwm_mac_ctxt_cmd_fill_sta()
384 struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); in iwm_mac_ctxt_cmd_fill_sta()
387 dtim_period = vap->iv_dtim_period; in iwm_mac_ctxt_cmd_fill_sta()
388 dtim_count = vap->iv_dtim_count; in iwm_mac_ctxt_cmd_fill_sta()
395 (unsigned long long) le64toh(ni->ni_tstamp.tsf), in iwm_mac_ctxt_cmd_fill_sta()
396 ni->ni_intval); in iwm_mac_ctxt_cmd_fill_sta()
399 if (in->in_assoc && dtim_period && !force_assoc_off) { in iwm_mac_ctxt_cmd_fill_sta()
411 * same offset in the frame -- the TSF is at the first symbol in iwm_mac_ctxt_cmd_fill_sta()
418 dtim_offs = dtim_count * ni->ni_intval; in iwm_mac_ctxt_cmd_fill_sta()
419 /* convert TU to usecs */ in iwm_mac_ctxt_cmd_fill_sta()
423 * net80211: TSF is in 802.11 order, so convert up to local in iwm_mac_ctxt_cmd_fill_sta()
426 tsf = le64toh(ni->ni_tstamp.tsf); in iwm_mac_ctxt_cmd_fill_sta()
428 ctxt_sta->dtim_tsf = htole64(tsf + dtim_offs); in iwm_mac_ctxt_cmd_fill_sta()
429 ctxt_sta->dtim_time = htole32(tsf + dtim_offs); in iwm_mac_ctxt_cmd_fill_sta()
433 (long long)le64toh(ctxt_sta->dtim_tsf), in iwm_mac_ctxt_cmd_fill_sta()
434 le32toh(ctxt_sta->dtim_time), dtim_offs); in iwm_mac_ctxt_cmd_fill_sta()
436 ctxt_sta->is_assoc = htole32(1); in iwm_mac_ctxt_cmd_fill_sta()
438 ctxt_sta->is_assoc = htole32(0); in iwm_mac_ctxt_cmd_fill_sta()
444 ni->ni_intval, in iwm_mac_ctxt_cmd_fill_sta()
445 iwm_reciprocal(ni->ni_intval), in iwm_mac_ctxt_cmd_fill_sta()
446 ni->ni_intval * dtim_period, in iwm_mac_ctxt_cmd_fill_sta()
447 iwm_reciprocal(ni->ni_intval * dtim_period)); in iwm_mac_ctxt_cmd_fill_sta()
449 ctxt_sta->bi = htole32(ni->ni_intval); in iwm_mac_ctxt_cmd_fill_sta()
450 ctxt_sta->bi_reciprocal = htole32(iwm_reciprocal(ni->ni_intval)); in iwm_mac_ctxt_cmd_fill_sta()
451 ctxt_sta->dtim_interval = htole32(ni->ni_intval * dtim_period); in iwm_mac_ctxt_cmd_fill_sta()
452 ctxt_sta->dtim_reciprocal = in iwm_mac_ctxt_cmd_fill_sta()
453 htole32(iwm_reciprocal(ni->ni_intval * dtim_period)); in iwm_mac_ctxt_cmd_fill_sta()
456 ctxt_sta->listen_interval = htole32(10); in iwm_mac_ctxt_cmd_fill_sta()
458 "%s: associd=%d\n", __func__, IEEE80211_AID(ni->ni_associd)); in iwm_mac_ctxt_cmd_fill_sta()
459 ctxt_sta->assoc_id = htole32(IEEE80211_AID(ni->ni_associd)); in iwm_mac_ctxt_cmd_fill_sta()
466 struct ieee80211_node *ni = vap->iv_bss; in iwm_mac_ctxt_cmd_station()
478 if (!in->in_assoc || !vap->iv_dtim_period) in iwm_mac_ctxt_cmd_station()
503 if (iv->is_uploaded != 0) { in iwm_mac_ctxt_add()
504 device_printf(sc->sc_dev, "%s: called; uploaded != 0\n", in iwm_mac_ctxt_add()
512 iv->is_uploaded = 1; in iwm_mac_ctxt_add()
521 if (iv->is_uploaded == 0) { in iwm_mac_ctxt_changed()
522 device_printf(sc->sc_dev, "%s: called; uploaded = 0\n", in iwm_mac_ctxt_changed()
536 if (!in->in_uploaded) {
537 device_printf(sc->sc_dev,
551 device_printf(sc->sc_dev,
555 in->in_uploaded = 0;