* [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy
@ 2024-12-03 13:06 Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 1/7] tools/net/ynl: remove extraneous plural from variable names Donald Hunter
` (6 more replies)
0 siblings, 7 replies; 22+ messages in thread
From: Donald Hunter @ 2024-12-03 13:06 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 includes get-wiphy and
get-interface, along with some required enhancements to YNL and the
netlink schemas.
Patch 1 is a minor cleanup to prepare for patch 2
Patches 2-4 are new features for YNL
Patches 5-6 are schema updates for feature parity
Patch 7 is the new nl80211 spec
Donald Hunter (7):
tools/net/ynl: remove extraneous plural from variable names
tools/net/ynl: support decoding indexed arrays as enums
tools/net/ynl: support decoding C arrays as enums
tools/net/ynl: accept IP string inputs
netlink: specs: support nested structs in genetlink legacy
netlink: specs: add s8, s16 to genetlink schemas
netlink: specs: wireless: add a spec for nl80211
Documentation/netlink/genetlink-c.yaml | 2 +-
Documentation/netlink/genetlink-legacy.yaml | 5 +-
Documentation/netlink/genetlink.yaml | 2 +-
Documentation/netlink/specs/nl80211.yaml | 1775 +++++++++++++++++++
tools/net/ynl/lib/ynl.py | 42 +-
5 files changed, 1812 insertions(+), 14 deletions(-)
create mode 100644 Documentation/netlink/specs/nl80211.yaml
--
2.47.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH net-next v1 1/7] tools/net/ynl: remove extraneous plural from variable names
2024-12-03 13:06 [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
@ 2024-12-03 13:06 ` Donald Hunter
2024-12-04 1:56 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 2/7] tools/net/ynl: support decoding indexed arrays as enums Donald Hunter
` (5 subsequent siblings)
6 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-03 13:06 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>
---
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] 22+ messages in thread
* [PATCH net-next v1 2/7] tools/net/ynl: support decoding indexed arrays as enums
2024-12-03 13:06 [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 1/7] tools/net/ynl: remove extraneous plural from variable names Donald Hunter
@ 2024-12-03 13:06 ` Donald Hunter
2024-12-04 2:00 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 3/7] tools/net/ynl: support decoding C " Donald Hunter
` (4 subsequent siblings)
6 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-03 13:06 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>
---
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] 22+ messages in thread
* [PATCH net-next v1 3/7] tools/net/ynl: support decoding C arrays as enums
2024-12-03 13:06 [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 1/7] tools/net/ynl: remove extraneous plural from variable names Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 2/7] tools/net/ynl: support decoding indexed arrays as enums Donald Hunter
@ 2024-12-03 13:06 ` Donald Hunter
2024-12-04 2:03 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 4/7] tools/net/ynl: accept IP string inputs Donald Hunter
` (3 subsequent siblings)
6 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-03 13:06 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 enum
names.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
---
tools/net/ynl/lib/ynl.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
index 0d39a83574d5..f07a8404f71a 100644
--- a/tools/net/ynl/lib/ynl.py
+++ b/tools/net/ynl/lib/ynl.py
@@ -627,6 +627,8 @@ 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]
else:
decoded = attr.as_bin()
if attr_spec.display_hint:
--
2.47.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH net-next v1 4/7] tools/net/ynl: accept IP string inputs
2024-12-03 13:06 [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
` (2 preceding siblings ...)
2024-12-03 13:06 ` [PATCH net-next v1 3/7] tools/net/ynl: support decoding C " Donald Hunter
@ 2024-12-03 13:06 ` Donald Hunter
2024-12-04 2:07 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 5/7] netlink: specs: support nested structs in genetlink legacy Donald Hunter
` (2 subsequent siblings)
6 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-03 13:06 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 | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
index f07a8404f71a..c861c1a7d933 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.display_hint, attr_spec['type'])
+ 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.display_hint, attr['type'])
+ else:
+ attr_payload = bytes.fromhex(value)
elif isinstance(value, dict) and attr.struct_name:
attr_payload = self._encode_struct(attr.struct_name, value)
else:
@@ -899,6 +904,17 @@ class YnlFamily(SpecFamily):
formatted = raw
return formatted
+ def _from_string(self, string, display_hint, type):
+ if display_hint in ['ipv4', 'ipv6']:
+ ip = ipaddress.ip_address(string)
+ if type == 'binary':
+ raw = ip.packed
+ else:
+ raw = int(ip)
+ else:
+ raw = string
+ return raw
+
def handle_ntf(self, decoded):
msg = dict()
if self.include_raw:
--
2.47.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH net-next v1 5/7] netlink: specs: support nested structs in genetlink legacy
2024-12-03 13:06 [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
` (3 preceding siblings ...)
2024-12-03 13:06 ` [PATCH net-next v1 4/7] tools/net/ynl: accept IP string inputs Donald Hunter
@ 2024-12-03 13:06 ` Donald Hunter
2024-12-04 2:07 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 6/7] netlink: specs: add s8, s16 to genetlink schemas Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211 Donald Hunter
6 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-03 13:06 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>
---
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 8db0e22fa72c..f8be52e7793b 100644
--- a/Documentation/netlink/genetlink-legacy.yaml
+++ b/Documentation/netlink/genetlink-legacy.yaml
@@ -148,6 +148,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] 22+ messages in thread
* [PATCH net-next v1 6/7] netlink: specs: add s8, s16 to genetlink schemas
2024-12-03 13:06 [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
` (4 preceding siblings ...)
2024-12-03 13:06 ` [PATCH net-next v1 5/7] netlink: specs: support nested structs in genetlink legacy Donald Hunter
@ 2024-12-03 13:06 ` Donald Hunter
2024-12-04 2:08 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211 Donald Hunter
6 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-03 13:06 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>
---
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 4f803eaac6d8..473c50b73522 100644
--- a/Documentation/netlink/genetlink-c.yaml
+++ b/Documentation/netlink/genetlink-c.yaml
@@ -157,7 +157,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 f8be52e7793b..68462c6d7cca 100644
--- a/Documentation/netlink/genetlink-legacy.yaml
+++ b/Documentation/netlink/genetlink-legacy.yaml
@@ -203,7 +203,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] 22+ messages in thread
* [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-03 13:06 [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
` (5 preceding siblings ...)
2024-12-03 13:06 ` [PATCH net-next v1 6/7] netlink: specs: add s8, s16 to genetlink schemas Donald Hunter
@ 2024-12-03 13:06 ` Donald Hunter
2024-12-03 13:12 ` Johannes Berg
6 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-03 13:06 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 and
get-interface.
./tools/net/ynl/cli.py \
--spec Documentation/netlink/specs/nl80211.yaml \
--dump get-wiphy
./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 | 1775 ++++++++++++++++++++++
1 file changed, 1775 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..06e54233bb6a
--- /dev/null
+++ b/Documentation/netlink/specs/nl80211.yaml
@@ -0,0 +1,1775 @@
+# 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
+
+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: binary # TODO: nest
+ -
+ name: rx-frame-types
+ type: binary # TODO: nest
+ -
+ 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
+ -
+ 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: binary # TODO: nest
+ -
+ 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: binary
+ -
+ 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: binary
+ -
+ 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: binary
+ -
+ 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: 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: 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
+ attribute-set: nl80211-attrs
+ do:
+ request:
+ value: 1
+ attributes:
+ - wiphy
+ reply:
+ value: 3
+ dump:
+ request:
+ attributes:
+ - wiphy
+ -
+ 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
+
+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] 22+ messages in thread
* Re: [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-03 13:06 ` [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211 Donald Hunter
@ 2024-12-03 13:12 ` Johannes Berg
2024-12-04 13:12 ` Donald Hunter
0 siblings, 1 reply; 22+ messages in thread
From: Johannes Berg @ 2024-12-03 13:12 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-03 at 13:06 +0000, Donald Hunter wrote:
> Add a rudimentary YNL spec for nl80211 that covers get-wiphy and
> get-interface.
OK, that says what it's doing, but why?
Also, I don't know how we will maintain this if it's not tied to any
kernel code. What do you suggest? Do you want to just maintain it
following the nl80211.h spec all the time?
> +operations:
> + enum-model: directional
> + list:
> + -
> + name: get-wiphy
> + doc: Get information about a wiphy or dump a list of all wiphys
> + attribute-set: nl80211-attrs
> + do:
> + request:
> + value: 1
> + attributes:
> + - wiphy
> + reply:
> + value: 3
> + dump:
> + request:
> + attributes:
> + - wiphy
>
This already seems wrong - dump wiphy really should unconditionally
include NL80211_ATTR_SPLIT_WIPHY_DUMP these days.
johannes
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 1/7] tools/net/ynl: remove extraneous plural from variable names
2024-12-03 13:06 ` [PATCH net-next v1 1/7] tools/net/ynl: remove extraneous plural from variable names Donald Hunter
@ 2024-12-04 1:56 ` Jakub Kicinski
0 siblings, 0 replies; 22+ messages in thread
From: Jakub Kicinski @ 2024-12-04 1:56 UTC (permalink / raw)
To: Donald Hunter
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Tue, 3 Dec 2024 13:06:49 +0000 Donald Hunter wrote:
> _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.
Acked-by: Jakub Kicinski <kuba@kernel.org>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 2/7] tools/net/ynl: support decoding indexed arrays as enums
2024-12-03 13:06 ` [PATCH net-next v1 2/7] tools/net/ynl: support decoding indexed arrays as enums Donald Hunter
@ 2024-12-04 2:00 ` Jakub Kicinski
2024-12-04 13:20 ` Donald Hunter
0 siblings, 1 reply; 22+ messages in thread
From: Jakub Kicinski @ 2024-12-04 2:00 UTC (permalink / raw)
To: Donald Hunter
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Tue, 3 Dec 2024 13:06:50 +0000 Donald Hunter wrote:
> 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.
Makes me wonder if we should factor this code out into a helper.
But there aren't too many sites with this code so fine either way:
Acked-by: Jakub Kicinski <kuba@kernel.org>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 3/7] tools/net/ynl: support decoding C arrays as enums
2024-12-03 13:06 ` [PATCH net-next v1 3/7] tools/net/ynl: support decoding C " Donald Hunter
@ 2024-12-04 2:03 ` Jakub Kicinski
2024-12-04 13:24 ` Donald Hunter
0 siblings, 1 reply; 22+ messages in thread
From: Jakub Kicinski @ 2024-12-04 2:03 UTC (permalink / raw)
To: Donald Hunter
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Tue, 3 Dec 2024 13:06:51 +0000 Donald Hunter wrote:
> Add support for translating arrays of scalars into enum names.
But not formatting hints.. ? ;)
> Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
> ---
> tools/net/ynl/lib/ynl.py | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
> index 0d39a83574d5..f07a8404f71a 100644
> --- a/tools/net/ynl/lib/ynl.py
> +++ b/tools/net/ynl/lib/ynl.py
> @@ -627,6 +627,8 @@ 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]
nit: missing space after 'decoded' or extra space before self, with
that fixed:
Acked-by: Jakub Kicinski <kuba@kernel.org>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 4/7] tools/net/ynl: accept IP string inputs
2024-12-03 13:06 ` [PATCH net-next v1 4/7] tools/net/ynl: accept IP string inputs Donald Hunter
@ 2024-12-04 2:07 ` Jakub Kicinski
2024-12-04 13:37 ` Donald Hunter
0 siblings, 1 reply; 22+ messages in thread
From: Jakub Kicinski @ 2024-12-04 2:07 UTC (permalink / raw)
To: Donald Hunter
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Tue, 3 Dec 2024 13:06:52 +0000 Donald Hunter wrote:
> + def _from_string(self, string, display_hint, type):
Any reason not to pass attr_spec instead of the members one by one?
> + if display_hint in ['ipv4', 'ipv6']:
> + ip = ipaddress.ip_address(string)
> + if type == 'binary':
> + raw = ip.packed
> + else:
> + raw = int(ip)
> + else:
I wonder if we should raise in this case?
Especially if type is binary passing the string back will just blow up
later, right? We could instead rise with a nice clear error message
here.
> + raw = string
> + return raw
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 5/7] netlink: specs: support nested structs in genetlink legacy
2024-12-03 13:06 ` [PATCH net-next v1 5/7] netlink: specs: support nested structs in genetlink legacy Donald Hunter
@ 2024-12-04 2:07 ` Jakub Kicinski
0 siblings, 0 replies; 22+ messages in thread
From: Jakub Kicinski @ 2024-12-04 2:07 UTC (permalink / raw)
To: Donald Hunter
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Tue, 3 Dec 2024 13:06:53 +0000 Donald Hunter wrote:
> Nested structs are already supported in netlink-raw. Add the same
> capability to the genetlink legacy schema.
Acked-by: Jakub Kicinski <kuba@kernel.org>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 6/7] netlink: specs: add s8, s16 to genetlink schemas
2024-12-03 13:06 ` [PATCH net-next v1 6/7] netlink: specs: add s8, s16 to genetlink schemas Donald Hunter
@ 2024-12-04 2:08 ` Jakub Kicinski
0 siblings, 0 replies; 22+ messages in thread
From: Jakub Kicinski @ 2024-12-04 2:08 UTC (permalink / raw)
To: Donald Hunter
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Tue, 3 Dec 2024 13:06:54 +0000 Donald Hunter wrote:
> Add s8 and s16 types to the genetlink schemas to align scalar types
> across all schemas.
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-03 13:12 ` Johannes Berg
@ 2024-12-04 13:12 ` Donald Hunter
2024-12-04 13:28 ` Johannes Berg
0 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-04 13:12 UTC (permalink / raw)
To: Johannes Berg
Cc: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, linux-wireless, donald.hunter
On Tue, 3 Dec 2024 at 13:12, Johannes Berg <johannes@sipsolutions.net> wrote:
>
> On Tue, 2024-12-03 at 13:06 +0000, Donald Hunter wrote:
> > Add a rudimentary YNL spec for nl80211 that covers get-wiphy and
> > get-interface.
>
> OK, that says what it's doing, but why?
My main motivation is coverage, for 2 reasons: firstly to flush out
any feature gaps in YNL such as the ones I fixed in this series and
secondly to achieve a critical mass of YNL specs that encourages
people to build more tooling around the specs. YNL is already used for
in-tree test automation and documentation generation. There is
potential for generating strace dumpers and people are starting to use
generated user space code.
> Also, I don't know how we will maintain this if it's not tied to any
> kernel code. What do you suggest? Do you want to just maintain it
> following the nl80211.h spec all the time?
It's a good question. I am okay with maintaining it alongside the
nl80211.h file, which will likely motivate me to write some automation
at least for notifying any divergence. There might come a time when it
becomes desirable to generate some of nl80211.h from the spec, as
Stanislav Fomichev is doing for ethtool here:
https://lore.kernel.org/netdev/20241202162936.3778016-1-sdf@fomichev.me/
> > + name: get-wiphy
> > + doc: Get information about a wiphy or dump a list of all wiphys
> > + attribute-set: nl80211-attrs
> > + do:
> > + request:
> > + value: 1
> > + attributes:
> > + - wiphy
> > + reply:
> > + value: 3
> > + dump:
> > + request:
> > + attributes:
> > + - wiphy
> >
>
> This already seems wrong - dump wiphy really should unconditionally
> include NL80211_ATTR_SPLIT_WIPHY_DUMP these days.
Yes, the valid parameter attributes should be wiphy, wdev, ifindex and
split-wiphy-dump by the look of it.
Thanks,
Donald.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 2/7] tools/net/ynl: support decoding indexed arrays as enums
2024-12-04 2:00 ` Jakub Kicinski
@ 2024-12-04 13:20 ` Donald Hunter
0 siblings, 0 replies; 22+ messages in thread
From: Donald Hunter @ 2024-12-04 13:20 UTC (permalink / raw)
To: Jakub Kicinski
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Wed, 4 Dec 2024 at 02:00, Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Tue, 3 Dec 2024 13:06:50 +0000 Donald Hunter wrote:
> > 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.
>
> Makes me wonder if we should factor this code out into a helper.
> But there aren't too many sites with this code so fine either way:
I'll look at potential refactoring as a follow up.
> Acked-by: Jakub Kicinski <kuba@kernel.org>
Thanks,
Donald.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 3/7] tools/net/ynl: support decoding C arrays as enums
2024-12-04 2:03 ` Jakub Kicinski
@ 2024-12-04 13:24 ` Donald Hunter
0 siblings, 0 replies; 22+ messages in thread
From: Donald Hunter @ 2024-12-04 13:24 UTC (permalink / raw)
To: Jakub Kicinski
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Wed, 4 Dec 2024 at 02:03, Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Tue, 3 Dec 2024 13:06:51 +0000 Donald Hunter wrote:
> > Add support for translating arrays of scalars into enum names.
>
> But not formatting hints.. ? ;)
Oooh, good catch. This does suggest that a refactor is needed for
scalar handling.
> > Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
> > ---
> > tools/net/ynl/lib/ynl.py | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
> > index 0d39a83574d5..f07a8404f71a 100644
> > --- a/tools/net/ynl/lib/ynl.py
> > +++ b/tools/net/ynl/lib/ynl.py
> > @@ -627,6 +627,8 @@ 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]
>
> nit: missing space after 'decoded' or extra space before self, with
> that fixed:
ack.
> Acked-by: Jakub Kicinski <kuba@kernel.org>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-04 13:12 ` Donald Hunter
@ 2024-12-04 13:28 ` Johannes Berg
2024-12-04 14:08 ` Donald Hunter
0 siblings, 1 reply; 22+ messages in thread
From: Johannes Berg @ 2024-12-04 13:28 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-04 at 13:12 +0000, Donald Hunter wrote:
> My main motivation is coverage, for 2 reasons: firstly to flush out
> any feature gaps in YNL such as the ones I fixed in this series
Yeah, OK, though I'm not sure YNL is really meant to be feature complete
for everything netlink may be doing, rather than for what's needed - and
some of the things we did may even be things that are not meant to be
done any more (e.g. nested array vs. multi-attr arrays.)
> and
> secondly to achieve a critical mass of YNL specs that encourages
> people to build more tooling around the specs.
OK, fair :)
> YNL is already used for
> in-tree test automation and documentation generation. There is
> potential for generating strace dumpers and people are starting to use
> generated user space code.
Right.
> > Also, I don't know how we will maintain this if it's not tied to any
> > kernel code. What do you suggest? Do you want to just maintain it
> > following the nl80211.h spec all the time?
>
> It's a good question. I am okay with maintaining it alongside the
> nl80211.h file, which will likely motivate me to write some automation
> at least for notifying any divergence. There might come a time when it
> becomes desirable to generate some of nl80211.h from the spec, as
> Stanislav Fomichev is doing for ethtool here:
>
> https://lore.kernel.org/netdev/20241202162936.3778016-1-sdf@fomichev.me/
I think I wouldn't mind that - I'm hoping it'll also generate policies
etc.? Though on that front we probably have weird quirks too ...
But until then I guess someone's going to have to maintain it, and I'm
not sure I want that to be me right now :)
> > > + name: get-wiphy
> > > + doc: Get information about a wiphy or dump a list of all wiphys
> > > + attribute-set: nl80211-attrs
> > > + do:
> > > + request:
> > > + value: 1
> > > + attributes:
> > > + - wiphy
> > > + reply:
> > > + value: 3
> > > + dump:
> > > + request:
> > > + attributes:
> > > + - wiphy
> > >
> >
> > This already seems wrong - dump wiphy really should unconditionally
> > include NL80211_ATTR_SPLIT_WIPHY_DUMP these days.
>
> Yes, the valid parameter attributes should be wiphy, wdev, ifindex and
> split-wiphy-dump by the look of it.
Well there's that about valid parameters, but also no (new) tools today
should ever *not* include the split-wiphy-dump attribute. I guess that
can't be expressed here, but it's a gotcha for implementers that just
follow the YNL spec?
johannes
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 4/7] tools/net/ynl: accept IP string inputs
2024-12-04 2:07 ` Jakub Kicinski
@ 2024-12-04 13:37 ` Donald Hunter
2024-12-10 12:00 ` Donald Hunter
0 siblings, 1 reply; 22+ messages in thread
From: Donald Hunter @ 2024-12-04 13:37 UTC (permalink / raw)
To: Jakub Kicinski
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Wed, 4 Dec 2024 at 02:07, Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Tue, 3 Dec 2024 13:06:52 +0000 Donald Hunter wrote:
> > + def _from_string(self, string, display_hint, type):
>
> Any reason not to pass attr_spec instead of the members one by one?
I thought it would be better to keep the low-level helpers decoupled
from attr_spec and mostly just following existing helpers that only
have the display_hint parameter.
> > + if display_hint in ['ipv4', 'ipv6']:
> > + ip = ipaddress.ip_address(string)
> > + if type == 'binary':
> > + raw = ip.packed
> > + else:
> > + raw = int(ip)
> > + else:
>
> I wonder if we should raise in this case?
> Especially if type is binary passing the string back will just blow up
> later, right? We could instead rise with a nice clear error message
> here.
It's actually a bit misleading that the attr is called 'string'
because it could be a binary input if it was supplied from python
code, i.e. not parsed from JSON on the command-line.
But you highlight the bigger point that our input validation is quite
weak and will need to be improved. In this case it would be desirable
to defensively check if the input is already binary before checking
for a display-hint. Then for input that can't be handled, we can raise
an error message.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211
2024-12-04 13:28 ` Johannes Berg
@ 2024-12-04 14:08 ` Donald Hunter
0 siblings, 0 replies; 22+ messages in thread
From: Donald Hunter @ 2024-12-04 14:08 UTC (permalink / raw)
To: Johannes Berg
Cc: netdev, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman, linux-wireless, donald.hunter
On Wed, 4 Dec 2024 at 13:28, Johannes Berg <johannes@sipsolutions.net> wrote:
>
> > > Also, I don't know how we will maintain this if it's not tied to any
> > > kernel code. What do you suggest? Do you want to just maintain it
> > > following the nl80211.h spec all the time?
> >
> > It's a good question. I am okay with maintaining it alongside the
> > nl80211.h file, which will likely motivate me to write some automation
> > at least for notifying any divergence. There might come a time when it
> > becomes desirable to generate some of nl80211.h from the spec, as
> > Stanislav Fomichev is doing for ethtool here:
> >
> > https://lore.kernel.org/netdev/20241202162936.3778016-1-sdf@fomichev.me/
>
> I think I wouldn't mind that - I'm hoping it'll also generate policies
> etc.? Though on that front we probably have weird quirks too ...
Yes, the policies are generated, quirks notwithstanding ;-)
> But until then I guess someone's going to have to maintain it, and I'm
> not sure I want that to be me right now :)
Ack that. The burden is on me.
> > > > + name: get-wiphy
> > > > + doc: Get information about a wiphy or dump a list of all wiphys
> > > > + attribute-set: nl80211-attrs
> > > > + do:
> > > > + request:
> > > > + value: 1
> > > > + attributes:
> > > > + - wiphy
> > > > + reply:
> > > > + value: 3
> > > > + dump:
> > > > + request:
> > > > + attributes:
> > > > + - wiphy
> > > >
> > >
> > > This already seems wrong - dump wiphy really should unconditionally
> > > include NL80211_ATTR_SPLIT_WIPHY_DUMP these days.
> >
> > Yes, the valid parameter attributes should be wiphy, wdev, ifindex and
> > split-wiphy-dump by the look of it.
>
> Well there's that about valid parameters, but also no (new) tools today
> should ever *not* include the split-wiphy-dump attribute. I guess that
> can't be expressed here, but it's a gotcha for implementers that just
> follow the YNL spec?
There's no way to specify that, but the constraint can be described
clearly in the doc string. I'll do that for v2.
Thanks,
Donald.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH net-next v1 4/7] tools/net/ynl: accept IP string inputs
2024-12-04 13:37 ` Donald Hunter
@ 2024-12-10 12:00 ` Donald Hunter
0 siblings, 0 replies; 22+ messages in thread
From: Donald Hunter @ 2024-12-10 12:00 UTC (permalink / raw)
To: Jakub Kicinski
Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Johannes Berg, linux-wireless, donald.hunter
On Wed, 4 Dec 2024 at 13:37, Donald Hunter <donald.hunter@gmail.com> wrote:
>
> On Wed, 4 Dec 2024 at 02:07, Jakub Kicinski <kuba@kernel.org> wrote:
> >
> > > + if display_hint in ['ipv4', 'ipv6']:
> > > + ip = ipaddress.ip_address(string)
> > > + if type == 'binary':
> > > + raw = ip.packed
> > > + else:
> > > + raw = int(ip)
> > > + else:
> >
> > I wonder if we should raise in this case?
> > Especially if type is binary passing the string back will just blow up
> > later, right? We could instead rise with a nice clear error message
> > here.
>
> It's actually a bit misleading that the attr is called 'string'
> because it could be a binary input if it was supplied from python
> code, i.e. not parsed from JSON on the command-line.
I was wrong, the binary input is handled already by the caller, so
this should just raise an exception.
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2024-12-10 12:00 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-03 13:06 [PATCH net-next v1 0/7] netlink: specs: add a spec for nl80211 wiphy Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 1/7] tools/net/ynl: remove extraneous plural from variable names Donald Hunter
2024-12-04 1:56 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 2/7] tools/net/ynl: support decoding indexed arrays as enums Donald Hunter
2024-12-04 2:00 ` Jakub Kicinski
2024-12-04 13:20 ` Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 3/7] tools/net/ynl: support decoding C " Donald Hunter
2024-12-04 2:03 ` Jakub Kicinski
2024-12-04 13:24 ` Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 4/7] tools/net/ynl: accept IP string inputs Donald Hunter
2024-12-04 2:07 ` Jakub Kicinski
2024-12-04 13:37 ` Donald Hunter
2024-12-10 12:00 ` Donald Hunter
2024-12-03 13:06 ` [PATCH net-next v1 5/7] netlink: specs: support nested structs in genetlink legacy Donald Hunter
2024-12-04 2:07 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 6/7] netlink: specs: add s8, s16 to genetlink schemas Donald Hunter
2024-12-04 2:08 ` Jakub Kicinski
2024-12-03 13:06 ` [PATCH net-next v1 7/7] netlink: specs: wireless: add a spec for nl80211 Donald Hunter
2024-12-03 13:12 ` Johannes Berg
2024-12-04 13:12 ` Donald Hunter
2024-12-04 13:28 ` Johannes Berg
2024-12-04 14:08 ` Donald Hunter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).