* [PATCH wireless-next] wifi: nl80211: split out UHR operation information
@ 2026-03-03 14:25 Johannes Berg
2026-03-03 19:59 ` kernel test robot
2026-03-03 20:19 ` kernel test robot
0 siblings, 2 replies; 3+ messages in thread
From: Johannes Berg @ 2026-03-03 14:25 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
The beacon doesn't contain the full UHR operation, a number
of fields (such as NPCA) are only partially there. Add a new
attribute to contain the full information, so it's available
to the driver/mac80211.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
include/uapi/linux/nl80211.h | 6 ++++++
net/wireless/nl80211.c | 26 ++++++++++++++++----------
2 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 0b7a06c2b9f7..67d764023988 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -3001,6 +3001,10 @@ enum nl80211_commands {
* interference detection is not performed on these sub-channels, their
* corresponding bits are consistently set to zero.
*
+ * @NL80211_ATTR_UHR_OPERATION: Full UHR Operation element, as it appears in
+ * association response etc., since it's abridged in the beacon. Used
+ * for START_AP etc.
+ *
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3576,6 +3580,8 @@ enum nl80211_attrs {
NL80211_ATTR_INCUMBENT_SIGNAL_INTERFERENCE_BITMAP,
+ NL80211_ATTR_UHR_OPERATION,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 2225f5d0b124..818696fdc461 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -342,6 +342,17 @@ static int validate_uhr_capa(const struct nlattr *attr,
return ieee80211_uhr_capa_size_ok(data, len, false);
}
+static int validate_uhr_operation(const struct nlattr *attr,
+ struct netlink_ext_ack *extack)
+{
+ const u8 *data = nla_data(attr);
+ unsigned int len = nla_len(attr);
+
+ if (!ieee80211_uhr_oper_size_ok(data, len, false))
+ return -EINVAL;
+ return 0;
+}
+
/* policy for the attributes */
static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR];
@@ -947,6 +958,8 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
[NL80211_ATTR_UHR_CAPABILITY] =
NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_uhr_capa, 255),
[NL80211_ATTR_DISABLE_UHR] = { .type = NLA_FLAG },
+ [[NL80211_ATTR_UHR_OPERATION] =
+ NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_uhr_operation),
};
/* policy for the key attributes */
@@ -6499,16 +6512,6 @@ static int nl80211_calculate_ap_params(struct cfg80211_ap_settings *params)
return -EINVAL;
}
- cap = cfg80211_find_ext_elem(WLAN_EID_EXT_UHR_OPER, ies, ies_len);
- if (cap) {
- if (!cap->datalen)
- return -EINVAL;
- params->uhr_oper = (void *)(cap->data + 1);
- if (!ieee80211_uhr_oper_size_ok((const u8 *)params->uhr_oper,
- cap->datalen - 1, true))
- return -EINVAL;
- }
-
return 0;
}
@@ -6950,6 +6953,9 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
if (err)
goto out;
+ if (info->attrs[NL80211_ATTR_UHR_OPERATION])
+ params->uhr_oper = nla_data(info->attrs[NL80211_ATTR_UHR_OPERATION]);
+
err = nl80211_validate_ap_phy_operation(params);
if (err)
goto out;
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH wireless-next] wifi: nl80211: split out UHR operation information
2026-03-03 14:25 [PATCH wireless-next] wifi: nl80211: split out UHR operation information Johannes Berg
@ 2026-03-03 19:59 ` kernel test robot
2026-03-03 20:19 ` kernel test robot
1 sibling, 0 replies; 3+ messages in thread
From: kernel test robot @ 2026-03-03 19:59 UTC (permalink / raw)
To: Johannes Berg, linux-wireless; +Cc: llvm, oe-kbuild-all, Johannes Berg
Hi Johannes,
kernel test robot noticed the following build errors:
[auto build test ERROR on wireless-next/main]
[also build test ERROR on next-20260303]
[cannot apply to wireless/main linus/master v6.16-rc1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Johannes-Berg/wifi-nl80211-split-out-UHR-operation-information/20260303-223359
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/20260303152558.00e7bc8e9f4b.Iafdf37fb0f4304bdcdb824977d61e17b38c47685%40changeid
patch subject: [PATCH wireless-next] wifi: nl80211: split out UHR operation information
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260303/202603032000.hvuqXXkv-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260303/202603032000.hvuqXXkv-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603032000.hvuqXXkv-lkp@intel.com/
All errors (new ones prefixed by >>):
>> net/wireless/nl80211.c:961:3: error: expected expression
961 | [[NL80211_ATTR_UHR_OPERATION] =
| ^
1 error generated.
vim +961 net/wireless/nl80211.c
583
584 static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
585 [0] = { .strict_start_type = NL80211_ATTR_HE_OBSS_PD },
586 [NL80211_ATTR_WIPHY] = { .type = NLA_U32 },
587 [NL80211_ATTR_WIPHY_NAME] = { .type = NLA_NUL_STRING,
588 .len = 20-1 },
589 [NL80211_ATTR_WIPHY_TXQ_PARAMS] = { .type = NLA_NESTED },
590
591 [NL80211_ATTR_WIPHY_FREQ] = { .type = NLA_U32 },
592 [NL80211_ATTR_WIPHY_CHANNEL_TYPE] = { .type = NLA_U32 },
593 [NL80211_ATTR_WIPHY_EDMG_CHANNELS] = NLA_POLICY_RANGE(NLA_U8,
594 NL80211_EDMG_CHANNELS_MIN,
595 NL80211_EDMG_CHANNELS_MAX),
596 [NL80211_ATTR_WIPHY_EDMG_BW_CONFIG] = NLA_POLICY_RANGE(NLA_U8,
597 NL80211_EDMG_BW_CONFIG_MIN,
598 NL80211_EDMG_BW_CONFIG_MAX),
599
600 [NL80211_ATTR_CHANNEL_WIDTH] = { .type = NLA_U32 },
601 [NL80211_ATTR_CENTER_FREQ1] = { .type = NLA_U32 },
602 [NL80211_ATTR_CENTER_FREQ1_OFFSET] = NLA_POLICY_RANGE(NLA_U32, 0, 999),
603 [NL80211_ATTR_CENTER_FREQ2] = { .type = NLA_U32 },
604
605 [NL80211_ATTR_WIPHY_RETRY_SHORT] = NLA_POLICY_MIN(NLA_U8, 1),
606 [NL80211_ATTR_WIPHY_RETRY_LONG] = NLA_POLICY_MIN(NLA_U8, 1),
607 [NL80211_ATTR_WIPHY_FRAG_THRESHOLD] = { .type = NLA_U32 },
608 [NL80211_ATTR_WIPHY_RTS_THRESHOLD] = { .type = NLA_U32 },
609 [NL80211_ATTR_WIPHY_COVERAGE_CLASS] = { .type = NLA_U8 },
610 [NL80211_ATTR_WIPHY_DYN_ACK] = { .type = NLA_FLAG },
611
612 [NL80211_ATTR_IFTYPE] = NLA_POLICY_MAX(NLA_U32, NL80211_IFTYPE_MAX),
613 [NL80211_ATTR_IFINDEX] = { .type = NLA_U32 },
614 [NL80211_ATTR_IFNAME] = { .type = NLA_NUL_STRING, .len = IFNAMSIZ-1 },
615
616 [NL80211_ATTR_MAC] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
617 [NL80211_ATTR_PREV_BSSID] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
618
619 [NL80211_ATTR_KEY] = { .type = NLA_NESTED, },
620 [NL80211_ATTR_KEY_DATA] = { .type = NLA_BINARY,
621 .len = WLAN_MAX_KEY_LEN },
622 [NL80211_ATTR_KEY_IDX] = NLA_POLICY_MAX(NLA_U8, 7),
623 [NL80211_ATTR_KEY_CIPHER] = { .type = NLA_U32 },
624 [NL80211_ATTR_KEY_DEFAULT] = { .type = NLA_FLAG },
625 [NL80211_ATTR_KEY_SEQ] = { .type = NLA_BINARY, .len = 16 },
626 [NL80211_ATTR_KEY_TYPE] =
627 NLA_POLICY_MAX(NLA_U32, NUM_NL80211_KEYTYPES),
628
629 [NL80211_ATTR_BEACON_INTERVAL] = { .type = NLA_U32 },
630 [NL80211_ATTR_DTIM_PERIOD] = { .type = NLA_U32 },
631 [NL80211_ATTR_BEACON_HEAD] =
632 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_beacon_head,
633 IEEE80211_MAX_DATA_LEN),
634 [NL80211_ATTR_BEACON_TAIL] =
635 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_ie_attr,
636 IEEE80211_MAX_DATA_LEN),
637 [NL80211_ATTR_STA_AID] =
638 NLA_POLICY_RANGE(NLA_U16, 1, IEEE80211_MAX_AID),
639 [NL80211_ATTR_STA_FLAGS] = { .type = NLA_NESTED },
640 [NL80211_ATTR_STA_LISTEN_INTERVAL] = { .type = NLA_U16 },
641 [NL80211_ATTR_STA_SUPPORTED_RATES] = { .type = NLA_BINARY,
642 .len = NL80211_MAX_SUPP_RATES },
643 [NL80211_ATTR_STA_PLINK_ACTION] =
644 NLA_POLICY_MAX(NLA_U8, NUM_NL80211_PLINK_ACTIONS - 1),
645 [NL80211_ATTR_STA_TX_POWER_SETTING] =
646 NLA_POLICY_RANGE(NLA_U8,
647 NL80211_TX_POWER_AUTOMATIC,
648 NL80211_TX_POWER_FIXED),
649 [NL80211_ATTR_STA_TX_POWER] = { .type = NLA_S16 },
650 [NL80211_ATTR_STA_VLAN] = { .type = NLA_U32 },
651 [NL80211_ATTR_MNTR_FLAGS] = { /* NLA_NESTED can't be empty */ },
652 [NL80211_ATTR_MESH_ID] = { .type = NLA_BINARY,
653 .len = IEEE80211_MAX_MESH_ID_LEN },
654 [NL80211_ATTR_MPATH_NEXT_HOP] = NLA_POLICY_ETH_ADDR_COMPAT,
655
656 /* allow 3 for NUL-termination, we used to declare this NLA_STRING */
657 [NL80211_ATTR_REG_ALPHA2] = NLA_POLICY_RANGE(NLA_BINARY, 2, 3),
658 [NL80211_ATTR_REG_RULES] = { .type = NLA_NESTED },
659
660 [NL80211_ATTR_BSS_CTS_PROT] = { .type = NLA_U8 },
661 [NL80211_ATTR_BSS_SHORT_PREAMBLE] = { .type = NLA_U8 },
662 [NL80211_ATTR_BSS_SHORT_SLOT_TIME] = { .type = NLA_U8 },
663 [NL80211_ATTR_BSS_BASIC_RATES] = { .type = NLA_BINARY,
664 .len = NL80211_MAX_SUPP_RATES },
665 [NL80211_ATTR_BSS_HT_OPMODE] = { .type = NLA_U16 },
666
667 [NL80211_ATTR_MESH_CONFIG] = { .type = NLA_NESTED },
668 [NL80211_ATTR_SUPPORT_MESH_AUTH] = { .type = NLA_FLAG },
669
670 [NL80211_ATTR_HT_CAPABILITY] = NLA_POLICY_EXACT_LEN_WARN(NL80211_HT_CAPABILITY_LEN),
671
672 [NL80211_ATTR_MGMT_SUBTYPE] = { .type = NLA_U8 },
673 [NL80211_ATTR_IE] = NLA_POLICY_VALIDATE_FN(NLA_BINARY,
674 validate_ie_attr,
675 IEEE80211_MAX_DATA_LEN),
676 [NL80211_ATTR_SCAN_FREQUENCIES] = { .type = NLA_NESTED },
677 [NL80211_ATTR_SCAN_SSIDS] = { .type = NLA_NESTED },
678
679 [NL80211_ATTR_SSID] = { .type = NLA_BINARY,
680 .len = IEEE80211_MAX_SSID_LEN },
681 [NL80211_ATTR_AUTH_TYPE] = { .type = NLA_U32 },
682 [NL80211_ATTR_REASON_CODE] = { .type = NLA_U16 },
683 [NL80211_ATTR_FREQ_FIXED] = { .type = NLA_FLAG },
684 [NL80211_ATTR_TIMED_OUT] = { .type = NLA_FLAG },
685 [NL80211_ATTR_USE_MFP] = NLA_POLICY_RANGE(NLA_U32,
686 NL80211_MFP_NO,
687 NL80211_MFP_OPTIONAL),
688 [NL80211_ATTR_STA_FLAGS2] =
689 NLA_POLICY_EXACT_LEN_WARN(sizeof(struct nl80211_sta_flag_update)),
690 [NL80211_ATTR_CONTROL_PORT] = { .type = NLA_FLAG },
691 [NL80211_ATTR_CONTROL_PORT_ETHERTYPE] = { .type = NLA_U16 },
692 [NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT] = { .type = NLA_FLAG },
693 [NL80211_ATTR_CONTROL_PORT_OVER_NL80211] = { .type = NLA_FLAG },
694 [NL80211_ATTR_PRIVACY] = { .type = NLA_FLAG },
695 [NL80211_ATTR_STATUS_CODE] = { .type = NLA_U16 },
696 [NL80211_ATTR_CIPHER_SUITE_GROUP] = { .type = NLA_U32 },
697 [NL80211_ATTR_WPA_VERSIONS] =
698 NLA_POLICY_RANGE(NLA_U32, 0,
699 NL80211_WPA_VERSION_1 |
700 NL80211_WPA_VERSION_2 |
701 NL80211_WPA_VERSION_3),
702 [NL80211_ATTR_PID] = { .type = NLA_U32 },
703 [NL80211_ATTR_4ADDR] = { .type = NLA_U8 },
704 [NL80211_ATTR_PMKID] = NLA_POLICY_EXACT_LEN_WARN(WLAN_PMKID_LEN),
705 [NL80211_ATTR_DURATION] = { .type = NLA_U32 },
706 [NL80211_ATTR_COOKIE] = { .type = NLA_U64 },
707 [NL80211_ATTR_TX_RATES] = { .type = NLA_NESTED },
708 [NL80211_ATTR_FRAME] = { .type = NLA_BINARY,
709 .len = IEEE80211_MAX_DATA_LEN },
710 [NL80211_ATTR_FRAME_MATCH] = { .type = NLA_BINARY, },
711 [NL80211_ATTR_PS_STATE] = NLA_POLICY_RANGE(NLA_U32,
712 NL80211_PS_DISABLED,
713 NL80211_PS_ENABLED),
714 [NL80211_ATTR_CQM] = { .type = NLA_NESTED, },
715 [NL80211_ATTR_LOCAL_STATE_CHANGE] = { .type = NLA_FLAG },
716 [NL80211_ATTR_AP_ISOLATE] = { .type = NLA_U8 },
717 [NL80211_ATTR_WIPHY_TX_POWER_SETTING] = { .type = NLA_U32 },
718 [NL80211_ATTR_WIPHY_TX_POWER_LEVEL] = { .type = NLA_U32 },
719 [NL80211_ATTR_FRAME_TYPE] = { .type = NLA_U16 },
720 [NL80211_ATTR_WIPHY_ANTENNA_TX] = { .type = NLA_U32 },
721 [NL80211_ATTR_WIPHY_ANTENNA_RX] = { .type = NLA_U32 },
722 [NL80211_ATTR_MCAST_RATE] = { .type = NLA_U32 },
723 [NL80211_ATTR_OFFCHANNEL_TX_OK] = { .type = NLA_FLAG },
724 [NL80211_ATTR_KEY_DEFAULT_TYPES] = { .type = NLA_NESTED },
725 [NL80211_ATTR_WOWLAN_TRIGGERS] = { .type = NLA_NESTED },
726 [NL80211_ATTR_STA_PLINK_STATE] =
727 NLA_POLICY_MAX(NLA_U8, NUM_NL80211_PLINK_STATES - 1),
728 [NL80211_ATTR_MEASUREMENT_DURATION] = { .type = NLA_U16 },
729 [NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY] = { .type = NLA_FLAG },
730 [NL80211_ATTR_MESH_PEER_AID] =
731 NLA_POLICY_RANGE(NLA_U16, 1, IEEE80211_MAX_AID),
732 [NL80211_ATTR_SCHED_SCAN_INTERVAL] = { .type = NLA_U32 },
733 [NL80211_ATTR_REKEY_DATA] = { .type = NLA_NESTED },
734 [NL80211_ATTR_SCAN_SUPP_RATES] = { .type = NLA_NESTED },
735 [NL80211_ATTR_HIDDEN_SSID] =
736 NLA_POLICY_RANGE(NLA_U32,
737 NL80211_HIDDEN_SSID_NOT_IN_USE,
738 NL80211_HIDDEN_SSID_ZERO_CONTENTS),
739 [NL80211_ATTR_IE_PROBE_RESP] =
740 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_ie_attr,
741 IEEE80211_MAX_DATA_LEN),
742 [NL80211_ATTR_IE_ASSOC_RESP] =
743 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_ie_attr,
744 IEEE80211_MAX_DATA_LEN),
745 [NL80211_ATTR_ROAM_SUPPORT] = { .type = NLA_FLAG },
746 [NL80211_ATTR_STA_WME] = NLA_POLICY_NESTED(nl80211_sta_wme_policy),
747 [NL80211_ATTR_SCHED_SCAN_MATCH] = { .type = NLA_NESTED },
748 [NL80211_ATTR_TX_NO_CCK_RATE] = { .type = NLA_FLAG },
749 [NL80211_ATTR_TDLS_ACTION] = { .type = NLA_U8 },
750 [NL80211_ATTR_TDLS_DIALOG_TOKEN] = { .type = NLA_U8 },
751 [NL80211_ATTR_TDLS_OPERATION] = { .type = NLA_U8 },
752 [NL80211_ATTR_TDLS_SUPPORT] = { .type = NLA_FLAG },
753 [NL80211_ATTR_TDLS_EXTERNAL_SETUP] = { .type = NLA_FLAG },
754 [NL80211_ATTR_TDLS_INITIATOR] = { .type = NLA_FLAG },
755 [NL80211_ATTR_DONT_WAIT_FOR_ACK] = { .type = NLA_FLAG },
756 [NL80211_ATTR_PROBE_RESP] = { .type = NLA_BINARY,
757 .len = IEEE80211_MAX_DATA_LEN },
758 [NL80211_ATTR_DFS_REGION] = { .type = NLA_U8 },
759 [NL80211_ATTR_DISABLE_HT] = { .type = NLA_FLAG },
760 [NL80211_ATTR_HT_CAPABILITY_MASK] = {
761 .len = NL80211_HT_CAPABILITY_LEN
762 },
763 [NL80211_ATTR_NOACK_MAP] = { .type = NLA_U16 },
764 [NL80211_ATTR_INACTIVITY_TIMEOUT] = { .type = NLA_U16 },
765 [NL80211_ATTR_BG_SCAN_PERIOD] = { .type = NLA_U16 },
766 [NL80211_ATTR_WDEV] = { .type = NLA_U64 },
767 [NL80211_ATTR_USER_REG_HINT_TYPE] = { .type = NLA_U32 },
768
769 /* need to include at least Auth Transaction and Status Code */
770 [NL80211_ATTR_AUTH_DATA] = NLA_POLICY_MIN_LEN(4),
771
772 [NL80211_ATTR_VHT_CAPABILITY] = NLA_POLICY_EXACT_LEN_WARN(NL80211_VHT_CAPABILITY_LEN),
773 [NL80211_ATTR_SCAN_FLAGS] = { .type = NLA_U32 },
774 [NL80211_ATTR_P2P_CTWINDOW] = NLA_POLICY_MAX(NLA_U8, 127),
775 [NL80211_ATTR_P2P_OPPPS] = NLA_POLICY_MAX(NLA_U8, 1),
776 [NL80211_ATTR_LOCAL_MESH_POWER_MODE] =
777 NLA_POLICY_RANGE(NLA_U32,
778 NL80211_MESH_POWER_UNKNOWN + 1,
779 NL80211_MESH_POWER_MAX),
780 [NL80211_ATTR_ACL_POLICY] = {. type = NLA_U32 },
781 [NL80211_ATTR_MAC_ADDRS] = { .type = NLA_NESTED },
782 [NL80211_ATTR_STA_CAPABILITY] = { .type = NLA_U16 },
783 [NL80211_ATTR_STA_EXT_CAPABILITY] = { .type = NLA_BINARY, },
784 [NL80211_ATTR_SPLIT_WIPHY_DUMP] = { .type = NLA_FLAG, },
785 [NL80211_ATTR_DISABLE_VHT] = { .type = NLA_FLAG },
786 [NL80211_ATTR_VHT_CAPABILITY_MASK] = {
787 .len = NL80211_VHT_CAPABILITY_LEN,
788 },
789 [NL80211_ATTR_MDID] = { .type = NLA_U16 },
790 [NL80211_ATTR_IE_RIC] = { .type = NLA_BINARY,
791 .len = IEEE80211_MAX_DATA_LEN },
792 [NL80211_ATTR_CRIT_PROT_ID] = { .type = NLA_U16 },
793 [NL80211_ATTR_MAX_CRIT_PROT_DURATION] =
794 NLA_POLICY_MAX(NLA_U16, NL80211_CRIT_PROTO_MAX_DURATION),
795 [NL80211_ATTR_PEER_AID] =
796 NLA_POLICY_RANGE(NLA_U16, 1, IEEE80211_MAX_AID),
797 [NL80211_ATTR_CH_SWITCH_COUNT] = { .type = NLA_U32 },
798 [NL80211_ATTR_CH_SWITCH_BLOCK_TX] = { .type = NLA_FLAG },
799 [NL80211_ATTR_CSA_IES] = { .type = NLA_NESTED },
800 [NL80211_ATTR_CNTDWN_OFFS_BEACON] = { .type = NLA_BINARY },
801 [NL80211_ATTR_CNTDWN_OFFS_PRESP] = { .type = NLA_BINARY },
802 [NL80211_ATTR_STA_SUPPORTED_CHANNELS] = NLA_POLICY_MIN_LEN(2),
803 /*
804 * The value of the Length field of the Supported Operating
805 * Classes element is between 2 and 253.
806 */
807 [NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES] =
808 NLA_POLICY_RANGE(NLA_BINARY, 2, 253),
809 [NL80211_ATTR_HANDLE_DFS] = { .type = NLA_FLAG },
810 [NL80211_ATTR_OPMODE_NOTIF] = { .type = NLA_U8 },
811 [NL80211_ATTR_VENDOR_ID] = { .type = NLA_U32 },
812 [NL80211_ATTR_VENDOR_SUBCMD] = { .type = NLA_U32 },
813 [NL80211_ATTR_VENDOR_DATA] = { .type = NLA_BINARY },
814 [NL80211_ATTR_QOS_MAP] = NLA_POLICY_RANGE(NLA_BINARY,
815 IEEE80211_QOS_MAP_LEN_MIN,
816 IEEE80211_QOS_MAP_LEN_MAX),
817 [NL80211_ATTR_MAC_HINT] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
818 [NL80211_ATTR_WIPHY_FREQ_HINT] = { .type = NLA_U32 },
819 [NL80211_ATTR_TDLS_PEER_CAPABILITY] = { .type = NLA_U32 },
820 [NL80211_ATTR_SOCKET_OWNER] = { .type = NLA_FLAG },
821 [NL80211_ATTR_CSA_C_OFFSETS_TX] = { .type = NLA_BINARY },
822 [NL80211_ATTR_USE_RRM] = { .type = NLA_FLAG },
823 [NL80211_ATTR_TSID] = NLA_POLICY_MAX(NLA_U8, IEEE80211_NUM_TIDS - 1),
824 [NL80211_ATTR_USER_PRIO] =
825 NLA_POLICY_MAX(NLA_U8, IEEE80211_NUM_UPS - 1),
826 [NL80211_ATTR_ADMITTED_TIME] = { .type = NLA_U16 },
827 [NL80211_ATTR_SMPS_MODE] = { .type = NLA_U8 },
828 [NL80211_ATTR_OPER_CLASS] = { .type = NLA_U8 },
829 [NL80211_ATTR_MAC_MASK] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
830 [NL80211_ATTR_WIPHY_SELF_MANAGED_REG] = { .type = NLA_FLAG },
831 [NL80211_ATTR_NETNS_FD] = { .type = NLA_U32 },
832 [NL80211_ATTR_SCHED_SCAN_DELAY] = { .type = NLA_U32 },
833 [NL80211_ATTR_REG_INDOOR] = { .type = NLA_FLAG },
834 [NL80211_ATTR_PBSS] = { .type = NLA_FLAG },
835 [NL80211_ATTR_BSS_SELECT] = { .type = NLA_NESTED },
836 [NL80211_ATTR_STA_SUPPORT_P2P_PS] =
837 NLA_POLICY_MAX(NLA_U8, NUM_NL80211_P2P_PS_STATUS - 1),
838 [NL80211_ATTR_MU_MIMO_GROUP_DATA] = {
839 .len = VHT_MUMIMO_GROUPS_DATA_LEN
840 },
841 [NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
842 [NL80211_ATTR_NAN_MASTER_PREF] = NLA_POLICY_MIN(NLA_U8, 1),
843 [NL80211_ATTR_BANDS] = { .type = NLA_U32 },
844 [NL80211_ATTR_NAN_CONFIG] = NLA_POLICY_NESTED(nl80211_nan_conf_policy),
845 [NL80211_ATTR_NAN_FUNC] = { .type = NLA_NESTED },
846 [NL80211_ATTR_FILS_KEK] = { .type = NLA_BINARY,
847 .len = FILS_MAX_KEK_LEN },
848 [NL80211_ATTR_FILS_NONCES] = NLA_POLICY_EXACT_LEN_WARN(2 * FILS_NONCE_LEN),
849 [NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED] = { .type = NLA_FLAG, },
850 [NL80211_ATTR_BSSID] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
851 [NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] = { .type = NLA_S8 },
852 [NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST] = {
853 .len = sizeof(struct nl80211_bss_select_rssi_adjust)
854 },
855 [NL80211_ATTR_TIMEOUT_REASON] = { .type = NLA_U32 },
856 [NL80211_ATTR_FILS_ERP_USERNAME] = { .type = NLA_BINARY,
857 .len = FILS_ERP_MAX_USERNAME_LEN },
858 [NL80211_ATTR_FILS_ERP_REALM] = { .type = NLA_BINARY,
859 .len = FILS_ERP_MAX_REALM_LEN },
860 [NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] = { .type = NLA_U16 },
861 [NL80211_ATTR_FILS_ERP_RRK] = { .type = NLA_BINARY,
862 .len = FILS_ERP_MAX_RRK_LEN },
863 [NL80211_ATTR_FILS_CACHE_ID] = NLA_POLICY_EXACT_LEN_WARN(2),
864 [NL80211_ATTR_PMK] = { .type = NLA_BINARY, .len = PMK_MAX_LEN },
865 [NL80211_ATTR_PMKR0_NAME] = NLA_POLICY_EXACT_LEN(WLAN_PMK_NAME_LEN),
866 [NL80211_ATTR_SCHED_SCAN_MULTI] = { .type = NLA_FLAG },
867 [NL80211_ATTR_EXTERNAL_AUTH_SUPPORT] = { .type = NLA_FLAG },
868
869 [NL80211_ATTR_TXQ_LIMIT] = { .type = NLA_U32 },
870 [NL80211_ATTR_TXQ_MEMORY_LIMIT] = { .type = NLA_U32 },
871 [NL80211_ATTR_TXQ_QUANTUM] = NLA_POLICY_FULL_RANGE(NLA_U32, &q_range),
872 [NL80211_ATTR_HE_CAPABILITY] =
873 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_he_capa,
874 NL80211_HE_MAX_CAPABILITY_LEN),
875 [NL80211_ATTR_FTM_RESPONDER] =
876 NLA_POLICY_NESTED(nl80211_ftm_responder_policy),
877 [NL80211_ATTR_TIMEOUT] = NLA_POLICY_MIN(NLA_U32, 1),
878 [NL80211_ATTR_PEER_MEASUREMENTS] =
879 NLA_POLICY_NESTED(nl80211_pmsr_attr_policy),
880 [NL80211_ATTR_AIRTIME_WEIGHT] = NLA_POLICY_MIN(NLA_U16, 1),
881 [NL80211_ATTR_SAE_PASSWORD] = { .type = NLA_BINARY,
882 .len = SAE_PASSWORD_MAX_LEN },
883 [NL80211_ATTR_TWT_RESPONDER] = { .type = NLA_FLAG },
884 [NL80211_ATTR_HE_OBSS_PD] = NLA_POLICY_NESTED(he_obss_pd_policy),
885 [NL80211_ATTR_VLAN_ID] = NLA_POLICY_RANGE(NLA_U16, 1, VLAN_N_VID - 2),
886 [NL80211_ATTR_HE_BSS_COLOR] = NLA_POLICY_NESTED(he_bss_color_policy),
887 [NL80211_ATTR_TID_CONFIG] =
888 NLA_POLICY_NESTED_ARRAY(nl80211_tid_config_attr_policy),
889 [NL80211_ATTR_CONTROL_PORT_NO_PREAUTH] = { .type = NLA_FLAG },
890 [NL80211_ATTR_PMK_LIFETIME] = NLA_POLICY_MIN(NLA_U32, 1),
891 [NL80211_ATTR_PMK_REAUTH_THRESHOLD] = NLA_POLICY_RANGE(NLA_U8, 1, 100),
892 [NL80211_ATTR_RECEIVE_MULTICAST] = { .type = NLA_FLAG },
893 [NL80211_ATTR_WIPHY_FREQ_OFFSET] = NLA_POLICY_RANGE(NLA_U32, 0, 999),
894 [NL80211_ATTR_SCAN_FREQ_KHZ] = { .type = NLA_NESTED },
895 [NL80211_ATTR_HE_6GHZ_CAPABILITY] =
896 NLA_POLICY_EXACT_LEN(sizeof(struct ieee80211_he_6ghz_capa)),
897 [NL80211_ATTR_FILS_DISCOVERY] =
898 NLA_POLICY_NESTED(nl80211_fils_discovery_policy),
899 [NL80211_ATTR_UNSOL_BCAST_PROBE_RESP] =
900 NLA_POLICY_NESTED(nl80211_unsol_bcast_probe_resp_policy),
901 [NL80211_ATTR_S1G_CAPABILITY] =
902 NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN),
903 [NL80211_ATTR_S1G_CAPABILITY_MASK] =
904 NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN),
905 [NL80211_ATTR_SAE_PWE] =
906 NLA_POLICY_RANGE(NLA_U8, NL80211_SAE_PWE_HUNT_AND_PECK,
907 NL80211_SAE_PWE_BOTH),
908 [NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
909 [NL80211_ATTR_SAR_SPEC] = NLA_POLICY_NESTED(sar_policy),
910 [NL80211_ATTR_DISABLE_HE] = { .type = NLA_FLAG },
911 [NL80211_ATTR_OBSS_COLOR_BITMAP] = { .type = NLA_U64 },
912 [NL80211_ATTR_COLOR_CHANGE_COUNT] = { .type = NLA_U8 },
913 [NL80211_ATTR_COLOR_CHANGE_COLOR] = { .type = NLA_U8 },
914 [NL80211_ATTR_COLOR_CHANGE_ELEMS] = NLA_POLICY_NESTED(nl80211_policy),
915 [NL80211_ATTR_MBSSID_CONFIG] =
916 NLA_POLICY_NESTED(nl80211_mbssid_config_policy),
917 [NL80211_ATTR_MBSSID_ELEMS] = { .type = NLA_NESTED },
918 [NL80211_ATTR_RADAR_BACKGROUND] = { .type = NLA_FLAG },
919 [NL80211_ATTR_AP_SETTINGS_FLAGS] = { .type = NLA_U32 },
920 [NL80211_ATTR_EHT_CAPABILITY] =
921 NLA_POLICY_RANGE(NLA_BINARY,
922 NL80211_EHT_MIN_CAPABILITY_LEN,
923 NL80211_EHT_MAX_CAPABILITY_LEN),
924 [NL80211_ATTR_DISABLE_EHT] = { .type = NLA_FLAG },
925 [NL80211_ATTR_MLO_LINKS] =
926 NLA_POLICY_NESTED_ARRAY(nl80211_policy),
927 [NL80211_ATTR_MLO_LINK_ID] =
928 NLA_POLICY_RANGE(NLA_U8, 0, IEEE80211_MLD_MAX_NUM_LINKS - 1),
929 [NL80211_ATTR_MLD_ADDR] = NLA_POLICY_EXACT_LEN(ETH_ALEN),
930 [NL80211_ATTR_MLO_SUPPORT] = { .type = NLA_FLAG },
931 [NL80211_ATTR_MAX_NUM_AKM_SUITES] = { .type = NLA_REJECT },
932 [NL80211_ATTR_EML_CAPABILITY] = { .type = NLA_U16 },
933 [NL80211_ATTR_PUNCT_BITMAP] =
934 NLA_POLICY_FULL_RANGE(NLA_U32, &nl80211_punct_bitmap_range),
935
936 [NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS] = { .type = NLA_U16 },
937 [NL80211_ATTR_HW_TIMESTAMP_ENABLED] = { .type = NLA_FLAG },
938 [NL80211_ATTR_EMA_RNR_ELEMS] = { .type = NLA_NESTED },
939 [NL80211_ATTR_MLO_LINK_DISABLED] = { .type = NLA_FLAG },
940 [NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA] = { .type = NLA_FLAG },
941 [NL80211_ATTR_MLO_TTLM_DLINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
942 [NL80211_ATTR_MLO_TTLM_ULINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
943 [NL80211_ATTR_ASSOC_SPP_AMSDU] = { .type = NLA_FLAG },
944 [NL80211_ATTR_VIF_RADIO_MASK] = { .type = NLA_U32 },
945 [NL80211_ATTR_SUPPORTED_SELECTORS] =
946 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_supported_selectors,
947 NL80211_MAX_SUPP_SELECTORS),
948 [NL80211_ATTR_MLO_RECONF_REM_LINKS] = { .type = NLA_U16 },
949 [NL80211_ATTR_EPCS] = { .type = NLA_FLAG },
950 [NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS] = { .type = NLA_U16 },
951 [NL80211_ATTR_WIPHY_RADIO_INDEX] = { .type = NLA_U8 },
952 [NL80211_ATTR_S1G_LONG_BEACON_PERIOD] = NLA_POLICY_MIN(NLA_U8, 2),
953 [NL80211_ATTR_S1G_SHORT_BEACON] =
954 NLA_POLICY_NESTED(nl80211_s1g_short_beacon),
955 [NL80211_ATTR_BSS_PARAM] = { .type = NLA_FLAG },
956 [NL80211_ATTR_S1G_PRIMARY_2MHZ] = { .type = NLA_FLAG },
957 [NL80211_ATTR_EPP_PEER] = { .type = NLA_FLAG },
958 [NL80211_ATTR_UHR_CAPABILITY] =
959 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_uhr_capa, 255),
960 [NL80211_ATTR_DISABLE_UHR] = { .type = NLA_FLAG },
> 961 [[NL80211_ATTR_UHR_OPERATION] =
962 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_uhr_operation),
963 };
964
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH wireless-next] wifi: nl80211: split out UHR operation information
2026-03-03 14:25 [PATCH wireless-next] wifi: nl80211: split out UHR operation information Johannes Berg
2026-03-03 19:59 ` kernel test robot
@ 2026-03-03 20:19 ` kernel test robot
1 sibling, 0 replies; 3+ messages in thread
From: kernel test robot @ 2026-03-03 20:19 UTC (permalink / raw)
To: Johannes Berg, linux-wireless; +Cc: oe-kbuild-all, Johannes Berg
Hi Johannes,
kernel test robot noticed the following build errors:
[auto build test ERROR on wireless-next/main]
[also build test ERROR on next-20260303]
[cannot apply to wireless/main linus/master v7.0-rc2]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Johannes-Berg/wifi-nl80211-split-out-UHR-operation-information/20260303-223359
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/20260303152558.00e7bc8e9f4b.Iafdf37fb0f4304bdcdb824977d61e17b38c47685%40changeid
patch subject: [PATCH wireless-next] wifi: nl80211: split out UHR operation information
config: x86_64-rhel-9.4-ltp (https://download.01.org/0day-ci/archive/20260303/202603032131.yShfv7Yn-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260303/202603032131.yShfv7Yn-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603032131.yShfv7Yn-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
>> net/wireless/nl80211.c:961:10: error: expected expression before '[' token
961 | [[NL80211_ATTR_UHR_OPERATION] =
| ^
net/wireless/nl80211.c:963:1: error: expected expression before '}' token
963 | };
| ^
net/wireless/nl80211.c: In function 'nl80211_parse_key_new':
>> net/wireless/nl80211.c:1454:47: error: 'nl80211_key_policy' undeclared (first use in this function); did you mean 'nl80211_rekey_policy'?
1454 | nl80211_key_policy,
| ^~~~~~~~~~~~~~~~~~
| nl80211_rekey_policy
net/wireless/nl80211.c:1454:47: note: each undeclared identifier is reported only once for each function it appears in
net/wireless/nl80211.c: At top level:
>> net/wireless/nl80211.c:345:12: warning: 'validate_uhr_operation' defined but not used [-Wunused-function]
345 | static int validate_uhr_operation(const struct nlattr *attr,
| ^~~~~~~~~~~~~~~~~~~~~~
vim +961 net/wireless/nl80211.c
583
584 static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
585 [0] = { .strict_start_type = NL80211_ATTR_HE_OBSS_PD },
586 [NL80211_ATTR_WIPHY] = { .type = NLA_U32 },
587 [NL80211_ATTR_WIPHY_NAME] = { .type = NLA_NUL_STRING,
588 .len = 20-1 },
589 [NL80211_ATTR_WIPHY_TXQ_PARAMS] = { .type = NLA_NESTED },
590
591 [NL80211_ATTR_WIPHY_FREQ] = { .type = NLA_U32 },
592 [NL80211_ATTR_WIPHY_CHANNEL_TYPE] = { .type = NLA_U32 },
593 [NL80211_ATTR_WIPHY_EDMG_CHANNELS] = NLA_POLICY_RANGE(NLA_U8,
594 NL80211_EDMG_CHANNELS_MIN,
595 NL80211_EDMG_CHANNELS_MAX),
596 [NL80211_ATTR_WIPHY_EDMG_BW_CONFIG] = NLA_POLICY_RANGE(NLA_U8,
597 NL80211_EDMG_BW_CONFIG_MIN,
598 NL80211_EDMG_BW_CONFIG_MAX),
599
600 [NL80211_ATTR_CHANNEL_WIDTH] = { .type = NLA_U32 },
601 [NL80211_ATTR_CENTER_FREQ1] = { .type = NLA_U32 },
602 [NL80211_ATTR_CENTER_FREQ1_OFFSET] = NLA_POLICY_RANGE(NLA_U32, 0, 999),
603 [NL80211_ATTR_CENTER_FREQ2] = { .type = NLA_U32 },
604
605 [NL80211_ATTR_WIPHY_RETRY_SHORT] = NLA_POLICY_MIN(NLA_U8, 1),
606 [NL80211_ATTR_WIPHY_RETRY_LONG] = NLA_POLICY_MIN(NLA_U8, 1),
607 [NL80211_ATTR_WIPHY_FRAG_THRESHOLD] = { .type = NLA_U32 },
608 [NL80211_ATTR_WIPHY_RTS_THRESHOLD] = { .type = NLA_U32 },
609 [NL80211_ATTR_WIPHY_COVERAGE_CLASS] = { .type = NLA_U8 },
610 [NL80211_ATTR_WIPHY_DYN_ACK] = { .type = NLA_FLAG },
611
612 [NL80211_ATTR_IFTYPE] = NLA_POLICY_MAX(NLA_U32, NL80211_IFTYPE_MAX),
613 [NL80211_ATTR_IFINDEX] = { .type = NLA_U32 },
614 [NL80211_ATTR_IFNAME] = { .type = NLA_NUL_STRING, .len = IFNAMSIZ-1 },
615
616 [NL80211_ATTR_MAC] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
617 [NL80211_ATTR_PREV_BSSID] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
618
619 [NL80211_ATTR_KEY] = { .type = NLA_NESTED, },
620 [NL80211_ATTR_KEY_DATA] = { .type = NLA_BINARY,
621 .len = WLAN_MAX_KEY_LEN },
622 [NL80211_ATTR_KEY_IDX] = NLA_POLICY_MAX(NLA_U8, 7),
623 [NL80211_ATTR_KEY_CIPHER] = { .type = NLA_U32 },
624 [NL80211_ATTR_KEY_DEFAULT] = { .type = NLA_FLAG },
625 [NL80211_ATTR_KEY_SEQ] = { .type = NLA_BINARY, .len = 16 },
626 [NL80211_ATTR_KEY_TYPE] =
627 NLA_POLICY_MAX(NLA_U32, NUM_NL80211_KEYTYPES),
628
629 [NL80211_ATTR_BEACON_INTERVAL] = { .type = NLA_U32 },
630 [NL80211_ATTR_DTIM_PERIOD] = { .type = NLA_U32 },
631 [NL80211_ATTR_BEACON_HEAD] =
632 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_beacon_head,
633 IEEE80211_MAX_DATA_LEN),
634 [NL80211_ATTR_BEACON_TAIL] =
635 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_ie_attr,
636 IEEE80211_MAX_DATA_LEN),
637 [NL80211_ATTR_STA_AID] =
638 NLA_POLICY_RANGE(NLA_U16, 1, IEEE80211_MAX_AID),
639 [NL80211_ATTR_STA_FLAGS] = { .type = NLA_NESTED },
640 [NL80211_ATTR_STA_LISTEN_INTERVAL] = { .type = NLA_U16 },
641 [NL80211_ATTR_STA_SUPPORTED_RATES] = { .type = NLA_BINARY,
642 .len = NL80211_MAX_SUPP_RATES },
643 [NL80211_ATTR_STA_PLINK_ACTION] =
644 NLA_POLICY_MAX(NLA_U8, NUM_NL80211_PLINK_ACTIONS - 1),
645 [NL80211_ATTR_STA_TX_POWER_SETTING] =
646 NLA_POLICY_RANGE(NLA_U8,
647 NL80211_TX_POWER_AUTOMATIC,
648 NL80211_TX_POWER_FIXED),
649 [NL80211_ATTR_STA_TX_POWER] = { .type = NLA_S16 },
650 [NL80211_ATTR_STA_VLAN] = { .type = NLA_U32 },
651 [NL80211_ATTR_MNTR_FLAGS] = { /* NLA_NESTED can't be empty */ },
652 [NL80211_ATTR_MESH_ID] = { .type = NLA_BINARY,
653 .len = IEEE80211_MAX_MESH_ID_LEN },
654 [NL80211_ATTR_MPATH_NEXT_HOP] = NLA_POLICY_ETH_ADDR_COMPAT,
655
656 /* allow 3 for NUL-termination, we used to declare this NLA_STRING */
657 [NL80211_ATTR_REG_ALPHA2] = NLA_POLICY_RANGE(NLA_BINARY, 2, 3),
658 [NL80211_ATTR_REG_RULES] = { .type = NLA_NESTED },
659
660 [NL80211_ATTR_BSS_CTS_PROT] = { .type = NLA_U8 },
661 [NL80211_ATTR_BSS_SHORT_PREAMBLE] = { .type = NLA_U8 },
662 [NL80211_ATTR_BSS_SHORT_SLOT_TIME] = { .type = NLA_U8 },
663 [NL80211_ATTR_BSS_BASIC_RATES] = { .type = NLA_BINARY,
664 .len = NL80211_MAX_SUPP_RATES },
665 [NL80211_ATTR_BSS_HT_OPMODE] = { .type = NLA_U16 },
666
667 [NL80211_ATTR_MESH_CONFIG] = { .type = NLA_NESTED },
668 [NL80211_ATTR_SUPPORT_MESH_AUTH] = { .type = NLA_FLAG },
669
670 [NL80211_ATTR_HT_CAPABILITY] = NLA_POLICY_EXACT_LEN_WARN(NL80211_HT_CAPABILITY_LEN),
671
672 [NL80211_ATTR_MGMT_SUBTYPE] = { .type = NLA_U8 },
673 [NL80211_ATTR_IE] = NLA_POLICY_VALIDATE_FN(NLA_BINARY,
674 validate_ie_attr,
675 IEEE80211_MAX_DATA_LEN),
676 [NL80211_ATTR_SCAN_FREQUENCIES] = { .type = NLA_NESTED },
677 [NL80211_ATTR_SCAN_SSIDS] = { .type = NLA_NESTED },
678
679 [NL80211_ATTR_SSID] = { .type = NLA_BINARY,
680 .len = IEEE80211_MAX_SSID_LEN },
681 [NL80211_ATTR_AUTH_TYPE] = { .type = NLA_U32 },
682 [NL80211_ATTR_REASON_CODE] = { .type = NLA_U16 },
683 [NL80211_ATTR_FREQ_FIXED] = { .type = NLA_FLAG },
684 [NL80211_ATTR_TIMED_OUT] = { .type = NLA_FLAG },
685 [NL80211_ATTR_USE_MFP] = NLA_POLICY_RANGE(NLA_U32,
686 NL80211_MFP_NO,
687 NL80211_MFP_OPTIONAL),
688 [NL80211_ATTR_STA_FLAGS2] =
689 NLA_POLICY_EXACT_LEN_WARN(sizeof(struct nl80211_sta_flag_update)),
690 [NL80211_ATTR_CONTROL_PORT] = { .type = NLA_FLAG },
691 [NL80211_ATTR_CONTROL_PORT_ETHERTYPE] = { .type = NLA_U16 },
692 [NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT] = { .type = NLA_FLAG },
693 [NL80211_ATTR_CONTROL_PORT_OVER_NL80211] = { .type = NLA_FLAG },
694 [NL80211_ATTR_PRIVACY] = { .type = NLA_FLAG },
695 [NL80211_ATTR_STATUS_CODE] = { .type = NLA_U16 },
696 [NL80211_ATTR_CIPHER_SUITE_GROUP] = { .type = NLA_U32 },
697 [NL80211_ATTR_WPA_VERSIONS] =
698 NLA_POLICY_RANGE(NLA_U32, 0,
699 NL80211_WPA_VERSION_1 |
700 NL80211_WPA_VERSION_2 |
701 NL80211_WPA_VERSION_3),
702 [NL80211_ATTR_PID] = { .type = NLA_U32 },
703 [NL80211_ATTR_4ADDR] = { .type = NLA_U8 },
704 [NL80211_ATTR_PMKID] = NLA_POLICY_EXACT_LEN_WARN(WLAN_PMKID_LEN),
705 [NL80211_ATTR_DURATION] = { .type = NLA_U32 },
706 [NL80211_ATTR_COOKIE] = { .type = NLA_U64 },
707 [NL80211_ATTR_TX_RATES] = { .type = NLA_NESTED },
708 [NL80211_ATTR_FRAME] = { .type = NLA_BINARY,
709 .len = IEEE80211_MAX_DATA_LEN },
710 [NL80211_ATTR_FRAME_MATCH] = { .type = NLA_BINARY, },
711 [NL80211_ATTR_PS_STATE] = NLA_POLICY_RANGE(NLA_U32,
712 NL80211_PS_DISABLED,
713 NL80211_PS_ENABLED),
714 [NL80211_ATTR_CQM] = { .type = NLA_NESTED, },
715 [NL80211_ATTR_LOCAL_STATE_CHANGE] = { .type = NLA_FLAG },
716 [NL80211_ATTR_AP_ISOLATE] = { .type = NLA_U8 },
717 [NL80211_ATTR_WIPHY_TX_POWER_SETTING] = { .type = NLA_U32 },
718 [NL80211_ATTR_WIPHY_TX_POWER_LEVEL] = { .type = NLA_U32 },
719 [NL80211_ATTR_FRAME_TYPE] = { .type = NLA_U16 },
720 [NL80211_ATTR_WIPHY_ANTENNA_TX] = { .type = NLA_U32 },
721 [NL80211_ATTR_WIPHY_ANTENNA_RX] = { .type = NLA_U32 },
722 [NL80211_ATTR_MCAST_RATE] = { .type = NLA_U32 },
723 [NL80211_ATTR_OFFCHANNEL_TX_OK] = { .type = NLA_FLAG },
724 [NL80211_ATTR_KEY_DEFAULT_TYPES] = { .type = NLA_NESTED },
725 [NL80211_ATTR_WOWLAN_TRIGGERS] = { .type = NLA_NESTED },
726 [NL80211_ATTR_STA_PLINK_STATE] =
727 NLA_POLICY_MAX(NLA_U8, NUM_NL80211_PLINK_STATES - 1),
728 [NL80211_ATTR_MEASUREMENT_DURATION] = { .type = NLA_U16 },
729 [NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY] = { .type = NLA_FLAG },
730 [NL80211_ATTR_MESH_PEER_AID] =
731 NLA_POLICY_RANGE(NLA_U16, 1, IEEE80211_MAX_AID),
732 [NL80211_ATTR_SCHED_SCAN_INTERVAL] = { .type = NLA_U32 },
733 [NL80211_ATTR_REKEY_DATA] = { .type = NLA_NESTED },
734 [NL80211_ATTR_SCAN_SUPP_RATES] = { .type = NLA_NESTED },
735 [NL80211_ATTR_HIDDEN_SSID] =
736 NLA_POLICY_RANGE(NLA_U32,
737 NL80211_HIDDEN_SSID_NOT_IN_USE,
738 NL80211_HIDDEN_SSID_ZERO_CONTENTS),
739 [NL80211_ATTR_IE_PROBE_RESP] =
740 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_ie_attr,
741 IEEE80211_MAX_DATA_LEN),
742 [NL80211_ATTR_IE_ASSOC_RESP] =
743 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_ie_attr,
744 IEEE80211_MAX_DATA_LEN),
745 [NL80211_ATTR_ROAM_SUPPORT] = { .type = NLA_FLAG },
746 [NL80211_ATTR_STA_WME] = NLA_POLICY_NESTED(nl80211_sta_wme_policy),
747 [NL80211_ATTR_SCHED_SCAN_MATCH] = { .type = NLA_NESTED },
748 [NL80211_ATTR_TX_NO_CCK_RATE] = { .type = NLA_FLAG },
749 [NL80211_ATTR_TDLS_ACTION] = { .type = NLA_U8 },
750 [NL80211_ATTR_TDLS_DIALOG_TOKEN] = { .type = NLA_U8 },
751 [NL80211_ATTR_TDLS_OPERATION] = { .type = NLA_U8 },
752 [NL80211_ATTR_TDLS_SUPPORT] = { .type = NLA_FLAG },
753 [NL80211_ATTR_TDLS_EXTERNAL_SETUP] = { .type = NLA_FLAG },
754 [NL80211_ATTR_TDLS_INITIATOR] = { .type = NLA_FLAG },
755 [NL80211_ATTR_DONT_WAIT_FOR_ACK] = { .type = NLA_FLAG },
756 [NL80211_ATTR_PROBE_RESP] = { .type = NLA_BINARY,
757 .len = IEEE80211_MAX_DATA_LEN },
758 [NL80211_ATTR_DFS_REGION] = { .type = NLA_U8 },
759 [NL80211_ATTR_DISABLE_HT] = { .type = NLA_FLAG },
760 [NL80211_ATTR_HT_CAPABILITY_MASK] = {
761 .len = NL80211_HT_CAPABILITY_LEN
762 },
763 [NL80211_ATTR_NOACK_MAP] = { .type = NLA_U16 },
764 [NL80211_ATTR_INACTIVITY_TIMEOUT] = { .type = NLA_U16 },
765 [NL80211_ATTR_BG_SCAN_PERIOD] = { .type = NLA_U16 },
766 [NL80211_ATTR_WDEV] = { .type = NLA_U64 },
767 [NL80211_ATTR_USER_REG_HINT_TYPE] = { .type = NLA_U32 },
768
769 /* need to include at least Auth Transaction and Status Code */
770 [NL80211_ATTR_AUTH_DATA] = NLA_POLICY_MIN_LEN(4),
771
772 [NL80211_ATTR_VHT_CAPABILITY] = NLA_POLICY_EXACT_LEN_WARN(NL80211_VHT_CAPABILITY_LEN),
773 [NL80211_ATTR_SCAN_FLAGS] = { .type = NLA_U32 },
774 [NL80211_ATTR_P2P_CTWINDOW] = NLA_POLICY_MAX(NLA_U8, 127),
775 [NL80211_ATTR_P2P_OPPPS] = NLA_POLICY_MAX(NLA_U8, 1),
776 [NL80211_ATTR_LOCAL_MESH_POWER_MODE] =
777 NLA_POLICY_RANGE(NLA_U32,
778 NL80211_MESH_POWER_UNKNOWN + 1,
779 NL80211_MESH_POWER_MAX),
780 [NL80211_ATTR_ACL_POLICY] = {. type = NLA_U32 },
781 [NL80211_ATTR_MAC_ADDRS] = { .type = NLA_NESTED },
782 [NL80211_ATTR_STA_CAPABILITY] = { .type = NLA_U16 },
783 [NL80211_ATTR_STA_EXT_CAPABILITY] = { .type = NLA_BINARY, },
784 [NL80211_ATTR_SPLIT_WIPHY_DUMP] = { .type = NLA_FLAG, },
785 [NL80211_ATTR_DISABLE_VHT] = { .type = NLA_FLAG },
786 [NL80211_ATTR_VHT_CAPABILITY_MASK] = {
787 .len = NL80211_VHT_CAPABILITY_LEN,
788 },
789 [NL80211_ATTR_MDID] = { .type = NLA_U16 },
790 [NL80211_ATTR_IE_RIC] = { .type = NLA_BINARY,
791 .len = IEEE80211_MAX_DATA_LEN },
792 [NL80211_ATTR_CRIT_PROT_ID] = { .type = NLA_U16 },
793 [NL80211_ATTR_MAX_CRIT_PROT_DURATION] =
794 NLA_POLICY_MAX(NLA_U16, NL80211_CRIT_PROTO_MAX_DURATION),
795 [NL80211_ATTR_PEER_AID] =
796 NLA_POLICY_RANGE(NLA_U16, 1, IEEE80211_MAX_AID),
797 [NL80211_ATTR_CH_SWITCH_COUNT] = { .type = NLA_U32 },
798 [NL80211_ATTR_CH_SWITCH_BLOCK_TX] = { .type = NLA_FLAG },
799 [NL80211_ATTR_CSA_IES] = { .type = NLA_NESTED },
800 [NL80211_ATTR_CNTDWN_OFFS_BEACON] = { .type = NLA_BINARY },
801 [NL80211_ATTR_CNTDWN_OFFS_PRESP] = { .type = NLA_BINARY },
802 [NL80211_ATTR_STA_SUPPORTED_CHANNELS] = NLA_POLICY_MIN_LEN(2),
803 /*
804 * The value of the Length field of the Supported Operating
805 * Classes element is between 2 and 253.
806 */
807 [NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES] =
808 NLA_POLICY_RANGE(NLA_BINARY, 2, 253),
809 [NL80211_ATTR_HANDLE_DFS] = { .type = NLA_FLAG },
810 [NL80211_ATTR_OPMODE_NOTIF] = { .type = NLA_U8 },
811 [NL80211_ATTR_VENDOR_ID] = { .type = NLA_U32 },
812 [NL80211_ATTR_VENDOR_SUBCMD] = { .type = NLA_U32 },
813 [NL80211_ATTR_VENDOR_DATA] = { .type = NLA_BINARY },
814 [NL80211_ATTR_QOS_MAP] = NLA_POLICY_RANGE(NLA_BINARY,
815 IEEE80211_QOS_MAP_LEN_MIN,
816 IEEE80211_QOS_MAP_LEN_MAX),
817 [NL80211_ATTR_MAC_HINT] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
818 [NL80211_ATTR_WIPHY_FREQ_HINT] = { .type = NLA_U32 },
819 [NL80211_ATTR_TDLS_PEER_CAPABILITY] = { .type = NLA_U32 },
820 [NL80211_ATTR_SOCKET_OWNER] = { .type = NLA_FLAG },
821 [NL80211_ATTR_CSA_C_OFFSETS_TX] = { .type = NLA_BINARY },
822 [NL80211_ATTR_USE_RRM] = { .type = NLA_FLAG },
823 [NL80211_ATTR_TSID] = NLA_POLICY_MAX(NLA_U8, IEEE80211_NUM_TIDS - 1),
824 [NL80211_ATTR_USER_PRIO] =
825 NLA_POLICY_MAX(NLA_U8, IEEE80211_NUM_UPS - 1),
826 [NL80211_ATTR_ADMITTED_TIME] = { .type = NLA_U16 },
827 [NL80211_ATTR_SMPS_MODE] = { .type = NLA_U8 },
828 [NL80211_ATTR_OPER_CLASS] = { .type = NLA_U8 },
829 [NL80211_ATTR_MAC_MASK] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
830 [NL80211_ATTR_WIPHY_SELF_MANAGED_REG] = { .type = NLA_FLAG },
831 [NL80211_ATTR_NETNS_FD] = { .type = NLA_U32 },
832 [NL80211_ATTR_SCHED_SCAN_DELAY] = { .type = NLA_U32 },
833 [NL80211_ATTR_REG_INDOOR] = { .type = NLA_FLAG },
834 [NL80211_ATTR_PBSS] = { .type = NLA_FLAG },
835 [NL80211_ATTR_BSS_SELECT] = { .type = NLA_NESTED },
836 [NL80211_ATTR_STA_SUPPORT_P2P_PS] =
837 NLA_POLICY_MAX(NLA_U8, NUM_NL80211_P2P_PS_STATUS - 1),
838 [NL80211_ATTR_MU_MIMO_GROUP_DATA] = {
839 .len = VHT_MUMIMO_GROUPS_DATA_LEN
840 },
841 [NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
842 [NL80211_ATTR_NAN_MASTER_PREF] = NLA_POLICY_MIN(NLA_U8, 1),
843 [NL80211_ATTR_BANDS] = { .type = NLA_U32 },
844 [NL80211_ATTR_NAN_CONFIG] = NLA_POLICY_NESTED(nl80211_nan_conf_policy),
845 [NL80211_ATTR_NAN_FUNC] = { .type = NLA_NESTED },
846 [NL80211_ATTR_FILS_KEK] = { .type = NLA_BINARY,
847 .len = FILS_MAX_KEK_LEN },
848 [NL80211_ATTR_FILS_NONCES] = NLA_POLICY_EXACT_LEN_WARN(2 * FILS_NONCE_LEN),
849 [NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED] = { .type = NLA_FLAG, },
850 [NL80211_ATTR_BSSID] = NLA_POLICY_EXACT_LEN_WARN(ETH_ALEN),
851 [NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] = { .type = NLA_S8 },
852 [NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST] = {
853 .len = sizeof(struct nl80211_bss_select_rssi_adjust)
854 },
855 [NL80211_ATTR_TIMEOUT_REASON] = { .type = NLA_U32 },
856 [NL80211_ATTR_FILS_ERP_USERNAME] = { .type = NLA_BINARY,
857 .len = FILS_ERP_MAX_USERNAME_LEN },
858 [NL80211_ATTR_FILS_ERP_REALM] = { .type = NLA_BINARY,
859 .len = FILS_ERP_MAX_REALM_LEN },
860 [NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] = { .type = NLA_U16 },
861 [NL80211_ATTR_FILS_ERP_RRK] = { .type = NLA_BINARY,
862 .len = FILS_ERP_MAX_RRK_LEN },
863 [NL80211_ATTR_FILS_CACHE_ID] = NLA_POLICY_EXACT_LEN_WARN(2),
864 [NL80211_ATTR_PMK] = { .type = NLA_BINARY, .len = PMK_MAX_LEN },
865 [NL80211_ATTR_PMKR0_NAME] = NLA_POLICY_EXACT_LEN(WLAN_PMK_NAME_LEN),
866 [NL80211_ATTR_SCHED_SCAN_MULTI] = { .type = NLA_FLAG },
867 [NL80211_ATTR_EXTERNAL_AUTH_SUPPORT] = { .type = NLA_FLAG },
868
869 [NL80211_ATTR_TXQ_LIMIT] = { .type = NLA_U32 },
870 [NL80211_ATTR_TXQ_MEMORY_LIMIT] = { .type = NLA_U32 },
871 [NL80211_ATTR_TXQ_QUANTUM] = NLA_POLICY_FULL_RANGE(NLA_U32, &q_range),
872 [NL80211_ATTR_HE_CAPABILITY] =
873 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_he_capa,
874 NL80211_HE_MAX_CAPABILITY_LEN),
875 [NL80211_ATTR_FTM_RESPONDER] =
876 NLA_POLICY_NESTED(nl80211_ftm_responder_policy),
877 [NL80211_ATTR_TIMEOUT] = NLA_POLICY_MIN(NLA_U32, 1),
878 [NL80211_ATTR_PEER_MEASUREMENTS] =
879 NLA_POLICY_NESTED(nl80211_pmsr_attr_policy),
880 [NL80211_ATTR_AIRTIME_WEIGHT] = NLA_POLICY_MIN(NLA_U16, 1),
881 [NL80211_ATTR_SAE_PASSWORD] = { .type = NLA_BINARY,
882 .len = SAE_PASSWORD_MAX_LEN },
883 [NL80211_ATTR_TWT_RESPONDER] = { .type = NLA_FLAG },
884 [NL80211_ATTR_HE_OBSS_PD] = NLA_POLICY_NESTED(he_obss_pd_policy),
885 [NL80211_ATTR_VLAN_ID] = NLA_POLICY_RANGE(NLA_U16, 1, VLAN_N_VID - 2),
886 [NL80211_ATTR_HE_BSS_COLOR] = NLA_POLICY_NESTED(he_bss_color_policy),
887 [NL80211_ATTR_TID_CONFIG] =
888 NLA_POLICY_NESTED_ARRAY(nl80211_tid_config_attr_policy),
889 [NL80211_ATTR_CONTROL_PORT_NO_PREAUTH] = { .type = NLA_FLAG },
890 [NL80211_ATTR_PMK_LIFETIME] = NLA_POLICY_MIN(NLA_U32, 1),
891 [NL80211_ATTR_PMK_REAUTH_THRESHOLD] = NLA_POLICY_RANGE(NLA_U8, 1, 100),
892 [NL80211_ATTR_RECEIVE_MULTICAST] = { .type = NLA_FLAG },
893 [NL80211_ATTR_WIPHY_FREQ_OFFSET] = NLA_POLICY_RANGE(NLA_U32, 0, 999),
894 [NL80211_ATTR_SCAN_FREQ_KHZ] = { .type = NLA_NESTED },
895 [NL80211_ATTR_HE_6GHZ_CAPABILITY] =
896 NLA_POLICY_EXACT_LEN(sizeof(struct ieee80211_he_6ghz_capa)),
897 [NL80211_ATTR_FILS_DISCOVERY] =
898 NLA_POLICY_NESTED(nl80211_fils_discovery_policy),
899 [NL80211_ATTR_UNSOL_BCAST_PROBE_RESP] =
900 NLA_POLICY_NESTED(nl80211_unsol_bcast_probe_resp_policy),
901 [NL80211_ATTR_S1G_CAPABILITY] =
902 NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN),
903 [NL80211_ATTR_S1G_CAPABILITY_MASK] =
904 NLA_POLICY_EXACT_LEN(IEEE80211_S1G_CAPABILITY_LEN),
905 [NL80211_ATTR_SAE_PWE] =
906 NLA_POLICY_RANGE(NLA_U8, NL80211_SAE_PWE_HUNT_AND_PECK,
907 NL80211_SAE_PWE_BOTH),
908 [NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
909 [NL80211_ATTR_SAR_SPEC] = NLA_POLICY_NESTED(sar_policy),
910 [NL80211_ATTR_DISABLE_HE] = { .type = NLA_FLAG },
911 [NL80211_ATTR_OBSS_COLOR_BITMAP] = { .type = NLA_U64 },
912 [NL80211_ATTR_COLOR_CHANGE_COUNT] = { .type = NLA_U8 },
913 [NL80211_ATTR_COLOR_CHANGE_COLOR] = { .type = NLA_U8 },
914 [NL80211_ATTR_COLOR_CHANGE_ELEMS] = NLA_POLICY_NESTED(nl80211_policy),
915 [NL80211_ATTR_MBSSID_CONFIG] =
916 NLA_POLICY_NESTED(nl80211_mbssid_config_policy),
917 [NL80211_ATTR_MBSSID_ELEMS] = { .type = NLA_NESTED },
918 [NL80211_ATTR_RADAR_BACKGROUND] = { .type = NLA_FLAG },
919 [NL80211_ATTR_AP_SETTINGS_FLAGS] = { .type = NLA_U32 },
920 [NL80211_ATTR_EHT_CAPABILITY] =
921 NLA_POLICY_RANGE(NLA_BINARY,
922 NL80211_EHT_MIN_CAPABILITY_LEN,
923 NL80211_EHT_MAX_CAPABILITY_LEN),
924 [NL80211_ATTR_DISABLE_EHT] = { .type = NLA_FLAG },
925 [NL80211_ATTR_MLO_LINKS] =
926 NLA_POLICY_NESTED_ARRAY(nl80211_policy),
927 [NL80211_ATTR_MLO_LINK_ID] =
928 NLA_POLICY_RANGE(NLA_U8, 0, IEEE80211_MLD_MAX_NUM_LINKS - 1),
929 [NL80211_ATTR_MLD_ADDR] = NLA_POLICY_EXACT_LEN(ETH_ALEN),
930 [NL80211_ATTR_MLO_SUPPORT] = { .type = NLA_FLAG },
931 [NL80211_ATTR_MAX_NUM_AKM_SUITES] = { .type = NLA_REJECT },
932 [NL80211_ATTR_EML_CAPABILITY] = { .type = NLA_U16 },
933 [NL80211_ATTR_PUNCT_BITMAP] =
934 NLA_POLICY_FULL_RANGE(NLA_U32, &nl80211_punct_bitmap_range),
935
936 [NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS] = { .type = NLA_U16 },
937 [NL80211_ATTR_HW_TIMESTAMP_ENABLED] = { .type = NLA_FLAG },
938 [NL80211_ATTR_EMA_RNR_ELEMS] = { .type = NLA_NESTED },
939 [NL80211_ATTR_MLO_LINK_DISABLED] = { .type = NLA_FLAG },
940 [NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA] = { .type = NLA_FLAG },
941 [NL80211_ATTR_MLO_TTLM_DLINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
942 [NL80211_ATTR_MLO_TTLM_ULINK] = NLA_POLICY_EXACT_LEN(sizeof(u16) * 8),
943 [NL80211_ATTR_ASSOC_SPP_AMSDU] = { .type = NLA_FLAG },
944 [NL80211_ATTR_VIF_RADIO_MASK] = { .type = NLA_U32 },
945 [NL80211_ATTR_SUPPORTED_SELECTORS] =
946 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_supported_selectors,
947 NL80211_MAX_SUPP_SELECTORS),
948 [NL80211_ATTR_MLO_RECONF_REM_LINKS] = { .type = NLA_U16 },
949 [NL80211_ATTR_EPCS] = { .type = NLA_FLAG },
950 [NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS] = { .type = NLA_U16 },
951 [NL80211_ATTR_WIPHY_RADIO_INDEX] = { .type = NLA_U8 },
952 [NL80211_ATTR_S1G_LONG_BEACON_PERIOD] = NLA_POLICY_MIN(NLA_U8, 2),
953 [NL80211_ATTR_S1G_SHORT_BEACON] =
954 NLA_POLICY_NESTED(nl80211_s1g_short_beacon),
955 [NL80211_ATTR_BSS_PARAM] = { .type = NLA_FLAG },
956 [NL80211_ATTR_S1G_PRIMARY_2MHZ] = { .type = NLA_FLAG },
957 [NL80211_ATTR_EPP_PEER] = { .type = NLA_FLAG },
958 [NL80211_ATTR_UHR_CAPABILITY] =
959 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_uhr_capa, 255),
960 [NL80211_ATTR_DISABLE_UHR] = { .type = NLA_FLAG },
> 961 [[NL80211_ATTR_UHR_OPERATION] =
962 NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_uhr_operation),
963 };
964
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-03-03 20:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-03 14:25 [PATCH wireless-next] wifi: nl80211: split out UHR operation information Johannes Berg
2026-03-03 19:59 ` kernel test robot
2026-03-03 20:19 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox