* [PATCH net-next v2 1/7] tools/net/ynl: remove extraneous plural from variable names
2024-12-10 16:14 [PATCH net-next v2 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
@ 2024-12-10 16:14 ` Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 2/7] tools/net/ynl: support decoding indexed arrays as enums Donald Hunter
` (5 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Donald Hunter @ 2024-12-10 16:14 UTC (permalink / raw)
To: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, Johannes Berg, linux-wireless
Cc: donald.hunter, Donald Hunter
_decode_array_attr() uses variable subattrs in every branch when only
one branch decodes more than a single attribute.
Change the variable name to subattr in the branches that only decode a
single attribute so that the intent is more obvious.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
---
tools/net/ynl/lib/ynl.py | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
index 01ec01a90e76..dbc7a0a6ae68 100644
--- a/tools/net/ynl/lib/ynl.py
+++ b/tools/net/ynl/lib/ynl.py
@@ -644,15 +644,15 @@ class YnlFamily(SpecFamily):
subattrs = self._decode(NlAttrs(item.raw), attr_spec['nested-attributes'])
decoded.append({ item.type: subattrs })
elif attr_spec["sub-type"] == 'binary':
- subattrs = item.as_bin()
+ subattr = item.as_bin()
if attr_spec.display_hint:
- subattrs = self._formatted_string(subattrs, attr_spec.display_hint)
- decoded.append(subattrs)
+ subattr = self._formatted_string(subattr, attr_spec.display_hint)
+ decoded.append(subattr)
elif attr_spec["sub-type"] in NlAttr.type_formats:
- subattrs = item.as_scalar(attr_spec['sub-type'], attr_spec.byte_order)
+ subattr = item.as_scalar(attr_spec['sub-type'], attr_spec.byte_order)
if attr_spec.display_hint:
- subattrs = self._formatted_string(subattrs, attr_spec.display_hint)
- decoded.append(subattrs)
+ subattr = self._formatted_string(subattr, attr_spec.display_hint)
+ decoded.append(subattr)
else:
raise Exception(f'Unknown {attr_spec["sub-type"]} with name {attr_spec["name"]}')
return decoded
--
2.47.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH net-next v2 2/7] tools/net/ynl: support decoding indexed arrays as enums
2024-12-10 16:14 [PATCH net-next v2 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 1/7] tools/net/ynl: remove extraneous plural from variable names Donald Hunter
@ 2024-12-10 16:14 ` Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 3/7] tools/net/ynl: support rendering C array members to strings Donald Hunter
` (4 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Donald Hunter @ 2024-12-10 16:14 UTC (permalink / raw)
To: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, Johannes Berg, linux-wireless
Cc: donald.hunter, Donald Hunter
When decoding an indexed-array with a scalar subtype, it is currently
only possible to add a display-hint. Add support for decoding each value
as an enum.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
---
tools/net/ynl/lib/ynl.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
index dbc7a0a6ae68..0d39a83574d5 100644
--- a/tools/net/ynl/lib/ynl.py
+++ b/tools/net/ynl/lib/ynl.py
@@ -650,7 +650,9 @@ class YnlFamily(SpecFamily):
decoded.append(subattr)
elif attr_spec["sub-type"] in NlAttr.type_formats:
subattr = item.as_scalar(attr_spec['sub-type'], attr_spec.byte_order)
- if attr_spec.display_hint:
+ if 'enum' in attr_spec:
+ subattr = self._decode_enum(subattr, attr_spec)
+ elif attr_spec.display_hint:
subattr = self._formatted_string(subattr, attr_spec.display_hint)
decoded.append(subattr)
else:
--
2.47.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH net-next v2 3/7] tools/net/ynl: support rendering C array members to strings
2024-12-10 16:14 [PATCH net-next v2 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 1/7] tools/net/ynl: remove extraneous plural from variable names Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 2/7] tools/net/ynl: support decoding indexed arrays as enums Donald Hunter
@ 2024-12-10 16:14 ` Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 4/7] tools/net/ynl: accept IP string inputs Donald Hunter
` (3 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Donald Hunter @ 2024-12-10 16:14 UTC (permalink / raw)
To: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, Johannes Berg, linux-wireless
Cc: donald.hunter, Donald Hunter
The nl80211 family encodes the list of supported ciphers as a C array of
u32 values. Add support for translating arrays of scalars into strings
for enum names and display hints.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
---
tools/net/ynl/lib/ynl.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
index 0d39a83574d5..08ad2d8a874e 100644
--- a/tools/net/ynl/lib/ynl.py
+++ b/tools/net/ynl/lib/ynl.py
@@ -627,6 +627,10 @@ class YnlFamily(SpecFamily):
decoded = self._decode_struct(attr.raw, attr_spec.struct_name)
elif attr_spec.sub_type:
decoded = attr.as_c_array(attr_spec.sub_type)
+ if 'enum' in attr_spec:
+ decoded = [ self._decode_enum(x, attr_spec) for x in decoded ]
+ elif attr_spec.display_hint:
+ decoded = self._formatted_string(decoded, attr_spec.display_hint)
else:
decoded = attr.as_bin()
if attr_spec.display_hint:
--
2.47.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH net-next v2 4/7] tools/net/ynl: accept IP string inputs
2024-12-10 16:14 [PATCH net-next v2 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
` (2 preceding siblings ...)
2024-12-10 16:14 ` [PATCH net-next v2 3/7] tools/net/ynl: support rendering C array members to strings Donald Hunter
@ 2024-12-10 16:14 ` Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 5/7] netlink: specs: support nested structs in genetlink legacy Donald Hunter
` (2 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Donald Hunter @ 2024-12-10 16:14 UTC (permalink / raw)
To: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, Johannes Berg, linux-wireless
Cc: donald.hunter, Donald Hunter
The ynl tool uses display-hint to know when to format IP addresses in
printed output, but not to parse IP addresses from --json input. Add
support for parsing ipv4 and ipv6 strings.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
---
tools/net/ynl/lib/ynl.py | 25 +++++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
index 08ad2d8a874e..c9ed356d7ed2 100644
--- a/tools/net/ynl/lib/ynl.py
+++ b/tools/net/ynl/lib/ynl.py
@@ -536,9 +536,11 @@ class YnlFamily(SpecFamily):
try:
return int(value)
except (ValueError, TypeError) as e:
- if 'enum' not in attr_spec:
- raise e
- return self._encode_enum(attr_spec, value)
+ if 'enum' in attr_spec:
+ return self._encode_enum(attr_spec, value)
+ if attr_spec.display_hint:
+ return self._from_string(value, attr_spec)
+ raise e
def _add_attr(self, space, name, value, search_attrs):
try:
@@ -571,7 +573,10 @@ class YnlFamily(SpecFamily):
if isinstance(value, bytes):
attr_payload = value
elif isinstance(value, str):
- attr_payload = bytes.fromhex(value)
+ if attr.display_hint:
+ attr_payload = self._from_string(value, attr)
+ else:
+ attr_payload = bytes.fromhex(value)
elif isinstance(value, dict) and attr.struct_name:
attr_payload = self._encode_struct(attr.struct_name, value)
else:
@@ -901,6 +906,18 @@ class YnlFamily(SpecFamily):
formatted = raw
return formatted
+ def _from_string(self, string, attr_spec):
+ if attr_spec.display_hint in ['ipv4', 'ipv6']:
+ ip = ipaddress.ip_address(string)
+ if attr_spec['type'] == 'binary':
+ raw = ip.packed
+ else:
+ raw = int(ip)
+ else:
+ raise Exception(f"Display hint '{attr_spec.display_hint}' not implemented"
+ f" when parsing '{attr_spec['name']}'")
+ return raw
+
def handle_ntf(self, decoded):
msg = dict()
if self.include_raw:
--
2.47.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH net-next v2 5/7] netlink: specs: support nested structs in genetlink legacy
2024-12-10 16:14 [PATCH net-next v2 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
` (3 preceding siblings ...)
2024-12-10 16:14 ` [PATCH net-next v2 4/7] tools/net/ynl: accept IP string inputs Donald Hunter
@ 2024-12-10 16:14 ` Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 6/7] netlink: specs: add s8, s16 to genetlink schemas Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211 Donald Hunter
6 siblings, 0 replies; 13+ messages in thread
From: Donald Hunter @ 2024-12-10 16:14 UTC (permalink / raw)
To: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, Johannes Berg, linux-wireless
Cc: donald.hunter, Donald Hunter
Nested structs are already supported in netlink-raw. Add the same
capability to the genetlink legacy schema.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
---
Documentation/netlink/genetlink-legacy.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/netlink/genetlink-legacy.yaml b/Documentation/netlink/genetlink-legacy.yaml
index 16380e12cabe..7520f63ec3d2 100644
--- a/Documentation/netlink/genetlink-legacy.yaml
+++ b/Documentation/netlink/genetlink-legacy.yaml
@@ -151,6 +151,9 @@ properties:
the right formatting mechanism when displaying values of this
type.
enum: [ hex, mac, fddi, ipv4, ipv6, uuid ]
+ struct:
+ description: Name of the nested struct type.
+ type: string
# End genetlink-legacy
attribute-sets:
--
2.47.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH net-next v2 6/7] netlink: specs: add s8, s16 to genetlink schemas
2024-12-10 16:14 [PATCH net-next v2 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
` (4 preceding siblings ...)
2024-12-10 16:14 ` [PATCH net-next v2 5/7] netlink: specs: support nested structs in genetlink legacy Donald Hunter
@ 2024-12-10 16:14 ` Donald Hunter
2024-12-10 16:14 ` [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211 Donald Hunter
6 siblings, 0 replies; 13+ messages in thread
From: Donald Hunter @ 2024-12-10 16:14 UTC (permalink / raw)
To: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, Johannes Berg, linux-wireless
Cc: donald.hunter, Donald Hunter
Add s8 and s16 types to the genetlink schemas to align scalar types
across all schemas.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
---
Documentation/netlink/genetlink-c.yaml | 2 +-
Documentation/netlink/genetlink-legacy.yaml | 2 +-
Documentation/netlink/genetlink.yaml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Documentation/netlink/genetlink-c.yaml b/Documentation/netlink/genetlink-c.yaml
index 9660ffb1ed6a..1cfc8073a120 100644
--- a/Documentation/netlink/genetlink-c.yaml
+++ b/Documentation/netlink/genetlink-c.yaml
@@ -160,7 +160,7 @@ properties:
type: string
type: &attr-type
enum: [ unused, pad, flag, binary,
- uint, sint, u8, u16, u32, u64, s32, s64,
+ uint, sint, u8, u16, u32, u64, s8, s16, s32, s64,
string, nest, indexed-array, nest-type-value ]
doc:
description: Documentation of the attribute.
diff --git a/Documentation/netlink/genetlink-legacy.yaml b/Documentation/netlink/genetlink-legacy.yaml
index 7520f63ec3d2..f98ed12a09c0 100644
--- a/Documentation/netlink/genetlink-legacy.yaml
+++ b/Documentation/netlink/genetlink-legacy.yaml
@@ -206,7 +206,7 @@ properties:
type: &attr-type
description: The netlink attribute type
enum: [ unused, pad, flag, binary, bitfield32,
- uint, sint, u8, u16, u32, u64, s32, s64,
+ uint, sint, u8, u16, u32, u64, s8, s16, s32, s64,
string, nest, indexed-array, nest-type-value ]
doc:
description: Documentation of the attribute.
diff --git a/Documentation/netlink/genetlink.yaml b/Documentation/netlink/genetlink.yaml
index b036227b46f1..11c1592d49be 100644
--- a/Documentation/netlink/genetlink.yaml
+++ b/Documentation/netlink/genetlink.yaml
@@ -123,7 +123,7 @@ properties:
type: string
type: &attr-type
enum: [ unused, pad, flag, binary,
- uint, sint, u8, u16, u32, u64, s32, s64,
+ uint, sint, u8, u16, u32, u64, s8, s16, s32, s64,
string, nest, indexed-array, nest-type-value ]
doc:
description: Documentation of the attribute.
--
2.47.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-10 16:14 [PATCH net-next v2 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
` (5 preceding siblings ...)
2024-12-10 16:14 ` [PATCH net-next v2 6/7] netlink: specs: add s8, s16 to genetlink schemas Donald Hunter
@ 2024-12-10 16:14 ` Donald Hunter
2024-12-11 21:07 ` Simon Horman
2024-12-12 8:36 ` Johannes Berg
6 siblings, 2 replies; 13+ messages in thread
From: Donald Hunter @ 2024-12-10 16:14 UTC (permalink / raw)
To: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, Johannes Berg, linux-wireless
Cc: donald.hunter, Donald Hunter
Add a rudimentary YNL spec for nl80211 that covers get-wiphy,
get-interface and get-protocol-features.
./tools/net/ynl/cli.py \
--spec Documentation/netlink/specs/nl80211.yaml \
--do get-protocol-features
{'protocol-features': {'split-wiphy-dump'}}
./tools/net/ynl/cli.py \
--spec Documentation/netlink/specs/nl80211.yaml \
--dump get-wiphy --json '{ "split-wiphy-dump": true }'
./tools/net/ynl/cli.py \
--spec Documentation/netlink/specs/nl80211.yaml \
--dump get-interface
Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
---
Documentation/netlink/specs/nl80211.yaml | 1938 ++++++++++++++++++++++
1 file changed, 1938 insertions(+)
create mode 100644 Documentation/netlink/specs/nl80211.yaml
diff --git a/Documentation/netlink/specs/nl80211.yaml b/Documentation/netlink/specs/nl80211.yaml
new file mode 100644
index 000000000000..5c2650d88790
--- /dev/null
+++ b/Documentation/netlink/specs/nl80211.yaml
@@ -0,0 +1,1938 @@
+# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
+
+name: nl80211
+protocol: genetlink-legacy
+
+doc:
+ Netlink API for 802.11 wireless devices
+
+definitions:
+ -
+ name: nl80211-commands
+ type: enum
+ entries:
+ - unspec
+ - get-wiphy
+ - set-wiphy
+ - new-wiphy
+ - del-wiphy
+ - get-interface
+ - set-interface
+ - new-interface
+ - del-interface
+ - get-key
+ - set-key
+ - new-key
+ - del-key
+ - get-beacon
+ - set-beacon
+ - new-beacon
+ - del-beacon
+ - get-station
+ - set-station
+ - new-station
+ - del-station
+ - get-mpath
+ - set-mpath
+ - new-mpath
+ - del-mpath
+ - set-bss
+ - set-reg
+ - req-set-reg
+ - get-mesh-config
+ - set-mesh-config
+ - set-mgmt-extra-ie
+ - get-reg
+ - get-scan
+ - trigger-scan
+ - new-scan-results
+ - scan-aborted
+ - reg-change
+ - authenticate
+ - associate
+ - deauthenticate
+ - disassociate
+ - michael-mic-failure
+ - reg-beacon-hint
+ - join-ibss
+ - leave-ibss
+ - testmode
+ - connect
+ - roam
+ - disconnect
+ - set-wiphy-netns
+ - get-survey
+ - new-survey-results
+ - set-pmksa
+ - del-pmksa
+ - flush-pmksa
+ - remain-on-channel
+ - cancel-remain-on-channel
+ - set-tx-bitrate-mask
+ - register-action
+ - action
+ - action-tx-status
+ - set-power-save
+ - get-power-save
+ - set-cqm
+ - notify-cqm
+ - set-channel
+ - set-wds-peer
+ - frame-wait-cancel
+ - join-mesh
+ - leave-mesh
+ - unprot-deauthenticate
+ - unprot-disassociate
+ - new-peer-candidate
+ - get-wowlan
+ - set-wowlan
+ - start-sched-scan
+ - stop-sched-scan
+ - sched-scan-results
+ - sched-scan-stopped
+ - set-rekey-offload
+ - pmksa-candidate
+ - tdls-oper
+ - tdls-mgmt
+ - unexpected-frame
+ - probe-client
+ - register-beacons
+ - unexpected-4-addr-frame
+ - set-noack-map
+ - ch-switch-notify
+ - start-p2p-device
+ - stop-p2p-device
+ - conn-failed
+ - set-mcast-rate
+ - set-mac-acl
+ - radar-detect
+ - get-protocol-features
+ - update-ft-ies
+ - ft-event
+ - crit-protocol-start
+ - crit-protocol-stop
+ - get-coalesce
+ - set-coalesce
+ - channel-switch
+ - vendor
+ - set-qos-map
+ - add-tx-ts
+ - del-tx-ts
+ - get-mpp
+ - join-ocb
+ - leave-ocb
+ - ch-switch-started-notify
+ - tdls-channel-switch
+ - tdls-cancel-channel-switch
+ - wiphy-reg-change
+ - abort-scan
+ - start-nan
+ - stop-nan
+ - add-nan-function
+ - del-nan-function
+ - change-nan-config
+ - nan-match
+ - set-multicast-to-unicast
+ - update-connect-params
+ - set-pmk
+ - del-pmk
+ - port-authorized
+ - reload-regdb
+ - external-auth
+ - sta-opmode-changed
+ - control-port-frame
+ - get-ftm-responder-stats
+ - peer-measurement-start
+ - peer-measurement-result
+ - peer-measurement-complete
+ - notify-radar
+ - update-owe-info
+ - probe-mesh-link
+ - set-tid-config
+ - unprot-beacon
+ - control-port-frame-tx-status
+ - set-sar-specs
+ - obss-color-collision
+ - color-change-request
+ - color-change-started
+ - color-change-aborted
+ - color-change-completed
+ - set-fils-aad
+ - assoc-comeback
+ - add-link
+ - remove-link
+ - add-link-sta
+ - modify-link-sta
+ - remove-link-sta
+ - set-hw-timestamp
+ - links-removed
+ - set-tid-to-link-mapping
+ -
+ name: feature-flags
+ type: flags
+ entries:
+ - sk-tx-status
+ - ht-ibss
+ - inactivity-timer
+ - cell-base-reg-hints
+ - p2p-device-needs-channel
+ - sae
+ - low-priority-scan
+ - scan-flush
+ - ap-scan
+ - vif-txpower
+ - need-obss-scan
+ - p2p-go-ctwin
+ - p2p-go-oppps
+ - reserved
+ - advertise-chan-limits
+ - full-ap-client-state
+ - userspace-mpm
+ - active-monitor
+ - ap-mode-chan-width-change
+ - ds-param-set-ie-in-probes
+ - wfa-tpc-ie-in-proves
+ - quiet
+ - tx-power-insertion
+ - ackto-estimation
+ - static-smps
+ - dynamic-smps
+ - supports-wmm-admission
+ - mac-on-create
+ - tdls-channel-switch
+ - scan-random-mac-addr
+ - sched-scan-random-mac-addr
+ - no-random-mac-addr
+ -
+ name: ieee80211-mcs-info
+ type: struct
+ members:
+ -
+ name: rx-mask
+ type: binary
+ len: 10
+ -
+ name: rx-highest
+ type: u16
+ byte-order: little-endian
+ -
+ name: tx-params
+ type: u8
+ -
+ name: reserved
+ type: binary
+ len: 3
+ -
+ name: ieee80211-vht-mcs-info
+ type: struct
+ members:
+ -
+ name: rx-mcs-map
+ type: u16
+ byte-order: little-endian
+ -
+ name: rx-highest
+ type: u16
+ byte-order: little-endian
+ -
+ name: tx-mcs-map
+ type: u16
+ byte-order: little-endian
+ -
+ name: tx-highest
+ type: u16
+ byte-order: little-endian
+ -
+ name: ieee80211-ht-cap
+ type: struct
+ members:
+ -
+ name: cap-info
+ type: u16
+ byte-order: little-endian
+ -
+ name: ampdu-params-info
+ type: u8
+ -
+ name: mcs
+ type: binary
+ struct: ieee80211-mcs-info
+ -
+ name: extended-ht-cap-info
+ type: u16
+ byte-order: little-endian
+ -
+ name: tx-bf-cap-info
+ type: u32
+ byte-order: little-endian
+ -
+ name: antenna-selection-info
+ type: u8
+ -
+ name: nl80211-channel-type
+ type: enum
+ entries:
+ - no-ht
+ - ht20
+ - ht40minus
+ - ht40plus
+ -
+ name: nl80211-sta-flag-update
+ type: struct
+ members:
+ -
+ name: mask
+ type: u32
+ -
+ name: set
+ type: u32
+ -
+ name: wlan-cipher-suites
+ type: enum
+ entries:
+ -
+ name: use-group
+ value: 0xfac00
+ -
+ name: wep40
+ value: 0xfac01
+ -
+ name: tkip
+ value: 0xfac02
+ -
+ name: reserved
+ value: 0xfac03
+ -
+ name: ccmp
+ value: 0xfac04
+ -
+ name: wep104
+ value: 0xfac05
+ -
+ name: aes-cmac
+ value: 0xfac06
+ -
+ name: gcmp
+ value: 0xfac08
+ -
+ name: gcmp-256
+ value: 0xfac09
+ -
+ name: ccmp-256
+ value: 0xfac0a
+ -
+ name: bip-gmac-128
+ value: 0xfac0b
+ -
+ name: bip-gmac-256
+ value: 0xfac0c
+ -
+ name: bip-cmac-256
+ value: 0xfac0d
+ -
+ name: sms4
+ value: 0x147201
+ -
+ name: protocol-features
+ type: flags
+ entries:
+ - split-wiphy-dump
+
+attribute-sets:
+ -
+ name: nl80211-attrs
+ attributes:
+ -
+ name: wiphy
+ type: u32
+ -
+ name: wiphy-name
+ type: string
+ -
+ name: ifindex
+ type: u32
+ -
+ name: ifname
+ type: string
+ -
+ name: iftype
+ type: u32
+ -
+ name: mac
+ type: binary
+ display-hint: mac
+ -
+ name: key-data
+ type: binary
+ -
+ name: key-idx
+ type: u8
+ -
+ name: key-cipher
+ type: u32
+ -
+ name: key-seq
+ type: binary
+ -
+ name: key-default
+ type: flag
+ -
+ name: beacon-interval
+ type: u32
+ -
+ name: dtim-period
+ type: u32
+ -
+ name: beacon-head
+ type: binary
+ -
+ name: beacon-tail
+ type: binary
+ -
+ name: sta-aid
+ type: u16
+ -
+ name: sta-flags
+ type: binary # TODO: nest
+ -
+ name: sta-listen-interval
+ type: u16
+ -
+ name: sta-supported-rates
+ type: binary
+ -
+ name: sta-vlan
+ type: u32
+ -
+ name: sta-info
+ type: binary # TODO: nest
+ -
+ name: wiphy-bands
+ type: nest
+ nested-attributes: wiphy-bands
+ -
+ name: mntr-flags
+ type: binary # TODO: nest
+ -
+ name: mesh-id
+ type: binary
+ -
+ name: sta-plink-action
+ type: u8
+ -
+ name: mpath-next-hop
+ type: binary
+ display-hint: mac
+ -
+ name: mpath-info
+ type: binary # TODO: nest
+ -
+ name: bss-cts-prot
+ type: u8
+ -
+ name: bss-short-preamble
+ type: u8
+ -
+ name: bss-short-slot-time
+ type: u8
+ -
+ name: ht-capability
+ type: binary
+ -
+ name: supported-iftypes
+ type: nest
+ nested-attributes: supported-iftypes
+ -
+ name: reg-alpha2
+ type: binary
+ -
+ name: reg-rules
+ type: binary # TODO: nest
+ -
+ name: mesh-config
+ type: binary # TODO: nest
+ -
+ name: bss-basic-rates
+ type: binary
+ -
+ name: wiphy-txq-params
+ type: binary # TODO: nest
+ -
+ name: wiphy-freq
+ type: u32
+ -
+ name: wiphy-channel-type
+ type: u32
+ enum: nl80211-channel-type
+ -
+ name: key-default-mgmt
+ type: flag
+ -
+ name: mgmt-subtype
+ type: u8
+ -
+ name: ie
+ type: binary
+ -
+ name: max-num-scan-ssids
+ type: u8
+ -
+ name: scan-frequencies
+ type: binary # TODO: nest
+ -
+ name: scan-ssids
+ type: binary # TODO: nest
+ -
+ name: generation
+ type: u32
+ -
+ name: bss
+ type: binary # TODO: nest
+ -
+ name: reg-initiator
+ type: u8
+ -
+ name: reg-type
+ type: u8
+ -
+ name: supported-commands
+ type: indexed-array
+ sub-type: u32
+ enum: nl80211-commands
+ -
+ name: frame
+ type: binary
+ -
+ name: ssid
+ type: binary
+ -
+ name: auth-type
+ type: u32
+ -
+ name: reason-code
+ type: u16
+ -
+ name: key-type
+ type: u32
+ -
+ name: max-scan-ie-len
+ type: u16
+ -
+ name: cipher-suites
+ type: binary
+ sub-type: u32
+ enum: wlan-cipher-suites
+ -
+ name: freq-before
+ type: binary # TODO: nest
+ -
+ name: freq-after
+ type: binary # TODO: nest
+ -
+ name: freq-fixed
+ type: flag
+ -
+ name: wiphy-retry-short
+ type: u8
+ -
+ name: wiphy-retry-long
+ type: u8
+ -
+ name: wiphy-frag-threshold
+ type: u32
+ -
+ name: wiphy-rts-threshold
+ type: u32
+ -
+ name: timed-out
+ type: flag
+ -
+ name: use-mfp
+ type: u32
+ -
+ name: sta-flags2
+ type: binary
+ struct: nl80211-sta-flag-update
+ -
+ name: control-port
+ type: flag
+ -
+ name: testdata
+ type: binary
+ -
+ name: privacy
+ type: flag
+ -
+ name: disconnected-by-ap
+ type: flag
+ -
+ name: status-code
+ type: u16
+ -
+ name: cipher-suites-pairwise
+ type: binary
+ -
+ name: cipher-suite-group
+ type: u32
+ -
+ name: wpa-versions
+ type: u32
+ -
+ name: akm-suites
+ type: binary
+ -
+ name: req-ie
+ type: binary
+ -
+ name: resp-ie
+ type: binary
+ -
+ name: prev-bssid
+ type: binary
+ -
+ name: key
+ type: binary # TODO: nest
+ -
+ name: keys
+ type: binary # TODO: nest
+ -
+ name: pid
+ type: u32
+ -
+ name: 4addr
+ type: u8
+ -
+ name: survey-info
+ type: binary # TODO: nest
+ -
+ name: pmkid
+ type: binary
+ -
+ name: max-num-pmkids
+ type: u8
+ -
+ name: duration
+ type: u32
+ -
+ name: cookie
+ type: u64
+ -
+ name: wiphy-coverage-class
+ type: u8
+ -
+ name: tx-rates
+ type: binary # TODO: nest
+ -
+ name: frame-match
+ type: binary
+ -
+ name: ack
+ type: flag
+ -
+ name: ps-state
+ type: u32
+ -
+ name: cqm
+ type: binary # TODO: nest
+ -
+ name: local-state-change
+ type: flag
+ -
+ name: ap-isolate
+ type: u8
+ -
+ name: wiphy-tx-power-setting
+ type: u32
+ -
+ name: wiphy-tx-power-level
+ type: u32
+ -
+ name: tx-frame-types
+ type: nest
+ nested-attributes: nl80211-iftype-attrs
+ -
+ name: rx-frame-types
+ type: nest
+ nested-attributes: nl80211-iftype-attrs
+ -
+ name: frame-type
+ type: u16
+ -
+ name: control-port-ethertype
+ type: flag
+ -
+ name: control-port-no-encrypt
+ type: flag
+ -
+ name: support-ibss-rsn
+ type: flag
+ -
+ name: wiphy-antenna-tx
+ type: u32
+ -
+ name: wiphy-antenna-rx
+ type: u32
+ -
+ name: mcast-rate
+ type: u32
+ -
+ name: offchannel-tx-ok
+ type: flag
+ -
+ name: bss-ht-opmode
+ type: u16
+ -
+ name: key-default-types
+ type: binary # TODO: nest
+ -
+ name: max-remain-on-channel-duration
+ type: u32
+ -
+ name: mesh-setup
+ type: binary # TODO: nest
+ -
+ name: wiphy-antenna-avail-tx
+ type: u32
+ -
+ name: wiphy-antenna-avail-rx
+ type: u32
+ -
+ name: support-mesh-auth
+ type: flag
+ -
+ name: sta-plink-state
+ type: u8
+ -
+ name: wowlan-triggers
+ type: binary # TODO: nest
+ -
+ name: wowlan-triggers-supported
+ type: nest
+ nested-attributes: wowlan-triggers-attrs
+ -
+ name: sched-scan-interval
+ type: u32
+ -
+ name: interface-combinations
+ type: indexed-array
+ sub-type: nest
+ nested-attributes: if-combination-attrs
+ -
+ name: software-iftypes
+ type: nest
+ nested-attributes: supported-iftypes
+ -
+ name: rekey-data
+ type: binary # TODO: nest
+ -
+ name: max-num-sched-scan-ssids
+ type: u8
+ -
+ name: max-sched-scan-ie-len
+ type: u16
+ -
+ name: scan-supp-rates
+ type: binary # TODO: nest
+ -
+ name: hidden-ssid
+ type: u32
+ -
+ name: ie-probe-resp
+ type: binary
+ -
+ name: ie-assoc-resp
+ type: binary
+ -
+ name: sta-wme
+ type: binary # TODO: nest
+ -
+ name: support-ap-uapsd
+ type: flag
+ -
+ name: roam-support
+ type: flag
+ -
+ name: sched-scan-match
+ type: binary # TODO: nest
+ -
+ name: max-match-sets
+ type: u8
+ -
+ name: pmksa-candidate
+ type: binary # TODO: nest
+ -
+ name: tx-no-cck-rate
+ type: flag
+ -
+ name: tdls-action
+ type: u8
+ -
+ name: tdls-dialog-token
+ type: u8
+ -
+ name: tdls-operation
+ type: u8
+ -
+ name: tdls-support
+ type: flag
+ -
+ name: tdls-external-setup
+ type: flag
+ -
+ name: device-ap-sme
+ type: u32
+ -
+ name: dont-wait-for-ack
+ type: flag
+ -
+ name: feature-flags
+ type: u32
+ enum: feature-flags
+ enum-as-flags: True
+ -
+ name: probe-resp-offload
+ type: u32
+ -
+ name: probe-resp
+ type: binary
+ -
+ name: dfs-region
+ type: u8
+ -
+ name: disable-ht
+ type: flag
+ -
+ name: ht-capability-mask
+ type: binary
+ struct: ieee80211-ht-cap
+ -
+ name: noack-map
+ type: u16
+ -
+ name: inactivity-timeout
+ type: u16
+ -
+ name: rx-signal-dbm
+ type: u32
+ -
+ name: bg-scan-period
+ type: u16
+ -
+ name: wdev
+ type: u64
+ -
+ name: user-reg-hint-type
+ type: u32
+ -
+ name: conn-failed-reason
+ type: u32
+ -
+ name: auth-data
+ type: binary
+ -
+ name: vht-capability
+ type: binary
+ -
+ name: scan-flags
+ type: u32
+ -
+ name: channel-width
+ type: u32
+ -
+ name: center-freq1
+ type: u32
+ -
+ name: center-freq2
+ type: u32
+ -
+ name: p2p-ctwindow
+ type: u8
+ -
+ name: p2p-oppps
+ type: u8
+ -
+ name: local-mesh-power-mode
+ type: u32
+ -
+ name: acl-policy
+ type: u32
+ -
+ name: mac-addrs
+ type: binary # TODO: nest
+ -
+ name: mac-acl-max
+ type: u32
+ -
+ name: radar-event
+ type: u32
+ -
+ name: ext-capa
+ type: binary
+ -
+ name: ext-capa-mask
+ type: binary
+ -
+ name: sta-capability
+ type: u16
+ -
+ name: sta-ext-capability
+ type: binary
+ -
+ name: protocol-features
+ type: u32
+ enum: protocol-features
+ -
+ name: split-wiphy-dump
+ type: flag
+ -
+ name: disable-vht
+ type: flag
+ -
+ name: vht-capability-mask
+ type: binary
+ -
+ name: mdid
+ type: u16
+ -
+ name: ie-ric
+ type: binary
+ -
+ name: crit-prot-id
+ type: u16
+ -
+ name: max-crit-prot-duration
+ type: u16
+ -
+ name: peer-aid
+ type: u16
+ -
+ name: coalesce-rule
+ type: binary # TODO: nest
+ -
+ name: ch-switch-count
+ type: u32
+ -
+ name: ch-switch-block-tx
+ type: flag
+ -
+ name: csa-ies
+ type: binary # TODO: nest
+ -
+ name: cntdwn-offs-beacon
+ type: binary
+ -
+ name: cntdwn-offs-presp
+ type: binary
+ -
+ name: rxmgmt-flags
+ type: binary
+ -
+ name: sta-supported-channels
+ type: binary
+ -
+ name: sta-supported-oper-classes
+ type: binary
+ -
+ name: handle-dfs
+ type: flag
+ -
+ name: support-5-mhz
+ type: flag
+ -
+ name: support-10-mhz
+ type: flag
+ -
+ name: opmode-notif
+ type: u8
+ -
+ name: vendor-id
+ type: u32
+ -
+ name: vendor-subcmd
+ type: u32
+ -
+ name: vendor-data
+ type: binary
+ -
+ name: vendor-events
+ type: binary
+ -
+ name: qos-map
+ type: binary
+ -
+ name: mac-hint
+ type: binary
+ display-hint: mac
+ -
+ name: wiphy-freq-hint
+ type: u32
+ -
+ name: max-ap-assoc-sta
+ type: u32
+ -
+ name: tdls-peer-capability
+ type: u32
+ -
+ name: socket-owner
+ type: flag
+ -
+ name: csa-c-offsets-tx
+ type: binary
+ -
+ name: max-csa-counters
+ type: u8
+ -
+ name: tdls-initiator
+ type: flag
+ -
+ name: use-rrm
+ type: flag
+ -
+ name: wiphy-dyn-ack
+ type: flag
+ -
+ name: tsid
+ type: u8
+ -
+ name: user-prio
+ type: u8
+ -
+ name: admitted-time
+ type: u16
+ -
+ name: smps-mode
+ type: u8
+ -
+ name: oper-class
+ type: u8
+ -
+ name: mac-mask
+ type: binary
+ display-hint: mac
+ -
+ name: wiphy-self-managed-reg
+ type: flag
+ -
+ name: ext-features
+ type: binary
+ -
+ name: survey-radio-stats
+ type: binary
+ -
+ name: netns-fd
+ type: u32
+ -
+ name: sched-scan-delay
+ type: u32
+ -
+ name: reg-indoor
+ type: flag
+ -
+ name: max-num-sched-scan-plans
+ type: u32
+ -
+ name: max-scan-plan-interval
+ type: u32
+ -
+ name: max-scan-plan-iterations
+ type: u32
+ -
+ name: sched-scan-plans
+ type: binary # TODO: nest
+ -
+ name: pbss
+ type: flag
+ -
+ name: bss-select
+ type: binary # TODO: nest
+ -
+ name: sta-support-p2p-ps
+ type: u8
+ -
+ name: pad
+ type: binary
+ -
+ name: iftype-ext-capa
+ type: binary # TODO: nest
+ -
+ name: mu-mimo-group-data
+ type: binary
+ -
+ name: mu-mimo-follow-mac-addr
+ type: binary
+ display-hint: mac
+ -
+ name: scan-start-time-tsf
+ type: u64
+ -
+ name: scan-start-time-tsf-bssid
+ type: binary
+ -
+ name: measurement-duration
+ type: u16
+ -
+ name: measurement-duration-mandatory
+ type: flag
+ -
+ name: mesh-peer-aid
+ type: u16
+ -
+ name: nan-master-pref
+ type: u8
+ -
+ name: bands
+ type: u32
+ -
+ name: nan-func
+ type: binary # TODO: nest
+ -
+ name: nan-match
+ type: binary # TODO: nest
+ -
+ name: fils-kek
+ type: binary
+ -
+ name: fils-nonces
+ type: binary
+ -
+ name: multicast-to-unicast-enabled
+ type: flag
+ -
+ name: bssid
+ type: binary
+ display-hint: mac
+ -
+ name: sched-scan-relative-rssi
+ type: s8
+ -
+ name: sched-scan-rssi-adjust
+ type: binary
+ -
+ name: timeout-reason
+ type: u32
+ -
+ name: fils-erp-username
+ type: binary
+ -
+ name: fils-erp-realm
+ type: binary
+ -
+ name: fils-erp-next-seq-num
+ type: u16
+ -
+ name: fils-erp-rrk
+ type: binary
+ -
+ name: fils-cache-id
+ type: binary
+ -
+ name: pmk
+ type: binary
+ -
+ name: sched-scan-multi
+ type: flag
+ -
+ name: sched-scan-max-reqs
+ type: u32
+ -
+ name: want-1x-4-way-hs
+ type: flag
+ -
+ name: pmkr0-name
+ type: binary
+ -
+ name: port-authorized
+ type: binary
+ -
+ name: external-auth-action
+ type: u32
+ -
+ name: external-auth-support
+ type: flag
+ -
+ name: nss
+ type: u8
+ -
+ name: ack-signal
+ type: s32
+ -
+ name: control-port-over-nl80211
+ type: flag
+ -
+ name: txq-stats
+ type: nest
+ nested-attributes: txq-stats
+ -
+ name: txq-limit
+ type: u32
+ -
+ name: txq-memory-limit
+ type: u32
+ -
+ name: txq-quantum
+ type: u32
+ -
+ name: he-capability
+ type: binary
+ -
+ name: ftm-responder
+ type: binary # TODO: nest
+ -
+ name: ftm-responder-stats
+ type: binary # TODO: nest
+ -
+ name: timeout
+ type: u32
+ -
+ name: peer-measurements
+ type: binary # TODO: nest
+ -
+ name: airtime-weight
+ type: u16
+ -
+ name: sta-tx-power-setting
+ type: u8
+ -
+ name: sta-tx-power
+ type: s16
+ -
+ name: sae-password
+ type: binary
+ -
+ name: twt-responder
+ type: flag
+ -
+ name: he-obss-pd
+ type: binary # TODO: nest
+ -
+ name: wiphy-edmg-channels
+ type: u8
+ -
+ name: wiphy-edmg-bw-config
+ type: u8
+ -
+ name: vlan-id
+ type: u16
+ -
+ name: he-bss-color
+ type: binary # TODO: nest
+ -
+ name: iftype-akm-suites
+ type: binary # TODO: nest
+ -
+ name: tid-config
+ type: binary # TODO: nest
+ -
+ name: control-port-no-preauth
+ type: flag
+ -
+ name: pmk-lifetime
+ type: u32
+ -
+ name: pmk-reauth-threshold
+ type: u8
+ -
+ name: receive-multicast
+ type: flag
+ -
+ name: wiphy-freq-offset
+ type: u32
+ -
+ name: center-freq1-offset
+ type: u32
+ -
+ name: scan-freq-khz
+ type: binary # TODO: nest
+ -
+ name: he-6ghz-capability
+ type: binary
+ -
+ name: fils-discovery
+ type: binary # TOOD: nest
+ -
+ name: unsol-bcast-probe-resp
+ type: binary # TOOD: nest
+ -
+ name: s1g-capability
+ type: binary
+ -
+ name: s1g-capability-mask
+ type: binary
+ -
+ name: sae-pwe
+ type: u8
+ -
+ name: reconnect-requested
+ type: binary
+ -
+ name: sar-spec
+ type: nest
+ nested-attributes: sar-spec-attrs
+ -
+ name: disable-he
+ type: flag
+ -
+ name: obss-color-bitmap
+ type: u64
+ -
+ name: color-change-count
+ type: u8
+ -
+ name: color-change-color
+ type: u8
+ -
+ name: color-change-elems
+ type: binary # TODO: nest
+ -
+ name: mbssid-config
+ type: binary # TODO: nest
+ -
+ name: mbssid-elems
+ type: binary # TODO: nest
+ -
+ name: radar-background
+ type: flag
+ -
+ name: ap-settings-flags
+ type: u32
+ -
+ name: eht-capability
+ type: binary
+ -
+ name: disable-eht
+ type: flag
+ -
+ name: mlo-links
+ type: binary # TODO: nest
+ -
+ name: mlo-link-id
+ type: u8
+ -
+ name: mld-addr
+ type: binary
+ display-hint: mac
+ -
+ name: mlo-support
+ type: flag
+ -
+ name: max-num-akm-suites
+ type: binary
+ -
+ name: eml-capability
+ type: u16
+ -
+ name: mld-capa-and-ops
+ type: u16
+ -
+ name: tx-hw-timestamp
+ type: u64
+ -
+ name: rx-hw-timestamp
+ type: u64
+ -
+ name: td-bitmap
+ type: binary
+ -
+ name: punct-bitmap
+ type: u32
+ -
+ name: max-hw-timestamp-peers
+ type: u16
+ -
+ name: hw-timestamp-enabled
+ type: flag
+ -
+ name: ema-rnr-elems
+ type: binary # TODO: nest
+ -
+ name: mlo-link-disabled
+ type: flag
+ -
+ name: bss-dump-include-use-data
+ type: flag
+ -
+ name: mlo-ttlm-dlink
+ type: u16
+ -
+ name: mlo-ttlm-ulink
+ type: u16
+ -
+ name: assoc-spp-amsdu
+ type: flag
+ -
+ name: wiphy-radios
+ type: binary # TODO: nest
+ -
+ name: wiphy-interface-combinations
+ type: binary # TODO: nest
+ -
+ name: vif-radio-mask
+ type: u32
+ -
+ name: wiphy-bands
+ attributes:
+ -
+ name: 2ghz
+ doc: 2.4 GHz ISM band
+ value: 0
+ type: nest
+ nested-attributes: band-attrs
+ -
+ name: 5ghz
+ doc: around 5 GHz band (4.9 - 5.7 GHz)
+ type: nest
+ nested-attributes: band-attrs
+ -
+ name: 60ghz
+ doc: around 60 GHz band (58.32 - 69.12 GHz)
+ type: binary
+ -
+ name: 6ghz
+ type: nest
+ nested-attributes: band-attrs
+ -
+ name: s1ghz
+ type: binary
+ -
+ name: lc
+ type: binary
+ -
+ name: band-attrs
+ attributes:
+ -
+ name: freqs
+ type: indexed-array
+ sub-type: nest
+ nested-attributes: frequency-attrs
+ -
+ name: rates
+ type: indexed-array
+ sub-type: nest
+ nested-attributes: bitrate-attrs
+ -
+ name: ht-mcs-set
+ type: binary
+ struct: ieee80211-mcs-info
+ -
+ name: ht-capa
+ type: u16
+ -
+ name: ht-ampdu-factor
+ type: u8
+ -
+ name: ht-ampdu-density
+ type: u8
+ -
+ name: vht-mcs-set
+ type: binary
+ struct: ieee80211-vht-mcs-info
+ -
+ name: vht-capa
+ type: u32
+ -
+ name: iftype-data
+ type: indexed-array
+ sub-type: nest
+ nested-attributes: iftype-data-attrs
+ -
+ name: edmg-channels
+ type: binary
+ -
+ name: edmg-bw-config
+ type: binary
+ -
+ name: s1g-mcs-nss-set
+ type: binary
+ -
+ name: s1g-capa
+ type: binary
+ -
+ name: bitrate-attrs
+ attributes:
+ -
+ name: rate
+ type: u32
+ -
+ name: 2ghz-shortpreamble
+ type: flag
+ -
+ name: frequency-attrs
+ attributes:
+ -
+ name: freq
+ type: u32
+ -
+ name: disabled
+ type: flag
+ -
+ name: no-ir
+ type: flag
+ -
+ name: no-ibss
+ type: flag
+ -
+ name: radar
+ type: flag
+ -
+ name: max-tx-power
+ type: u32
+ -
+ name: dfs-state
+ type: u32
+ -
+ name: dfs-time
+ type: binary
+ -
+ name: no-ht40-minus
+ type: binary
+ -
+ name: no-ht40-plus
+ type: binary
+ -
+ name: no-80mhz
+ type: binary
+ -
+ name: no-160mhz
+ type: binary
+ -
+ name: dfs-cac-time
+ type: binary
+ -
+ name: indoor-only
+ type: binary
+ -
+ name: ir-concurrent
+ type: binary
+ -
+ name: no-20mhz
+ type: binary
+ -
+ name: no-10mhz
+ type: binary
+ -
+ name: wmm
+ type: indexed-array
+ sub-type: nest
+ nested-attributes: wmm-attrs
+ -
+ name: no-he
+ type: binary
+ -
+ name: offset
+ type: u32
+ -
+ name: 1mhz
+ type: binary
+ -
+ name: 2mhz
+ type: binary
+ -
+ name: 4mhz
+ type: binary
+ -
+ name: 8mhz
+ type: binary
+ -
+ name: 16mhz
+ type: binary
+ -
+ name: no-320mhz
+ type: binary
+ -
+ name: no-eht
+ type: binary
+ -
+ name: psd
+ type: binary
+ -
+ name: dfs-concurrent
+ type: binary
+ -
+ name: no-6ghz-vlp-client
+ type: binary
+ -
+ name: no-6ghz-afc-client
+ type: binary
+ -
+ name: can-monitor
+ type: binary
+ -
+ name: allow-6ghz-vlp-ap
+ type: binary
+ -
+ name: if-combination-attrs
+ attributes:
+ -
+ name: limits
+ type: indexed-array
+ sub-type: nest
+ nested-attributes: iface-limit-attrs
+ -
+ name: maxnum
+ type: u32
+ -
+ name: sta-ap-bi-match
+ type: flag
+ -
+ name: num-channels
+ type: u32
+ -
+ name: radar-detect-widths
+ type: u32
+ -
+ name: radar-detect-regions
+ type: u32
+ -
+ name: bi-min-gcd
+ type: u32
+ -
+ name: iface-limit-attrs
+ attributes:
+ -
+ name: max
+ type: u32
+ -
+ name: types
+ type: nest
+ nested-attributes: supported-iftypes
+ -
+ name: iftype-data-attrs
+ attributes:
+ -
+ name: iftypes
+ type: binary
+ -
+ name: he-cap-mac
+ type: binary
+ -
+ name: he-cap-phy
+ type: binary
+ -
+ name: he-cap-mcs-set
+ type: binary
+ -
+ name: he-cap-ppe
+ type: binary
+ -
+ name: eht-cap-mac
+ type: binary
+ -
+ name: eht-cap-phy
+ type: binary
+ -
+ name: eht-cap-mcs-set
+ type: binary
+ -
+ name: eht-cap-ppe
+ type: binary
+ -
+ name: he-6ghz-capa
+ type: binary
+ -
+ name: vendor-elems
+ type: binary
+ -
+ name: nl80211-iftype-attrs
+ attributes:
+ -
+ name: unspecified
+ type: nest
+ value: 0
+ nested-attributes: nl80211-attrs
+ -
+ name: adhoc
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: station
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: ap
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: ap-vlan
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: wds
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: monitor
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: mesh-point
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: p2p-client
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: p2p-go
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: p2p-device
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: ocb
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: nan
+ type: nest
+ nested-attributes: nl80211-attrs
+ -
+ name: sar-spec-attrs
+ attributes:
+ -
+ name: type
+ type: u32
+ -
+ name: specs
+ type: indexed-array
+ sub-type: nest
+ nested-attributes: sar-attr-specs-attrs
+ -
+ name: sar-attr-specs-attrs
+ attributes:
+ -
+ name: power
+ type: s32
+ -
+ name: range-index
+ type: u32
+ -
+ name: start-freq
+ type: u32
+ -
+ name: end-freq
+ type: u32
+ -
+ name: supported-iftypes
+ attributes:
+ -
+ name: adhoc
+ type: flag
+ -
+ name: station
+ type: flag
+ -
+ name: ap
+ type: flag
+ -
+ name: ap-vlan
+ type: flag
+ -
+ name: wds
+ type: flag
+ -
+ name: monitor
+ type: flag
+ -
+ name: mesh-point
+ type: flag
+ -
+ name: p2p-client
+ type: flag
+ -
+ name: p2p-go
+ type: flag
+ -
+ name: p2p-device
+ type: flag
+ -
+ name: ocb
+ type: flag
+ -
+ name: nan
+ type: flag
+ -
+ name: txq-stats
+ attributes:
+ -
+ name: backlog-bytes
+ type: u32
+ -
+ name: backlog-packets
+ type: u32
+ -
+ name: flows
+ type: u32
+ -
+ name: drops
+ type: u32
+ -
+ name: ecn-marks
+ type: u32
+ -
+ name: overlimit
+ type: u32
+ -
+ name: overmemory
+ type: u32
+ -
+ name: collisions
+ type: u32
+ -
+ name: tx-bytes
+ type: u32
+ -
+ name: tx-packets
+ type: u32
+ -
+ name: max-flows
+ type: u32
+ -
+ name: txq-stats
+ type: u32
+ -
+ name: wmm-attrs
+ attributes:
+ -
+ name: cw-min
+ type: u16
+ -
+ name: cw-max
+ type: u16
+ -
+ name: aifsn
+ type: u8
+ -
+ name: txop
+ type: u16
+ -
+ name: wowlan-triggers-attrs
+ attributes:
+ -
+ name: any
+ type: flag
+ -
+ name: disconnect
+ type: flag
+ -
+ name: magic-pkt
+ type: flag
+ -
+ name: pkt-pattern
+ type: flag
+ -
+ name: gtk-rekey-supported
+ type: flag
+ -
+ name: gtk-rekey-failure
+ type: flag
+ -
+ name: eap-ident-request
+ type: flag
+ -
+ name: 4way-handshake
+ type: flag
+ -
+ name: rfkill-release
+ type: flag
+ -
+ name: wakeup-pkt-80211
+ type: flag
+ -
+ name: wakeup-pkt-80211-len
+ type: flag
+ -
+ name: wakeup-pkt-8023
+ type: flag
+ -
+ name: wakeup-pkt-8023-len
+ type: flag
+ -
+ name: tcp-connection
+ type: flag
+ -
+ name: wakeup-tcp-match
+ type: flag
+ -
+ name: wakeup-tcp-connlost
+ type: flag
+ -
+ name: wakeup-tcp-nomoretokens
+ type: flag
+ -
+ name: net-detect
+ type: flag
+ -
+ name: net-detect-results
+ type: flag
+ -
+ name: unprotected-deauth-disassoc
+ type: flag
+
+operations:
+ enum-model: directional
+ list:
+ -
+ name: get-wiphy
+ doc: |
+ Get information about a wiphy or dump a list of all wiphys. Requests to dump get-wiphy
+ should unconditionally include the split-wiphy-dump flag in the request.
+ attribute-set: nl80211-attrs
+ do:
+ request:
+ value: 1
+ attributes:
+ - wiphy
+ - wdev
+ - ifindex
+ reply:
+ value: 3
+ dump:
+ request:
+ attributes:
+ - wiphy
+ - wdev
+ - ifindex
+ - split-wiphy-dump
+ -
+ name: get-interface
+ doc: Get information about an interface or dump a list of all interfaces
+ attribute-set: nl80211-attrs
+ do:
+ request:
+ value: 5
+ attributes:
+ - ifname
+ reply:
+ value: 7
+ dump:
+ request:
+ attributes:
+ - ifname
+ -
+ name: get-protocol-features
+ doc: Get information about supported protocol features
+ attribute-set: nl80211-attrs
+ do:
+ request:
+ value: 95
+ reply:
+ value: 95
+
+mcast-groups:
+ list:
+ -
+ name: config
+ -
+ name: scan
+ -
+ name: regulatory
+ -
+ name: mlme
+ -
+ name: vendor
+ -
+ name: nan
+ -
+ name: testmode
--
2.47.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-10 16:14 ` [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211 Donald Hunter
@ 2024-12-11 21:07 ` Simon Horman
2024-12-11 22:24 ` Donald Hunter
2024-12-12 8:36 ` Johannes Berg
1 sibling, 1 reply; 13+ messages in thread
From: Simon Horman @ 2024-12-11 21:07 UTC (permalink / raw)
To: Donald Hunter
Cc: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Johannes Berg, linux-wireless, donald.hunter
On Tue, Dec 10, 2024 at 04:14:48PM +0000, Donald Hunter wrote:
> Add a rudimentary YNL spec for nl80211 that covers get-wiphy,
> get-interface and get-protocol-features.
>
> ./tools/net/ynl/cli.py \
> --spec Documentation/netlink/specs/nl80211.yaml \
> --do get-protocol-features
> {'protocol-features': {'split-wiphy-dump'}}
>
> ./tools/net/ynl/cli.py \
> --spec Documentation/netlink/specs/nl80211.yaml \
> --dump get-wiphy --json '{ "split-wiphy-dump": true }'
>
> ./tools/net/ynl/cli.py \
> --spec Documentation/netlink/specs/nl80211.yaml \
> --dump get-interface
>
> Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Hi Donald,
Perhaps I'm doing something silly here, or my environment is somehow
broken. But with this patch applied I see:
make -C tools/net/ynl/ distclean && make -C tools/net/ynl/
...
-e GEN nl80211-user.c
Traceback (most recent call last):
File "/home/horms/projects/linux/linux/tools/net/ynl/generated/../ynl-gen-c.py", line 3018, in <module>
main()
File "/home/horms/projects/linux/linux/tools/net/ynl/generated/../ynl-gen-c.py", line 2727, in main
parsed = Family(args.spec, exclude_ops)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/horms/projects/linux/linux/tools/net/ynl/generated/../ynl-gen-c.py", line 928, in __init__
super().__init__(file_name, exclude_ops=exclude_ops)
File "/home/horms/projects/linux/linux/tools/net/ynl/lib/nlspec.py", line 480, in __init__
elem.resolve()
File "/home/horms/projects/linux/linux/tools/net/ynl/generated/../ynl-gen-c.py", line 946, in resolve
self.resolve_up(super())
File "/home/horms/projects/linux/linux/tools/net/ynl/lib/nlspec.py", line 53, in resolve_up
up.resolve()
File "/home/horms/projects/linux/linux/tools/net/ynl/lib/nlspec.py", line 588, in resolve
attr_set = self.new_attr_set(elem)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/horms/projects/linux/linux/tools/net/ynl/generated/../ynl-gen-c.py", line 992, in new_attr_set
return AttrSet(self, elem)
^^^^^^^^^^^^^^^^^^^
File "/home/horms/projects/linux/linux/tools/net/ynl/generated/../ynl-gen-c.py", line 824, in __init__
super().__init__(family, yaml)
File "/home/horms/projects/linux/linux/tools/net/ynl/lib/nlspec.py", line 215, in __init__
attr = self.new_attr(elem, val)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/horms/projects/linux/linux/tools/net/ynl/generated/../ynl-gen-c.py", line 873, in new_attr
raise Exception(f'new_attr: unsupported sub-type {elem["sub-type"]}')
Exception: new_attr: unsupported sub-type u32
make[1]: *** [Makefile:37: nl80211-user.c] Error 1
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-11 21:07 ` Simon Horman
@ 2024-12-11 22:24 ` Donald Hunter
0 siblings, 0 replies; 13+ messages in thread
From: Donald Hunter @ 2024-12-11 22:24 UTC (permalink / raw)
To: Simon Horman
Cc: Donald Hunter, netdev, Jakub Kicinski, David S. Miller,
Eric Dumazet, Paolo Abeni, Johannes Berg, linux-wireless
On Wed, 11 Dec 2024 at 21:13, Simon Horman <horms@kernel.org> wrote:
>
> On Tue, Dec 10, 2024 at 04:14:48PM +0000, Donald Hunter wrote:
> > Add a rudimentary YNL spec for nl80211 that covers get-wiphy,
> > get-interface and get-protocol-features.
> >
> > ./tools/net/ynl/cli.py \
> > --spec Documentation/netlink/specs/nl80211.yaml \
> > --do get-protocol-features
> > {'protocol-features': {'split-wiphy-dump'}}
> >
> > ./tools/net/ynl/cli.py \
> > --spec Documentation/netlink/specs/nl80211.yaml \
> > --dump get-wiphy --json '{ "split-wiphy-dump": true }'
> >
> > ./tools/net/ynl/cli.py \
> > --spec Documentation/netlink/specs/nl80211.yaml \
> > --dump get-interface
> >
> > Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
>
> Hi Donald,
>
> Perhaps I'm doing something silly here, or my environment is somehow
> broken. But with this patch applied I see:
>
> make -C tools/net/ynl/ distclean && make -C tools/net/ynl/
> ...
> Exception: new_attr: unsupported sub-type u32
> make[1]: *** [Makefile:37: nl80211-user.c] Error 1
Hi Simon,
Thanks for reporting. It was also flagged up on patchwork. My bad. I
had a blind spot for checking the C build because the last few specs I
have worked on have been netlink-raw which don't have codegen. I'll
look at fixing this and any subsequent issues.
Thanks,
Donald.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-10 16:14 ` [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211 Donald Hunter
2024-12-11 21:07 ` Simon Horman
@ 2024-12-12 8:36 ` Johannes Berg
2024-12-18 14:32 ` Donald Hunter
1 sibling, 1 reply; 13+ messages in thread
From: Johannes Berg @ 2024-12-12 8:36 UTC (permalink / raw)
To: Donald Hunter, netdev, Jakub Kicinski, David S. Miller,
Eric Dumazet, Paolo Abeni, Simon Horman, linux-wireless
Cc: donald.hunter
On Tue, 2024-12-10 at 16:14 +0000, Donald Hunter wrote:
>
> + -
> + name: wlan-cipher-suites
> + type: enum
I'm not sure exactly what this does, but I'm not sure 'enum' is the
right way to think about it. Pretty much every number (OUI + subvalue)
could be valid here, if the driver advertises support for it and you
have a supplicant that understands it.
> + -
> + name: wiphy-bands
> + attributes:
> + -
> + name: 2ghz
> + doc: 2.4 GHz ISM band
> + value: 0
> + type: nest
> + nested-attributes: band-attrs
> + -
> + name: 5ghz
> + doc: around 5 GHz band (4.9 - 5.7 GHz)
> + type: nest
> + nested-attributes: band-attrs
> + -
> + name: 60ghz
> + doc: around 60 GHz band (58.32 - 69.12 GHz)
> + type: binary
This (and s1g/lc) should also nest, with the same attributes? There
should be no structural difference between the bands, even if most of
the values are only used/valid for some of the bands.
> +operations:
> + enum-model: directional
> + list:
> + -
> + name: get-wiphy
> + doc: |
> + Get information about a wiphy or dump a list of all wiphys. Requests to dump get-wiphy
> + should unconditionally include the split-wiphy-dump flag in the request.
> + attribute-set: nl80211-attrs
> + do:
> + request:
> + value: 1
> + attributes:
> + - wiphy
> + - wdev
> + - ifindex
> + reply:
> + value: 3
could the value not reference "get-wiphy" and "new-wiphy" from the
command list? That might be easier to understand?
johannes
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-12 8:36 ` Johannes Berg
@ 2024-12-18 14:32 ` Donald Hunter
2024-12-18 14:37 ` Johannes Berg
0 siblings, 1 reply; 13+ messages in thread
From: Donald Hunter @ 2024-12-18 14:32 UTC (permalink / raw)
To: Johannes Berg
Cc: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, linux-wireless, donald.hunter
On Thu, 12 Dec 2024 at 08:36, Johannes Berg <johannes@sipsolutions.net> wrote:
>
> On Tue, 2024-12-10 at 16:14 +0000, Donald Hunter wrote:
> >
> > + -
> > + name: wlan-cipher-suites
> > + type: enum
>
> I'm not sure exactly what this does, but I'm not sure 'enum' is the
> right way to think about it. Pretty much every number (OUI + subvalue)
> could be valid here, if the driver advertises support for it and you
> have a supplicant that understands it.
It was an attempt to enumerate the valid values, but from what you are
saying I think it will need to remain as u32, probably with
'display-hint: hex".
> > + -
> > + name: wiphy-bands
> > + attributes:
> > + -
> > + name: 2ghz
> > + doc: 2.4 GHz ISM band
> > + value: 0
> > + type: nest
> > + nested-attributes: band-attrs
> > + -
> > + name: 5ghz
> > + doc: around 5 GHz band (4.9 - 5.7 GHz)
> > + type: nest
> > + nested-attributes: band-attrs
> > + -
> > + name: 60ghz
> > + doc: around 60 GHz band (58.32 - 69.12 GHz)
> > + type: binary
>
> This (and s1g/lc) should also nest, with the same attributes? There
> should be no structural difference between the bands, even if most of
> the values are only used/valid for some of the bands.
That makes sense. I'll add the nest type to them all.
> > +operations:
> > + enum-model: directional
> > + list:
> > + -
> > + name: get-wiphy
> > + doc: |
> > + Get information about a wiphy or dump a list of all wiphys. Requests to dump get-wiphy
> > + should unconditionally include the split-wiphy-dump flag in the request.
> > + attribute-set: nl80211-attrs
> > + do:
> > + request:
> > + value: 1
> > + attributes:
> > + - wiphy
> > + - wdev
> > + - ifindex
> > + reply:
> > + value: 3
>
> could the value not reference "get-wiphy" and "new-wiphy" from the
> command list? That might be easier to understand?
There is currently no schema or tool support for referencing enum
constants when defining protocol message ids. Most of the netlink
families don't have any need for an enumeration of commands in the
spec; nl80211 is unusual in reporting available commands.
I'm currently working on completeness of nl80211 and a couple of
feature gaps in ynl-gen-c.py to resolve 'make -C tools/net/ynl'
failures. I doubt that I will have a v3 patchset ready before net-next
closes for the holidays.
Thanks,
Donald.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH net-next v2 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-18 14:32 ` Donald Hunter
@ 2024-12-18 14:37 ` Johannes Berg
0 siblings, 0 replies; 13+ messages in thread
From: Johannes Berg @ 2024-12-18 14:37 UTC (permalink / raw)
To: Donald Hunter
Cc: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, linux-wireless, donald.hunter
On Wed, 2024-12-18 at 14:32 +0000, Donald Hunter wrote:
>
> > > +operations:
> > > + enum-model: directional
> > > + list:
> > > + -
> > > + name: get-wiphy
> > > + doc: |
> > > + Get information about a wiphy or dump a list of all wiphys. Requests to dump get-wiphy
> > > + should unconditionally include the split-wiphy-dump flag in the request.
> > > + attribute-set: nl80211-attrs
> > > + do:
> > > + request:
> > > + value: 1
> > > + attributes:
> > > + - wiphy
> > > + - wdev
> > > + - ifindex
> > > + reply:
> > > + value: 3
> >
> > could the value not reference "get-wiphy" and "new-wiphy" from the
> > command list? That might be easier to understand?
>
> There is currently no schema or tool support for referencing enum
> constants when defining protocol message ids. Most of the netlink
> families don't have any need for an enumeration of commands in the
> spec; nl80211 is unusual in reporting available commands.
Oh, that's what it is. I'm not sure anyone really needs that now with
the genetlink introspection, though I guess existing tools do use it.
johannes
^ permalink raw reply [flat|nested] 13+ messages in thread