Rework band handling/setting and add 6GHz to libnm
Summary
For quite some time, NetworkManager has incorrectly defined bands by the IEEE 802.11 revisions they launched with. This introduces substantial issues when adding support for new bands like 6GHz, as the 802.11 revs are tied to WiFi major version (i.e. WiFi 4, 5, 6, etc.) and not frequency. For example, 5GHz now exists across all a and b revs, but 6GHz was introduced in ax. And WiFi 6 is 802.11ax, but 6GHz was introduced in 6E, which is also ax. And WiFi 7 uses the same 2.4, 5, and 6GHz bands, but is 802.11be.
This PR reworks this handling to refer to bands, represented as strings, as their canonical major frequency (i.e. "2.4GHz", "6GHz"). It also adds support for 6GHz bands (supported in 802.11ax and 802.11be) and the 160 and 320 MHz channel widths (ax and be respectively) to libnm, where it was sorely lacking. It also fixes styling or test breakage where necessary.
Purpose
Proper band references ease future ban additions and reduce confusion. Adding new frequency and channel width support to libnm will enable clients and other pieces of NetworkManager to set, prefer, and make use of these WiFi 6, 6E, and 7 capabilities.
Checklist
Please read https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/CONTRIBUTING.md before opening the merge request. In particular, check that:
-
the subject for all commits is concise and explicative -
the message for all commits explains the reason for the change -
the source is properly formatted -
any relevant documentation is up to date -
you have added unit tests if applicable -
the NEWS file is updated when the change deserves to be mentioned, for example for new features, behavior changes, API deprecations, etc.