Lines Matching refs:in

11  * copyright notice and this permission notice appear in all copies.
23 * Based on BSD-licensed source modules in the Linux iwlwifi driver,
40 * This program is distributed in the hope that it will be useful, but
51 * Redistribution and use in source and binary forms, with or without
57 * * Redistributions in binary form must reproduce the above copyright
58 * notice, this list of conditions and the following disclaimer in
85 * copyright notice and this permission notice appear in all copies.
128 #include <netinet/in.h>
134 #undef DPRINTF /* defined in ieee80211_priv.h */
710 * Paging memory isn't stored in dram->fw as the umac and lmac - it is
715 * Given that, the logic here in accessing the fw image is a bit
742 * version in hexadecimal.
937 /* size is in DWs */
959 /* allocate ucode sections in dram and set addresses */
1011 printf("%s: no image loader found in firmware file\n",
1044 /* allocate ucode sections in dram and set addresses */
1562 /* undocumented TLVs found in iwx-cc-a0-46 image */
1568 /* undocumented TLVs found in iwx-cc-a0-48 image */
1584 /* undocumented TLV found in iwx-cc-a0-67 image */
1588 /* undocumented TLV found in iwx-ty-a0-gf-a0-73 image */
1592 /* undocumented TLV found in iwx-ty-a0-gf-a0-77 image */
2245 * Unlike msi, in msix cause is enabled when it is unset.
2314 /* Switch to ICT interrupt mode in driver. */
2400 * and in newer hardware they are not officially supported at
2704 /* Stop the device, and put it in low power state */
2713 * work. This causes a bug in RF-KILL flows, since the interrupt
2988 iwx_schedule_session_protection(struct iwx_softc *sc, struct iwx_node *in,
2992 .id_and_color = htole32(IWX_FW_CMD_ID_AND_COLOR(in->in_id,
2993 in->in_color)),
3009 iwx_unprotect_session(struct iwx_softc *sc, struct iwx_node *in)
3012 .id_and_color = htole32(IWX_FW_CMD_ID_AND_COLOR(in->in_id,
3013 in->in_color)),
3434 struct iwx_node *in = (void *)ni;
3444 = htole32(IWX_FW_CMD_ID_AND_COLOR(in->in_id, in->in_color));
3519 /* Deaggregation is done in hardware. */
3558 struct iwx_node *in = (void *)ic->ic_bss;
3568 err = iwx_mac_ctxt_cmd(sc, in, IWX_FW_CTXT_ACTION_MODIFY, 1);
3572 iwx_unprotect_session(sc, in);
3583 struct iwx_node *in = (void *)ic->ic_bss;
3584 struct ieee80211_node *ni = &in->in_ni;
3590 in->in_phyctxt == NULL) {
3604 IEEE80211_CHAN_80MHZ_ALLOWED(in->in_ni.ni_chan) &&
3609 if (in->in_phyctxt->sco != sco ||
3610 in->in_phyctxt->vht_chan_width != vht_chan_width) {
3611 err = iwx_phy_ctxt_update(sc, in->in_phyctxt,
3612 in->in_phyctxt->channel, chains, chains, 0, sco,
3855 /* If OEM fused a valid address, use it instead of the one in OTP. */
3913 * All the values in iwx_nvm_get_info_rsp v4 are the same as
3914 * in v3, except for the channel profile part of the
4197 /* Make AX210 firmware loading context point at PNVM image in DMA memory. */
4524 * Retrieve the average noise (in dBm) among receivers.
4589 /* Last seen packet number is updated in ieee80211_inputm(). */
4594 * For now, keep things simple and just leave the MIC in place if
4767 * of A-MSDU frames in hardware.
4774 struct iwx_node *in = (void *)ic->ic_bss;
4775 struct iwx_rxq_dup_data *dup_data = &in->dup_data;
4823 * To be used only in order to compare reorder buffer head with NSSN.
4901 * reset counter to 0 if we didn't have any oldsn in
4912 * indication before - do nothing in this case, we
4940 * Handle re-ordering of frames which were de-aggregated in hardware.
4976 * We are only interested in Block Ack requests and unicast QoS data.
5003 /* Bypass A-MPDU re-ordering in net80211. */
5027 * If there was a significant jump in the nssn - adjust.
5029 * the reorder buffer, in which case we just release up to it and the
5068 * When we released everything, and we got the next frame in the
5084 * If we have frames in that position in the buffer and the last frame
5107 /* put in reorder buffer */
5173 /* Allow control frames in monitor mode. */
5229 * in place for each subframe. But it leaves the 'A-MSDU present'
5230 * bit set in the frame header. We need to clear this bit ourselves.
5233 * fixed in the hardware. It definitely affects the 9k generation.
5234 * Leaving this in place for now since some 9k/AX200 hybrids seem
5261 * the TID supplied in QoS frame headers and this TID is implicitly
5334 KASSERT(txd->in);
5335 ieee80211_release_node(ic, &txd->in->in_ni);
5336 txd->in = NULL;
5418 * Well, we're in interrupt context, but then again
5419 * I guess net80211 does all sorts of stunts in
5434 struct iwx_node *in;
5449 in = (void *)ni;
5517 iwx_binding_cmd(struct iwx_softc *sc, struct iwx_node *in, uint32_t action)
5520 struct iwx_phy_ctxt *phyctxt = in->in_phyctxt;
5521 uint32_t mac_id = IWX_FW_CMD_ID_AND_COLOR(in->in_id, in->in_color);
5566 * when in HT/VHT and the channel width is not 20MHz. Return
5728 * member in the middle.
5791 * Firmware API versions >= 50 reject old-style commands in
5793 * that such commands were in the LONG_GROUP instead in order
5808 /* Command is too large to fit in pre-allocated space. */
5832 txdata->m = m; /* mbuf will be freed in iwx_cmd_done() */
5895 /* Response buffer will be freed in iwx_free_resp(). */
6041 iwx_tx_fill_cmd(struct iwx_softc *sc, struct iwx_node *in,
6045 struct ieee80211_node *ni = &in->in_ni;
6077 * For data frames we rely on Tx rate scaling in firmware by default.
6125 * filled_tfd_size contains the number of filled bytes in the TFD.
6155 struct iwx_node *in = (void *)ni;
6209 rinfo = iwx_tx_fill_cmd(sc, in, wh, &flags, &rate_n_flags);
6325 data->in = in;
6452 iwx_drain_sta(struct iwx_softc *sc, struct iwx_node* in, int drain)
6459 cmd.mac_id_n_color = htole32(IWX_FW_CMD_ID_AND_COLOR(in->in_id,
6460 in->in_color));
6489 iwx_flush_sta(struct iwx_softc *sc, struct iwx_node *in)
6497 err = iwx_drain_sta(sc, in, 1);
6508 err = iwx_drain_sta(sc, in, 0);
6525 iwx_update_beacon_abort(struct iwx_softc *sc, struct iwx_node *in, int enable)
6541 iwx_power_build_cmd(struct iwx_softc *sc, struct iwx_node *in,
6545 struct ieee80211_node *ni = &in->in_ni;
6548 cmd->id_and_color = htole32(IWX_FW_CMD_ID_AND_COLOR(in->in_id,
6549 in->in_color));
6571 iwx_power_mac_update_mode(struct iwx_softc *sc, struct iwx_node *in)
6579 iwx_power_build_cmd(sc, in, &cmd);
6588 return iwx_update_beacon_abort(sc, in, ba_enable);
6605 iwx_enable_beacon_filter(struct iwx_softc *sc, struct iwx_node *in)
6637 iwx_add_sta_cmd(struct iwx_softc *sc, struct iwx_node *in, int update)
6659 = htole32(IWX_FW_CMD_ID_AND_COLOR(in->in_id, in->in_color));
6666 in->in_macaddr);
6672 if (in->in_ni.ni_flags & IEEE80211_NODE_HT) {
6678 if (in->in_ni.ni_flags & IEEE80211_NODE_VHT) {
6679 uint16_t rx_mcs = (in->in_ni.ni_vht_rxmcs &
6687 if (in->in_ni.ni_rxmcs[1] != 0) {
6691 if (in->in_ni.ni_rxmcs[2] != 0) {
6698 if (IEEE80211_CHAN_40MHZ_ALLOWED(in->in_ni.ni_chan) &&
6699 ieee80211_node_supports_ht_chan40(&in->in_ni)) {
6704 if (in->in_ni.ni_flags & IEEE80211_NODE_VHT) {
6705 if (IEEE80211_CHAN_80MHZ_ALLOWED(in->in_ni.ni_chan) &&
6706 ieee80211_node_supports_vht_chan80(&in->in_ni)) {
6710 aggsize = (in->in_ni.ni_vhtcaps &
6714 aggsize = (in->in_ni.ni_ampdu_param &
6723 switch (in->in_ni.ni_ampdu_param & IEEE80211_AMPDU_PARAM_SS) {
6755 iwx_rm_sta_cmd(struct iwx_softc *sc, struct iwx_node *in)
6777 iwx_rm_sta(struct iwx_softc *sc, struct iwx_node *in)
6780 struct ieee80211_node *ni = &in->in_ni;
6783 err = iwx_flush_sta(sc, in);
6816 err = iwx_rm_sta_cmd(sc, in);
6823 in->in_flags = 0;
6902 * copy & paste of what is done in net80211.
6923 /* Fill in 2GHz IEs and tell firmware where they are. */
6949 /* Fill in 5GHz IEs. */
7049 /* adaptive dwell default APs number in social channels (1, 6, 11) */
7240 iwx_ack_rates(struct iwx_softc *sc, struct iwx_node *in, int *cck_rates,
7243 struct ieee80211_node *ni = &in->in_ni;
7270 * Now we've got the basic rates as bitmaps in the ofdm and cck
7272 * be all the right rates in the bitmap. E.g. if the only basic
7274 * and 6 Mbps because the 802.11-2007 standard says in 9.6:
7277 * its Control Response frame [...] at the highest rate in the
7279 * rate of the immediately previous frame in the frame exchange
7281 * ([...]) as the received frame. If no rate contained in the
7283 * control frame sent in response to a received frame shall be
7304 * (or we're in 5 GHz, and the cck bitmap will never be used)
7326 iwx_mac_ctxt_cmd_common(struct iwx_softc *sc, struct iwx_node *in,
7335 cmd->id_and_color = htole32(IWX_FW_CMD_ID_AND_COLOR(in->in_id,
7336 in->in_color));
7356 IEEE80211_ADDR_COPY(cmd->bssid_addr, in->in_macaddr);
7357 iwx_ack_rates(sc, in, &cck_ack_rates, &ofdm_ack_rates);
7394 if (in->in_phyctxt &&
7395 (in->in_phyctxt->sco == IEEE80211_HTOP0_SCO_SCA ||
7396 in->in_phyctxt->sco == IEEE80211_HTOP0_SCO_SCB)) {
7416 iwx_mac_ctxt_cmd_fill_sta(struct iwx_softc *sc, struct iwx_node *in,
7419 struct ieee80211_node *ni = &in->in_ni;
7441 iwx_mac_ctxt_cmd(struct iwx_softc *sc, struct iwx_node *in, uint32_t action,
7445 struct ieee80211_node *ni = &in->in_ni;
7456 iwx_mac_ctxt_cmd_common(sc, in, &cmd, action);
7477 iwx_mac_ctxt_cmd_fill_sta(sc, in, &cmd.sta, assoc);
7607 struct iwx_node *in = (void *)ic->ic_bss;
7608 struct ieee80211_node *ni = &in->in_ni;
7618 err = iwx_flush_sta(sc, in);
7649 ieee80211_node_tx_stopped(ic, &in->in_ni);
7796 iwx_rs_init_v3(struct iwx_softc *sc, struct iwx_node *in)
7798 struct ieee80211_node *ni = &in->in_ni;
7833 if (in->in_phyctxt->vht_chan_width == IEEE80211_VHTOP0_CHAN_WIDTH_80)
7835 else if (in->in_phyctxt->sco == IEEE80211_HTOP0_SCO_SCA ||
7836 in->in_phyctxt->sco == IEEE80211_HTOP0_SCO_SCB)
7864 iwx_rs_init_v4(struct iwx_softc *sc, struct iwx_node *in)
7866 struct ieee80211_node *ni = &in->in_ni;
7901 if (in->in_phyctxt->vht_chan_width == IEEE80211_VHTOP0_CHAN_WIDTH_80)
7903 else if (in->in_phyctxt->sco == IEEE80211_HTOP0_SCO_SCA ||
7904 in->in_phyctxt->sco == IEEE80211_HTOP0_SCO_SCB)
7932 iwx_rs_init(struct iwx_softc *sc, struct iwx_node *in)
7939 return iwx_rs_init_v4(sc, in);
7940 return iwx_rs_init_v3(sc, in);
8108 struct iwx_node *in = (void *)ic->ic_bss;
8122 in->in_ni.ni_chan, 1, 1, 0, IEEE80211_HTOP0_SCO_SCN,
8127 in->in_phyctxt = &sc->sc_phyctxt[0];
8128 IEEE80211_ADDR_COPY(in->in_macaddr, in->in_ni.ni_macaddr);
8130 err = iwx_mac_ctxt_cmd(sc, in, IWX_FW_CTXT_ACTION_ADD, 0);
8138 err = iwx_binding_cmd(sc, in, IWX_FW_CTXT_ACTION_ADD);
8146 err = iwx_add_sta_cmd(sc, in, 0);
8175 if (in->in_ni.ni_intval)
8176 duration = in->in_ni.ni_intval * 9;
8179 return iwx_schedule_session_protection(sc, in, duration);
8185 iwx_rm_sta_cmd(sc, in);
8190 iwx_binding_cmd(sc, in, IWX_FW_CTXT_ACTION_REMOVE);
8195 iwx_mac_ctxt_cmd(sc, in, IWX_FW_CTXT_ACTION_REMOVE, 0);
8205 struct iwx_node *in = (void *)ic->ic_bss;
8210 iwx_unprotect_session(sc, in);
8213 err = iwx_rm_sta(sc, in);
8220 err = iwx_binding_cmd(sc, in, IWX_FW_CTXT_ACTION_REMOVE);
8230 err = iwx_mac_ctxt_cmd(sc, in, IWX_FW_CTXT_ACTION_REMOVE, 0);
8253 struct iwx_node *in = (void *)ic->ic_bss;
8254 struct ieee80211_node *ni = &in->in_ni;
8269 err = iwx_phy_ctxt_update(sc, in->in_phyctxt,
8270 in->in_phyctxt->channel, chains, chains,
8280 if (IEEE80211_CHAN_40MHZ_ALLOWED(in->in_ni.ni_chan) &&
8286 IEEE80211_CHAN_80MHZ_ALLOWED(in->in_ni.ni_chan) &&
8291 err = iwx_phy_ctxt_update(sc, in->in_phyctxt,
8292 in->in_phyctxt->channel, chains, chains,
8301 err = iwx_add_sta_cmd(sc, in, 1);
8309 err = iwx_mac_ctxt_cmd(sc, in, IWX_FW_CTXT_ACTION_MODIFY, 1);
8341 err = iwx_enable_beacon_filter(sc, in);
8348 err = iwx_power_mac_update_mode(sc, in);
8359 in->in_ni.ni_txrate = 0;
8360 in->in_ni.ni_txmcs = 0;
8362 err = iwx_rs_init(sc, in);
8376 struct iwx_node *in = (void *)ic->ic_bss;
8377 struct ieee80211_node *ni = &in->in_ni;
8382 err = iwx_flush_sta(sc, in);
8391 * for this when moving out of RUN state since it runs in a
8393 * Note that in->in_ni (struct ieee80211_node) already represents
8394 * our new access point in case we are roaming between APs.
8417 err = iwx_mac_ctxt_cmd(sc, in, IWX_FW_CTXT_ACTION_MODIFY, 0);
8437 struct iwx_node *in = (void *)ni;
8444 if (!err && in != NULL && (k->k_flags & IEEE80211_KEY_GROUP))
8445 in->in_flags |= IWX_NODE_FLAG_HAVE_GROUP_KEY;
8467 struct iwx_node *in = (void *)ni;
8475 * Keys are stored in 'ni' so 'k' is valid if 'ni' is valid.
8513 in->in_flags |= IWX_NODE_FLAG_HAVE_GROUP_KEY;
8515 in->in_flags |= IWX_NODE_FLAG_HAVE_PAIRWISE_KEY;
8517 if ((in->in_flags & want_keymask) == want_keymask) {
8701 * we are scanning in which case a SCAN -> SCAN transition
8741 * in default configuration
8769 * in single BSS MAC configuration.
8804 * If we are in association flow - check antenna configuration
8889 * values in VER_1, this is backwards-compatible with VER_2,
9048 * going to be overwritten in the other flows.
9124 struct iwx_node *in = (void *)ic->ic_bss;
9137 IEEE80211_ADDR_COPY(cmd->bssid, in->in_macaddr);
9283 struct iwx_node *in = (void *)ic->ic_bss;
9320 in->in_phyctxt = NULL;
9321 in->in_flags = 0;
9322 IEEE80211_ADDR_COPY(in->in_macaddr, etheranyaddr);
9394 * process is tsleep'ing in it.
9613 * I'll just leave it in, just in case e.g. the Intel guys want to
9762 * Any commands in the LONG_GROUP could actually be in the
9764 * in group 0, forcing us to use this hack.
9801 /* No need to copy last frame in buffer. */
10102 break; /* happens in monitor mode; ignore for now */
10121 * with 160Mhz channels in 11ax mode.
10317 * Enable periodic interrupt in 8 msec only if we received
10404 * bit in the mask register. After handling the interrupt, it should be
10491 * As of 2022, Linux developers are still in the process of moving entries
10492 * from "old" to "new" style and it looks like this effort has stalled in
10493 * in some work-in-progress state for quite a while. Linux commits moving
10496 * devices in the same driver.
10498 * Our table below contains mostly "new" entries declared in iwlwifi
10506 * correctly in the absence of their entries. So we include them just in case.
10536 * When adding entries to this table keep in mind that entries must
10537 * be listed in the same order as in the Linux driver. Code walks this
10539 * Device firmware must be available in fw_update(8).
10855 /* Update MAC in case the upper layers changed it. */
11114 * in the old format.