Lines Matching +full:rates +full:- +full:ru

1 /*-
2 * Copyright (c) 2020-2024 The FreeBSD Foundation
3 * Copyright (c) 2020-2022 Bjoern A. Zeeb
55 /* hw->conf.flags */
63 /* (*ops->config()) */
126 /* 802.11 Figure 9-256 Suite selector format. [OUI(3), SUITE TYPE(1)] */
129 /* 802.11 Table 9-131 Cipher suite selectors. */
136 #define WLAN_CIPHER_SUITE_CCMP WLAN_CIPHER_SUITE(4) /* CCMP-128 */
138 #define WLAN_CIPHER_SUITE_AES_CMAC WLAN_CIPHER_SUITE(6) /* BIP-CMAC-128 */
146 /* Reserved 14-255 */
152 /* 802.11 Table 9-133 AKM suite selectors. */
168 /* Reserved 14-255 */
185 /* 802.11-2020 9.4.2.55.3 A-MPDU Parameters field */
268 * 802.11ac-2013, 8.4.2.164 VHT Transmit Power Envelope element
269 * 802.11-???? ?
648 /* TODO FIXME, this is too large. Over-reduce types to u8 where possible. */
671 uint8_t ru:4; /* nl80211::enum nl80211_eht_ru_alloc */
688 struct ieee80211_rate_status *rates;
761 struct ieee80211_sta_rates *rates; /* some rcu thing? */
855 /* #ifdef CONFIG_MAC80211_DEBUGFS */ /* Do not change structure depending on compile-time option. */
876 /* XXX-BZ too big, over-reduce size to u8, and array sizes to minuimum to fit in skb->cb. */
886 struct ieee80211_tx_rate rates[4];
894 struct ieee80211_tx_rate rates[4];
954 /* 802.11-2020, 9.4.2.55.2 HT Capability Information field. */
1123 /* #ifdef CONFIG_MAC80211_DEBUGFS */ /* Do not change depending on compile-time option. */
1132 /* -------------------------------------------------------------------------- */
1204 /* -------------------------------------------------------------------------- */
1210 set_bit(flag, hw->flags);
1217 return (test_bit(flag, hw->flags));
1226 /* XXX-BZ add CTASSERTS that size of struct is <= sizeof skb->cb. */
1227 CTASSERT(sizeof(struct ieee80211_tx_info) <= sizeof(((struct sk_buff *)0)->cb));
1229 ((struct ieee80211_tx_info *)((_skb)->cb))
1231 CTASSERT(sizeof(struct ieee80211_rx_status) <= sizeof(((struct sk_buff *)0)->cb));
1233 ((struct ieee80211_rx_status *)((_skb)->cb))
1241 if (hw->wiphy != NULL)
1242 wiphy_free(hw->wiphy);
1259 set_wiphy_dev(hw->wiphy, dev);
1270 error = wiphy_register(hw->wiphy);
1313 /* -------------------------------------------------------------------------- */
1316 rcu_dereference_check((_vif)->link_conf[_linkid], true)
1319 rcu_dereference_protected((_vif)->link_conf[_linkid], true)
1322 rcu_dereference_check((_sta)->link[_linkid], true)
1325 rcu_dereference_protected((_sta)->link[_linkid], true)
1328 for (_linkid = 0; _linkid < nitems((_vif)->link_conf); _linkid++) \
1329 if ( ((_vif)->active_links == 0 /* no MLO */ || \
1330 ((_vif)->active_links & BIT(_linkid)) != 0) && \
1331 (_link = rcu_dereference((_vif)->link_conf[_linkid])) )
1334 for (_linkid = 0; _linkid < nitems((_sta)->link); _linkid++) \
1335 if ( ((_vif)->active_links == 0 /* no MLO */ || \
1336 ((_vif)->active_links & BIT(_linkid)) != 0) && \
1339 /* -------------------------------------------------------------------------- */
1349 /* -------------------------------------------------------------------------- */
1390 /* -------------------------------------------------------------------------- */
1454 /* -------------------------------------------------------------------------- */
1603 return (-1);
1617 if (!vif->p2p)
1618 return (vif->type);
1621 switch (vif->type) {
1629 return (vif->type);
1650 mgmt = (struct ieee80211_mgmt *)skb->data;
1653 if (!ieee80211_is_action(mgmt->frame_control))
1658 * are checked for this. Kind-of makes sense for the only consumer
1662 /* 80211-2020 9.6.2 Spectrum Management Action frames */
1663 /* 80211-2020 9.6.2.5 TPC Report frame format */
1664 /* 80211-2020 9.6.6 Radio Measurement action details */
1665 /* 80211-2020 9.6.6.4 Link Measurement Report frame format */
1667 if (mgmt->u.action.category != IEEE80211_ACTION_CAT_SM &&
1668 mgmt->u.action.category != IEEE80211_ACTION_CAT_RADIO_MEASUREMENT)
1675 if (mgmt->u.action.u.tpc_report.spec_mgmt != IEEE80211_ACTION_SM_TPCREP)
1678 /* 80211-2020 9.4.2.16 TPC Report element */
1680 if (mgmt->u.action.u.tpc_report.tpc_elem_id != IEEE80211_ELEMID_TPCREP ||
1681 mgmt->u.action.u.tpc_report.tpc_elem_length != 4)
1791 * Use a not-so-random random high status error so we can distinguish
1801 /* XXX-BZ We need to see that. */
1817 /* -------------------------------------------------------------------------- */
1877 /* -------------------------------------------------------------------------- */
1996 switch (keyconf->cipher) {
1999 memset(seq->ccmp.pn, 0xfa, sizeof(seq->ccmp.pn)); /* XXX TODO */
2002 memset(seq->aes_cmac.pn, 0xfa, sizeof(seq->aes_cmac.pn)); /* XXX TODO */
2005 seq->tkip.iv32 = 0xfa; /* XXX TODO */
2006 seq->tkip.iv16 = 0xfa; /* XXX TODO */
2009 pr_debug("%s: unsupported cipher suite %d\n", __func__, keyconf->cipher);
2030 return (-EINVAL);
2037 return (-EINVAL);
2081 if (vif->type != NL80211_IFTYPE_STATION)
2100 if (vif->type != NL80211_IFTYPE_STATION)
2168 for (i = 0; i < nitems(info->status.rates); i++)
2169 info->status.rates[i].count = 0;
2174 memset(&info->status.ack_signal, 0, sizeof(*info) -
2202 ether_addr_copy(hw->wiphy->perm_addr, addr);
2248 return (-1);
2256 return (-1);
2353 return (-1);
2430 /* If valid_links is non-zero, the vif is an MLD. */
2431 return (vif->valid_links != 0);
2461 return (vif->active_links & BIT(link_id));
2477 return (-ENXIO);
2490 /* -------------------------------------------------------------------------- */
2501 hw->conf.radar_enabled = chanctx_conf->radar_enabled;
2510 hw->conf.radar_enabled = false;
2518 hw->conf.radar_enabled = chanctx_conf->radar_enabled;
2532 return (-EINVAL);
2534 return (-EINVAL);
2540 hw->conf.radar_enabled = vifs[0].new_ctx->radar_enabled;
2546 /* -------------------------------------------------------------------------- */