mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 06:28:05 +02:00
ethtool: merge branch 'th/ethtool-autoneg-fixes'
https://bugzilla.redhat.com/show_bug.cgi?id=1897004#c10 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/972
This commit is contained in:
commit
52d18db0e3
8 changed files with 2525 additions and 306 deletions
|
|
@ -584,6 +584,7 @@ src_libnm_platform_libnm_platform_la_CPPFLAGS = \
|
|||
|
||||
src_libnm_platform_libnm_platform_la_SOURCES = \
|
||||
\
|
||||
src/linux-headers/ethtool.h \
|
||||
src/linux-headers/nl802154.h \
|
||||
\
|
||||
src/libnm-platform/nm-linux-platform.c \
|
||||
|
|
@ -651,6 +652,8 @@ src_libnm_platform_tests_test_nm_platform_LDFLAGS = \
|
|||
|
||||
src_libnm_platform_tests_test_nm_platform_LDADD = \
|
||||
src/libnm-platform/libnm-platform.la \
|
||||
src/libnm-udev-aux/libnm-udev-aux.la \
|
||||
src/libnm-base/libnm-base.la \
|
||||
src/libnm-log-core/libnm-log-core.la \
|
||||
src/libnm-glib-aux/libnm-glib-aux.la \
|
||||
src/libnm-std-aux/libnm-std-aux.la \
|
||||
|
|
|
|||
|
|
@ -8,15 +8,14 @@ die() {
|
|||
}
|
||||
|
||||
EXCLUDE=(
|
||||
":(exclude)src/c-list"
|
||||
":(exclude)src/c-list"
|
||||
":(exclude)src/c-list"
|
||||
":(exclude)src/c-rbtree"
|
||||
":(exclude)src/c-siphash"
|
||||
":(exclude)src/c-stdaux"
|
||||
":(exclude)src/libnm-std-aux/unaligned.h"
|
||||
":(exclude)src/libnm-systemd-shared/src"
|
||||
":(exclude)src/libnm-systemd-core/src"
|
||||
":(exclude)src/libnm-systemd-shared/src"
|
||||
":(exclude)src/linux-headers"
|
||||
":(exclude)src/n-acd"
|
||||
":(exclude)src/n-dhcp4"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -924,31 +924,33 @@ link_negotiation_set(NMDevice *device)
|
|||
return;
|
||||
}
|
||||
|
||||
/* If link negotiation setting are already in place do nothing and return with success */
|
||||
if (!!autoneg == !!link_autoneg && speed == link_speed && duplex == link_duplex) {
|
||||
_LOGD(LOGD_DEVICE, "set-link: link negotiation is already configured");
|
||||
return;
|
||||
}
|
||||
|
||||
if (autoneg && !speed && !duplex)
|
||||
_LOGD(LOGD_DEVICE, "set-link: configure auto-negotiation");
|
||||
else {
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"set-link: configure %snegotiation (%u Mbit%s, %s duplex%s)",
|
||||
"set-link: configure %snegotiation (%u Mbit, %s duplex)",
|
||||
autoneg ? "auto-" : "static ",
|
||||
speed ?: link_speed,
|
||||
speed ? "" : "*",
|
||||
duplex ? nm_platform_link_duplex_type_to_string(duplex)
|
||||
: nm_platform_link_duplex_type_to_string(link_duplex),
|
||||
duplex ? "" : "*");
|
||||
speed,
|
||||
nm_platform_link_duplex_type_to_string(duplex));
|
||||
}
|
||||
|
||||
if (!priv->ethtool_prev_set) {
|
||||
/* remember the values we had before setting it. */
|
||||
priv->ethtool_prev_autoneg = link_autoneg;
|
||||
priv->ethtool_prev_speed = link_speed;
|
||||
priv->ethtool_prev_duplex = link_duplex;
|
||||
priv->ethtool_prev_set = TRUE;
|
||||
if (link_autoneg) {
|
||||
/* with autoneg, we only support advertising one speed/duplex. Likewise
|
||||
* our nm_platform_ethtool_get_link_settings() can only return the current
|
||||
* speed/duplex, but not all the modes that we were advertising.
|
||||
*
|
||||
* Do the best we can do: remember to re-enable autoneg, but don't restrict
|
||||
* the mode. */
|
||||
priv->ethtool_prev_speed = 0;
|
||||
priv->ethtool_prev_duplex = NM_PLATFORM_LINK_DUPLEX_UNKNOWN;
|
||||
} else {
|
||||
priv->ethtool_prev_speed = link_speed;
|
||||
priv->ethtool_prev_duplex = link_duplex;
|
||||
}
|
||||
priv->ethtool_prev_set = TRUE;
|
||||
}
|
||||
|
||||
if (!nm_platform_ethtool_set_link_settings(nm_device_get_platform(device),
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/sockios.h>
|
||||
#include <linux/mii.h>
|
||||
#include <linux/if.h>
|
||||
|
|
@ -18,6 +17,7 @@
|
|||
#include <fcntl.h>
|
||||
#include <libudev.h>
|
||||
|
||||
#include "linux-headers/ethtool.h"
|
||||
#include "libnm-base/nm-ethtool-base.h"
|
||||
#include "libnm-log-core/nm-logging.h"
|
||||
#include "libnm-glib-aux/nm-time-utils.h"
|
||||
|
|
@ -1331,10 +1331,6 @@ nmp_utils_ethtool_get_link_settings(int ifindex,
|
|||
}
|
||||
|
||||
#define ADVERTISED_INVALID 0
|
||||
#define BASET_ALL_MODES \
|
||||
(ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full | ADVERTISED_100baseT_Half \
|
||||
| ADVERTISED_100baseT_Full | ADVERTISED_1000baseT_Half | ADVERTISED_1000baseT_Full \
|
||||
| ADVERTISED_10000baseT_Full)
|
||||
|
||||
static guint32
|
||||
get_baset_mode(guint32 speed, NMPlatformLinkDuplexType duplex)
|
||||
|
|
@ -1386,6 +1382,96 @@ platform_link_duplex_type_to_native(NMPlatformLinkDuplexType duplex_type, guint8
|
|||
}
|
||||
}
|
||||
|
||||
const guint8 _nmp_link_mode_all_advertised_modes_bits[] = {
|
||||
ETHTOOL_LINK_MODE_10baseT_Half_BIT,
|
||||
ETHTOOL_LINK_MODE_10baseT_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100baseT_Half_BIT,
|
||||
ETHTOOL_LINK_MODE_100baseT_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_1000baseT_Half_BIT,
|
||||
ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_2500baseX_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_1000baseKX_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseKR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseR_FEC_BIT,
|
||||
ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_25000baseCR_Full_BIT,
|
||||
/* 32 bit flags start here. */
|
||||
ETHTOOL_LINK_MODE_25000baseKR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_25000baseSR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_1000baseX_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseCR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseSR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseLR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_10000baseER_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_2500baseT_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_50000baseKR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_50000baseSR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_50000baseCR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_50000baseDR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100baseT1_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_1000baseT1_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseKR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseSR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseCR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100000baseDR_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT,
|
||||
ETHTOOL_LINK_MODE_100baseFX_Half_BIT,
|
||||
ETHTOOL_LINK_MODE_100baseFX_Full_BIT,
|
||||
};
|
||||
|
||||
/* these are the bits from _nmp_link_mode_all_advertised_modes_bits set. */
|
||||
const guint32 _nmp_link_mode_all_advertised_modes[] = {
|
||||
0xfffe903fu,
|
||||
0xfff1ffffu,
|
||||
0x0ffffbffu,
|
||||
};
|
||||
|
||||
static NMOptionBool
|
||||
set_link_settings_new(SocketHandle * shandle,
|
||||
gboolean autoneg,
|
||||
|
|
@ -1396,6 +1482,7 @@ set_link_settings_new(SocketHandle * shandle,
|
|||
gs_free struct ethtool_link_settings *edata = NULL;
|
||||
gsize edata_size;
|
||||
guint nwords;
|
||||
guint i;
|
||||
|
||||
edata0 = (struct ethtool_link_settings){
|
||||
.cmd = ETHTOOL_GLINKSETTINGS,
|
||||
|
|
@ -1421,16 +1508,14 @@ set_link_settings_new(SocketHandle * shandle,
|
|||
|
||||
/* then change the needed ones */
|
||||
edata->cmd = ETHTOOL_SLINKSETTINGS;
|
||||
if (autoneg) {
|
||||
edata->autoneg = AUTONEG_ENABLE;
|
||||
|
||||
/* copy @map_supported to @map_advertising and @map_lp_advertising */
|
||||
memcpy(&edata->link_mode_masks[nwords],
|
||||
&edata->link_mode_masks[0],
|
||||
sizeof(guint32) * nwords);
|
||||
memcpy(&edata->link_mode_masks[nwords * 2],
|
||||
&edata->link_mode_masks[0],
|
||||
sizeof(guint32) * nwords);
|
||||
{
|
||||
const guint32 *v_map_supported = &edata->link_mode_masks[0];
|
||||
guint32 * v_map_advertising = &edata->link_mode_masks[nwords];
|
||||
guint32 * v_map_lp_advertising = &edata->link_mode_masks[2 * nwords];
|
||||
|
||||
memcpy(v_map_advertising, v_map_supported, sizeof(guint32) * nwords);
|
||||
(void) v_map_lp_advertising;
|
||||
|
||||
if (speed != 0) {
|
||||
guint32 mode;
|
||||
|
|
@ -1438,6 +1523,8 @@ set_link_settings_new(SocketHandle * shandle,
|
|||
mode = get_baset_mode(speed, duplex);
|
||||
|
||||
if (mode == ADVERTISED_INVALID) {
|
||||
if (!autoneg)
|
||||
goto set_autoneg;
|
||||
nm_log_trace(LOGD_PLATFORM,
|
||||
"ethtool[%d]: %uBASE-T %s duplex mode cannot be advertised",
|
||||
shandle->ifindex,
|
||||
|
|
@ -1446,8 +1533,9 @@ set_link_settings_new(SocketHandle * shandle,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/* We only support BASE-T modes in the first word */
|
||||
if (!(edata->link_mode_masks[0] & mode)) {
|
||||
if (!(v_map_supported[0] & mode)) {
|
||||
if (!autoneg)
|
||||
goto set_autoneg;
|
||||
nm_log_trace(LOGD_PLATFORM,
|
||||
"ethtool[%d]: device does not support %uBASE-T %s duplex mode",
|
||||
shandle->ifindex,
|
||||
|
|
@ -1456,11 +1544,16 @@ set_link_settings_new(SocketHandle * shandle,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
edata->link_mode_masks[nwords] =
|
||||
(edata->link_mode_masks[nwords] & ~BASET_ALL_MODES) | mode;
|
||||
edata->link_mode_masks[nwords * 2] = edata->link_mode_masks[nwords];
|
||||
for (i = 0; i < (guint) G_N_ELEMENTS(_nmp_link_mode_all_advertised_modes); i++)
|
||||
v_map_advertising[i] &= ~_nmp_link_mode_all_advertised_modes[i];
|
||||
v_map_advertising[0] |= mode;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
set_autoneg:
|
||||
if (autoneg)
|
||||
edata->autoneg = AUTONEG_ENABLE;
|
||||
else {
|
||||
edata->autoneg = AUTONEG_DISABLE;
|
||||
|
||||
if (speed)
|
||||
|
|
@ -1489,6 +1582,13 @@ nmp_utils_ethtool_set_link_settings(int ifindex,
|
|||
|| (!speed && duplex == NM_PLATFORM_LINK_DUPLEX_UNKNOWN),
|
||||
FALSE);
|
||||
|
||||
nm_log_trace(LOGD_PLATFORM,
|
||||
"ethtool[%d]: set link: autoneg=%d, speed=%d, duplex=%s",
|
||||
ifindex,
|
||||
autoneg,
|
||||
speed,
|
||||
nm_platform_link_duplex_type_to_string(duplex));
|
||||
|
||||
ret = set_link_settings_new(&shandle, autoneg, speed, duplex);
|
||||
if (ret != NM_OPTION_BOOL_DEFAULT)
|
||||
return ret;
|
||||
|
|
@ -1501,34 +1601,41 @@ nmp_utils_ethtool_set_link_settings(int ifindex,
|
|||
|
||||
/* then change the needed ones */
|
||||
edata.cmd = ETHTOOL_SSET;
|
||||
if (autoneg) {
|
||||
edata.autoneg = AUTONEG_ENABLE;
|
||||
if (speed == 0)
|
||||
edata.advertising = edata.supported;
|
||||
else {
|
||||
guint32 mode;
|
||||
|
||||
mode = get_baset_mode(speed, duplex);
|
||||
edata.advertising = edata.supported;
|
||||
if (speed != 0) {
|
||||
guint32 mode;
|
||||
|
||||
if (mode == ADVERTISED_INVALID) {
|
||||
nm_log_trace(LOGD_PLATFORM,
|
||||
"ethtool[%d]: %uBASE-T %s duplex mode cannot be advertised",
|
||||
ifindex,
|
||||
speed,
|
||||
nm_platform_link_duplex_type_to_string(duplex));
|
||||
return FALSE;
|
||||
}
|
||||
if (!(edata.supported & mode)) {
|
||||
nm_log_trace(LOGD_PLATFORM,
|
||||
"ethtool[%d]: device does not support %uBASE-T %s duplex mode",
|
||||
ifindex,
|
||||
speed,
|
||||
nm_platform_link_duplex_type_to_string(duplex));
|
||||
return FALSE;
|
||||
}
|
||||
edata.advertising = (edata.supported & ~BASET_ALL_MODES) | mode;
|
||||
mode = get_baset_mode(speed, duplex);
|
||||
|
||||
if (mode == ADVERTISED_INVALID) {
|
||||
if (!autoneg)
|
||||
goto set_autoneg;
|
||||
nm_log_trace(LOGD_PLATFORM,
|
||||
"ethtool[%d]: %uBASE-T %s duplex mode cannot be advertised",
|
||||
ifindex,
|
||||
speed,
|
||||
nm_platform_link_duplex_type_to_string(duplex));
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
if (!(edata.supported & mode)) {
|
||||
if (!autoneg)
|
||||
goto set_autoneg;
|
||||
nm_log_trace(LOGD_PLATFORM,
|
||||
"ethtool[%d]: device does not support %uBASE-T %s duplex mode",
|
||||
ifindex,
|
||||
speed,
|
||||
nm_platform_link_duplex_type_to_string(duplex));
|
||||
return FALSE;
|
||||
}
|
||||
edata.advertising &= ~_nmp_link_mode_all_advertised_modes[0];
|
||||
edata.advertising |= mode;
|
||||
}
|
||||
|
||||
set_autoneg:
|
||||
if (autoneg)
|
||||
edata.autoneg = AUTONEG_ENABLE;
|
||||
else {
|
||||
edata.autoneg = AUTONEG_DISABLE;
|
||||
|
||||
if (speed)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,9 @@ gboolean nmp_utils_ethtool_set_wake_on_lan(int ifindex,
|
|||
|
||||
const char *nm_platform_link_duplex_type_to_string(NMPlatformLinkDuplexType duplex);
|
||||
|
||||
extern const guint8 _nmp_link_mode_all_advertised_modes_bits[79];
|
||||
extern const guint32 _nmp_link_mode_all_advertised_modes[3];
|
||||
|
||||
gboolean nmp_utils_ethtool_get_link_settings(int ifindex,
|
||||
gboolean * out_autoneg,
|
||||
guint32 * out_speed,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include "libnm-log-core/nm-logging.h"
|
||||
#include "libnm-platform/nm-netlink.h"
|
||||
#include "libnm-platform/nmp-netns.h"
|
||||
#include "libnm-platform/nm-platform-utils.h"
|
||||
|
||||
#include "libnm-glib-aux/nm-test-utils.h"
|
||||
|
||||
|
|
@ -103,6 +104,44 @@ test_use_symbols(void)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
test_nmp_link_mode_all_advertised_modes_bits(void)
|
||||
{
|
||||
guint32 flags[(SCHAR_MAX + 1) / 32];
|
||||
guint max_bit;
|
||||
int i;
|
||||
|
||||
memset(flags, 0, sizeof(flags));
|
||||
|
||||
max_bit = 0;
|
||||
for (i = 0; i < (int) G_N_ELEMENTS(_nmp_link_mode_all_advertised_modes_bits); i++) {
|
||||
if (i > 0) {
|
||||
g_assert_cmpint(_nmp_link_mode_all_advertised_modes_bits[i - 1],
|
||||
<,
|
||||
_nmp_link_mode_all_advertised_modes_bits[i]);
|
||||
}
|
||||
g_assert_cmpint(_nmp_link_mode_all_advertised_modes_bits[i], <, SCHAR_MAX);
|
||||
g_assert_cmpint(_nmp_link_mode_all_advertised_modes_bits[i] / 32, <, G_N_ELEMENTS(flags));
|
||||
flags[_nmp_link_mode_all_advertised_modes_bits[i] / 32] |=
|
||||
(1u << (_nmp_link_mode_all_advertised_modes_bits[i] % 32u));
|
||||
max_bit = NM_MAX(max_bit, _nmp_link_mode_all_advertised_modes_bits[i]);
|
||||
}
|
||||
|
||||
g_assert_cmpint((max_bit + 31u) / 32u, ==, G_N_ELEMENTS(_nmp_link_mode_all_advertised_modes));
|
||||
|
||||
for (i = 0; i < (int) G_N_ELEMENTS(_nmp_link_mode_all_advertised_modes); i++) {
|
||||
if (flags[i] != _nmp_link_mode_all_advertised_modes[i]) {
|
||||
g_error("_nmp_link_mode_all_advertised_modes[%d] should be 0x%0x but is 0x%0x "
|
||||
"(according to the bits in _nmp_link_mode_all_advertised_modes_bits)",
|
||||
i,
|
||||
flags[i],
|
||||
_nmp_link_mode_all_advertised_modes[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMTST_DEFINE();
|
||||
|
||||
int
|
||||
|
|
@ -111,6 +150,8 @@ main(int argc, char **argv)
|
|||
nmtst_init(&argc, &argv, TRUE);
|
||||
|
||||
g_test_add_func("/nm-platform/test_use_symbols", test_use_symbols);
|
||||
g_test_add_func("/nm-platform/test_nmp_link_mode_all_advertised_modes_bits",
|
||||
test_nmp_link_mode_all_advertised_modes_bits);
|
||||
|
||||
return g_test_run();
|
||||
}
|
||||
|
|
|
|||
2062
src/linux-headers/ethtool.h
Normal file
2062
src/linux-headers/ethtool.h
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -3,7 +3,7 @@
|
|||
/*
|
||||
* 802.15.4 netlink interface public header
|
||||
*
|
||||
* Copyright (C) 2014 Alexander Aring <aar@pengutronix.de>
|
||||
* Copyright 2014 Alexander Aring <aar@pengutronix.de>
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
|
|
@ -22,144 +22,144 @@
|
|||
#define NL802154_GENL_NAME "nl802154"
|
||||
|
||||
enum nl802154_commands {
|
||||
/* don't change the order or add anything between, this is ABI! */
|
||||
/* currently we don't shipping this file via uapi, ignore the above one */
|
||||
NL802154_CMD_UNSPEC,
|
||||
/* don't change the order or add anything between, this is ABI! */
|
||||
/* currently we don't shipping this file via uapi, ignore the above one */
|
||||
NL802154_CMD_UNSPEC,
|
||||
|
||||
NL802154_CMD_GET_WPAN_PHY, /* can dump */
|
||||
NL802154_CMD_SET_WPAN_PHY,
|
||||
NL802154_CMD_NEW_WPAN_PHY,
|
||||
NL802154_CMD_DEL_WPAN_PHY,
|
||||
NL802154_CMD_GET_WPAN_PHY, /* can dump */
|
||||
NL802154_CMD_SET_WPAN_PHY,
|
||||
NL802154_CMD_NEW_WPAN_PHY,
|
||||
NL802154_CMD_DEL_WPAN_PHY,
|
||||
|
||||
NL802154_CMD_GET_INTERFACE, /* can dump */
|
||||
NL802154_CMD_SET_INTERFACE,
|
||||
NL802154_CMD_NEW_INTERFACE,
|
||||
NL802154_CMD_DEL_INTERFACE,
|
||||
NL802154_CMD_GET_INTERFACE, /* can dump */
|
||||
NL802154_CMD_SET_INTERFACE,
|
||||
NL802154_CMD_NEW_INTERFACE,
|
||||
NL802154_CMD_DEL_INTERFACE,
|
||||
|
||||
NL802154_CMD_SET_CHANNEL,
|
||||
NL802154_CMD_SET_CHANNEL,
|
||||
|
||||
NL802154_CMD_SET_PAN_ID,
|
||||
NL802154_CMD_SET_SHORT_ADDR,
|
||||
NL802154_CMD_SET_PAN_ID,
|
||||
NL802154_CMD_SET_SHORT_ADDR,
|
||||
|
||||
NL802154_CMD_SET_TX_POWER,
|
||||
NL802154_CMD_SET_CCA_MODE,
|
||||
NL802154_CMD_SET_CCA_ED_LEVEL,
|
||||
NL802154_CMD_SET_TX_POWER,
|
||||
NL802154_CMD_SET_CCA_MODE,
|
||||
NL802154_CMD_SET_CCA_ED_LEVEL,
|
||||
|
||||
NL802154_CMD_SET_MAX_FRAME_RETRIES,
|
||||
NL802154_CMD_SET_MAX_FRAME_RETRIES,
|
||||
|
||||
NL802154_CMD_SET_BACKOFF_EXPONENT,
|
||||
NL802154_CMD_SET_MAX_CSMA_BACKOFFS,
|
||||
NL802154_CMD_SET_BACKOFF_EXPONENT,
|
||||
NL802154_CMD_SET_MAX_CSMA_BACKOFFS,
|
||||
|
||||
NL802154_CMD_SET_LBT_MODE,
|
||||
NL802154_CMD_SET_LBT_MODE,
|
||||
|
||||
NL802154_CMD_SET_ACKREQ_DEFAULT,
|
||||
NL802154_CMD_SET_ACKREQ_DEFAULT,
|
||||
|
||||
NL802154_CMD_SET_WPAN_PHY_NETNS,
|
||||
NL802154_CMD_SET_WPAN_PHY_NETNS,
|
||||
|
||||
/* add new commands above here */
|
||||
/* add new commands above here */
|
||||
|
||||
#ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL
|
||||
NL802154_CMD_SET_SEC_PARAMS,
|
||||
NL802154_CMD_GET_SEC_KEY, /* can dump */
|
||||
NL802154_CMD_NEW_SEC_KEY,
|
||||
NL802154_CMD_DEL_SEC_KEY,
|
||||
NL802154_CMD_GET_SEC_DEV, /* can dump */
|
||||
NL802154_CMD_NEW_SEC_DEV,
|
||||
NL802154_CMD_DEL_SEC_DEV,
|
||||
NL802154_CMD_GET_SEC_DEVKEY, /* can dump */
|
||||
NL802154_CMD_NEW_SEC_DEVKEY,
|
||||
NL802154_CMD_DEL_SEC_DEVKEY,
|
||||
NL802154_CMD_GET_SEC_LEVEL, /* can dump */
|
||||
NL802154_CMD_NEW_SEC_LEVEL,
|
||||
NL802154_CMD_DEL_SEC_LEVEL,
|
||||
NL802154_CMD_SET_SEC_PARAMS,
|
||||
NL802154_CMD_GET_SEC_KEY, /* can dump */
|
||||
NL802154_CMD_NEW_SEC_KEY,
|
||||
NL802154_CMD_DEL_SEC_KEY,
|
||||
NL802154_CMD_GET_SEC_DEV, /* can dump */
|
||||
NL802154_CMD_NEW_SEC_DEV,
|
||||
NL802154_CMD_DEL_SEC_DEV,
|
||||
NL802154_CMD_GET_SEC_DEVKEY, /* can dump */
|
||||
NL802154_CMD_NEW_SEC_DEVKEY,
|
||||
NL802154_CMD_DEL_SEC_DEVKEY,
|
||||
NL802154_CMD_GET_SEC_LEVEL, /* can dump */
|
||||
NL802154_CMD_NEW_SEC_LEVEL,
|
||||
NL802154_CMD_DEL_SEC_LEVEL,
|
||||
#endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */
|
||||
|
||||
/* used to define NL802154_CMD_MAX below */
|
||||
__NL802154_CMD_AFTER_LAST,
|
||||
NL802154_CMD_MAX = __NL802154_CMD_AFTER_LAST - 1
|
||||
/* used to define NL802154_CMD_MAX below */
|
||||
__NL802154_CMD_AFTER_LAST,
|
||||
NL802154_CMD_MAX = __NL802154_CMD_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_attrs {
|
||||
/* don't change the order or add anything between, this is ABI! */
|
||||
/* currently we don't shipping this file via uapi, ignore the above one */
|
||||
NL802154_ATTR_UNSPEC,
|
||||
/* don't change the order or add anything between, this is ABI! */
|
||||
/* currently we don't shipping this file via uapi, ignore the above one */
|
||||
NL802154_ATTR_UNSPEC,
|
||||
|
||||
NL802154_ATTR_WPAN_PHY,
|
||||
NL802154_ATTR_WPAN_PHY_NAME,
|
||||
NL802154_ATTR_WPAN_PHY,
|
||||
NL802154_ATTR_WPAN_PHY_NAME,
|
||||
|
||||
NL802154_ATTR_IFINDEX,
|
||||
NL802154_ATTR_IFNAME,
|
||||
NL802154_ATTR_IFTYPE,
|
||||
NL802154_ATTR_IFINDEX,
|
||||
NL802154_ATTR_IFNAME,
|
||||
NL802154_ATTR_IFTYPE,
|
||||
|
||||
NL802154_ATTR_WPAN_DEV,
|
||||
NL802154_ATTR_WPAN_DEV,
|
||||
|
||||
NL802154_ATTR_PAGE,
|
||||
NL802154_ATTR_CHANNEL,
|
||||
NL802154_ATTR_PAGE,
|
||||
NL802154_ATTR_CHANNEL,
|
||||
|
||||
NL802154_ATTR_PAN_ID,
|
||||
NL802154_ATTR_SHORT_ADDR,
|
||||
NL802154_ATTR_PAN_ID,
|
||||
NL802154_ATTR_SHORT_ADDR,
|
||||
|
||||
NL802154_ATTR_TX_POWER,
|
||||
NL802154_ATTR_TX_POWER,
|
||||
|
||||
NL802154_ATTR_CCA_MODE,
|
||||
NL802154_ATTR_CCA_OPT,
|
||||
NL802154_ATTR_CCA_ED_LEVEL,
|
||||
NL802154_ATTR_CCA_MODE,
|
||||
NL802154_ATTR_CCA_OPT,
|
||||
NL802154_ATTR_CCA_ED_LEVEL,
|
||||
|
||||
NL802154_ATTR_MAX_FRAME_RETRIES,
|
||||
NL802154_ATTR_MAX_FRAME_RETRIES,
|
||||
|
||||
NL802154_ATTR_MAX_BE,
|
||||
NL802154_ATTR_MIN_BE,
|
||||
NL802154_ATTR_MAX_CSMA_BACKOFFS,
|
||||
NL802154_ATTR_MAX_BE,
|
||||
NL802154_ATTR_MIN_BE,
|
||||
NL802154_ATTR_MAX_CSMA_BACKOFFS,
|
||||
|
||||
NL802154_ATTR_LBT_MODE,
|
||||
NL802154_ATTR_LBT_MODE,
|
||||
|
||||
NL802154_ATTR_GENERATION,
|
||||
NL802154_ATTR_GENERATION,
|
||||
|
||||
NL802154_ATTR_CHANNELS_SUPPORTED,
|
||||
NL802154_ATTR_SUPPORTED_CHANNEL,
|
||||
NL802154_ATTR_CHANNELS_SUPPORTED,
|
||||
NL802154_ATTR_SUPPORTED_CHANNEL,
|
||||
|
||||
NL802154_ATTR_EXTENDED_ADDR,
|
||||
NL802154_ATTR_EXTENDED_ADDR,
|
||||
|
||||
NL802154_ATTR_WPAN_PHY_CAPS,
|
||||
NL802154_ATTR_WPAN_PHY_CAPS,
|
||||
|
||||
NL802154_ATTR_SUPPORTED_COMMANDS,
|
||||
NL802154_ATTR_SUPPORTED_COMMANDS,
|
||||
|
||||
NL802154_ATTR_ACKREQ_DEFAULT,
|
||||
NL802154_ATTR_ACKREQ_DEFAULT,
|
||||
|
||||
NL802154_ATTR_PAD,
|
||||
NL802154_ATTR_PAD,
|
||||
|
||||
NL802154_ATTR_PID,
|
||||
NL802154_ATTR_NETNS_FD,
|
||||
NL802154_ATTR_PID,
|
||||
NL802154_ATTR_NETNS_FD,
|
||||
|
||||
/* add attributes here, update the policy in nl802154.c */
|
||||
/* add attributes here, update the policy in nl802154.c */
|
||||
|
||||
#ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL
|
||||
NL802154_ATTR_SEC_ENABLED,
|
||||
NL802154_ATTR_SEC_OUT_LEVEL,
|
||||
NL802154_ATTR_SEC_OUT_KEY_ID,
|
||||
NL802154_ATTR_SEC_FRAME_COUNTER,
|
||||
NL802154_ATTR_SEC_ENABLED,
|
||||
NL802154_ATTR_SEC_OUT_LEVEL,
|
||||
NL802154_ATTR_SEC_OUT_KEY_ID,
|
||||
NL802154_ATTR_SEC_FRAME_COUNTER,
|
||||
|
||||
NL802154_ATTR_SEC_LEVEL,
|
||||
NL802154_ATTR_SEC_DEVICE,
|
||||
NL802154_ATTR_SEC_DEVKEY,
|
||||
NL802154_ATTR_SEC_KEY,
|
||||
NL802154_ATTR_SEC_LEVEL,
|
||||
NL802154_ATTR_SEC_DEVICE,
|
||||
NL802154_ATTR_SEC_DEVKEY,
|
||||
NL802154_ATTR_SEC_KEY,
|
||||
#endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */
|
||||
|
||||
__NL802154_ATTR_AFTER_LAST,
|
||||
NL802154_ATTR_MAX = __NL802154_ATTR_AFTER_LAST - 1
|
||||
__NL802154_ATTR_AFTER_LAST,
|
||||
NL802154_ATTR_MAX = __NL802154_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_iftype {
|
||||
/* for backwards compatibility TODO */
|
||||
NL802154_IFTYPE_UNSPEC = -1,
|
||||
/* for backwards compatibility TODO */
|
||||
NL802154_IFTYPE_UNSPEC = -1,
|
||||
|
||||
NL802154_IFTYPE_NODE,
|
||||
NL802154_IFTYPE_MONITOR,
|
||||
NL802154_IFTYPE_COORD,
|
||||
NL802154_IFTYPE_NODE,
|
||||
NL802154_IFTYPE_MONITOR,
|
||||
NL802154_IFTYPE_COORD,
|
||||
|
||||
/* keep last */
|
||||
NUM_NL802154_IFTYPES,
|
||||
NL802154_IFTYPE_MAX = NUM_NL802154_IFTYPES - 1
|
||||
/* keep last */
|
||||
NUM_NL802154_IFTYPES,
|
||||
NL802154_IFTYPE_MAX = NUM_NL802154_IFTYPES - 1
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -167,7 +167,8 @@ enum nl802154_iftype {
|
|||
*
|
||||
* @__NL802154_CAP_ATTR_INVALID: attribute number 0 is reserved
|
||||
* @NL802154_CAP_ATTR_CHANNELS: a nested attribute for nl802154_channel_attr
|
||||
* @NL802154_CAP_ATTR_TX_POWERS: a nested attribute for nl802154_wpan_phy_tx_power
|
||||
* @NL802154_CAP_ATTR_TX_POWERS: a nested attribute for
|
||||
* nl802154_wpan_phy_tx_power
|
||||
* @NL802154_CAP_ATTR_MIN_CCA_ED_LEVEL: minimum value for cca_ed_level
|
||||
* @NL802154_CAP_ATTR_MAX_CCA_ED_LEVEL: maxmimum value for cca_ed_level
|
||||
* @NL802154_CAP_ATTR_CCA_MODES: nl802154_cca_modes flags
|
||||
|
|
@ -186,34 +187,34 @@ enum nl802154_iftype {
|
|||
* @__NL802154_CAP_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl802154_wpan_phy_capability_attr {
|
||||
__NL802154_CAP_ATTR_INVALID,
|
||||
__NL802154_CAP_ATTR_INVALID,
|
||||
|
||||
NL802154_CAP_ATTR_IFTYPES,
|
||||
NL802154_CAP_ATTR_IFTYPES,
|
||||
|
||||
NL802154_CAP_ATTR_CHANNELS,
|
||||
NL802154_CAP_ATTR_TX_POWERS,
|
||||
NL802154_CAP_ATTR_CHANNELS,
|
||||
NL802154_CAP_ATTR_TX_POWERS,
|
||||
|
||||
NL802154_CAP_ATTR_CCA_ED_LEVELS,
|
||||
NL802154_CAP_ATTR_CCA_MODES,
|
||||
NL802154_CAP_ATTR_CCA_OPTS,
|
||||
NL802154_CAP_ATTR_CCA_ED_LEVELS,
|
||||
NL802154_CAP_ATTR_CCA_MODES,
|
||||
NL802154_CAP_ATTR_CCA_OPTS,
|
||||
|
||||
NL802154_CAP_ATTR_MIN_MINBE,
|
||||
NL802154_CAP_ATTR_MAX_MINBE,
|
||||
NL802154_CAP_ATTR_MIN_MINBE,
|
||||
NL802154_CAP_ATTR_MAX_MINBE,
|
||||
|
||||
NL802154_CAP_ATTR_MIN_MAXBE,
|
||||
NL802154_CAP_ATTR_MAX_MAXBE,
|
||||
NL802154_CAP_ATTR_MIN_MAXBE,
|
||||
NL802154_CAP_ATTR_MAX_MAXBE,
|
||||
|
||||
NL802154_CAP_ATTR_MIN_CSMA_BACKOFFS,
|
||||
NL802154_CAP_ATTR_MAX_CSMA_BACKOFFS,
|
||||
NL802154_CAP_ATTR_MIN_CSMA_BACKOFFS,
|
||||
NL802154_CAP_ATTR_MAX_CSMA_BACKOFFS,
|
||||
|
||||
NL802154_CAP_ATTR_MIN_FRAME_RETRIES,
|
||||
NL802154_CAP_ATTR_MAX_FRAME_RETRIES,
|
||||
NL802154_CAP_ATTR_MIN_FRAME_RETRIES,
|
||||
NL802154_CAP_ATTR_MAX_FRAME_RETRIES,
|
||||
|
||||
NL802154_CAP_ATTR_LBT,
|
||||
NL802154_CAP_ATTR_LBT,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_CAP_ATTR_AFTER_LAST,
|
||||
NL802154_CAP_ATTR_MAX = __NL802154_CAP_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_CAP_ATTR_AFTER_LAST,
|
||||
NL802154_CAP_ATTR_MAX = __NL802154_CAP_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -225,22 +226,23 @@ enum nl802154_wpan_phy_capability_attr {
|
|||
* @NL802154_CCA_ENERGY_CARRIER: Carrier sense with energy above threshold
|
||||
* @NL802154_CCA_ALOHA: CCA shall always report an idle medium
|
||||
* @NL802154_CCA_UWB_SHR: UWB preamble sense based on the SHR of a frame
|
||||
* @NL802154_CCA_UWB_MULTIPLEXED: UWB preamble sense based on the packet with the multiplexed preamble
|
||||
* @NL802154_CCA_UWB_MULTIPLEXED: UWB preamble sense based on the packet with
|
||||
* the multiplexed preamble
|
||||
* @__NL802154_CCA_ATTR_AFTER_LAST: Internal
|
||||
* @NL802154_CCA_ATTR_MAX: Maximum CCA attribute number
|
||||
*/
|
||||
enum nl802154_cca_modes {
|
||||
__NL802154_CCA_INVALID,
|
||||
NL802154_CCA_ENERGY,
|
||||
NL802154_CCA_CARRIER,
|
||||
NL802154_CCA_ENERGY_CARRIER,
|
||||
NL802154_CCA_ALOHA,
|
||||
NL802154_CCA_UWB_SHR,
|
||||
NL802154_CCA_UWB_MULTIPLEXED,
|
||||
__NL802154_CCA_INVALID,
|
||||
NL802154_CCA_ENERGY,
|
||||
NL802154_CCA_CARRIER,
|
||||
NL802154_CCA_ENERGY_CARRIER,
|
||||
NL802154_CCA_ALOHA,
|
||||
NL802154_CCA_UWB_SHR,
|
||||
NL802154_CCA_UWB_MULTIPLEXED,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_CCA_ATTR_AFTER_LAST,
|
||||
NL802154_CCA_ATTR_MAX = __NL802154_CCA_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_CCA_ATTR_AFTER_LAST,
|
||||
NL802154_CCA_ATTR_MAX = __NL802154_CCA_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -250,12 +252,12 @@ enum nl802154_cca_modes {
|
|||
* @NL802154_CCA_OPT_ENERGY_CARRIER_AND: NL802154_CCA_ENERGY_CARRIER with AND
|
||||
*/
|
||||
enum nl802154_cca_opts {
|
||||
NL802154_CCA_OPT_ENERGY_CARRIER_AND,
|
||||
NL802154_CCA_OPT_ENERGY_CARRIER_OR,
|
||||
NL802154_CCA_OPT_ENERGY_CARRIER_AND,
|
||||
NL802154_CCA_OPT_ENERGY_CARRIER_OR,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_CCA_OPT_ATTR_AFTER_LAST,
|
||||
NL802154_CCA_OPT_ATTR_MAX = __NL802154_CCA_OPT_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_CCA_OPT_ATTR_AFTER_LAST,
|
||||
NL802154_CCA_OPT_ATTR_MAX = __NL802154_CCA_OPT_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -269,181 +271,181 @@ enum nl802154_cca_opts {
|
|||
* @NL802154_SUPPORTED_BOOL_MAX: highest value for bool states
|
||||
*/
|
||||
enum nl802154_supported_bool_states {
|
||||
NL802154_SUPPORTED_BOOL_FALSE,
|
||||
NL802154_SUPPORTED_BOOL_TRUE,
|
||||
/* to handle them in a mask */
|
||||
__NL802154_SUPPORTED_BOOL_INVALD,
|
||||
NL802154_SUPPORTED_BOOL_BOTH,
|
||||
NL802154_SUPPORTED_BOOL_FALSE,
|
||||
NL802154_SUPPORTED_BOOL_TRUE,
|
||||
/* to handle them in a mask */
|
||||
__NL802154_SUPPORTED_BOOL_INVALD,
|
||||
NL802154_SUPPORTED_BOOL_BOTH,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_SUPPORTED_BOOL_AFTER_LAST,
|
||||
NL802154_SUPPORTED_BOOL_MAX = __NL802154_SUPPORTED_BOOL_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_SUPPORTED_BOOL_AFTER_LAST,
|
||||
NL802154_SUPPORTED_BOOL_MAX = __NL802154_SUPPORTED_BOOL_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
#ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL
|
||||
|
||||
enum nl802154_dev_addr_modes {
|
||||
NL802154_DEV_ADDR_NONE,
|
||||
__NL802154_DEV_ADDR_INVALID,
|
||||
NL802154_DEV_ADDR_SHORT,
|
||||
NL802154_DEV_ADDR_EXTENDED,
|
||||
NL802154_DEV_ADDR_NONE,
|
||||
__NL802154_DEV_ADDR_INVALID,
|
||||
NL802154_DEV_ADDR_SHORT,
|
||||
NL802154_DEV_ADDR_EXTENDED,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_DEV_ADDR_AFTER_LAST,
|
||||
NL802154_DEV_ADDR_MAX = __NL802154_DEV_ADDR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_DEV_ADDR_AFTER_LAST,
|
||||
NL802154_DEV_ADDR_MAX = __NL802154_DEV_ADDR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_dev_addr_attrs {
|
||||
NL802154_DEV_ADDR_ATTR_UNSPEC,
|
||||
NL802154_DEV_ADDR_ATTR_UNSPEC,
|
||||
|
||||
NL802154_DEV_ADDR_ATTR_PAN_ID,
|
||||
NL802154_DEV_ADDR_ATTR_MODE,
|
||||
NL802154_DEV_ADDR_ATTR_SHORT,
|
||||
NL802154_DEV_ADDR_ATTR_EXTENDED,
|
||||
NL802154_DEV_ADDR_ATTR_PAD,
|
||||
NL802154_DEV_ADDR_ATTR_PAN_ID,
|
||||
NL802154_DEV_ADDR_ATTR_MODE,
|
||||
NL802154_DEV_ADDR_ATTR_SHORT,
|
||||
NL802154_DEV_ADDR_ATTR_EXTENDED,
|
||||
NL802154_DEV_ADDR_ATTR_PAD,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_DEV_ADDR_ATTR_AFTER_LAST,
|
||||
NL802154_DEV_ADDR_ATTR_MAX = __NL802154_DEV_ADDR_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_DEV_ADDR_ATTR_AFTER_LAST,
|
||||
NL802154_DEV_ADDR_ATTR_MAX = __NL802154_DEV_ADDR_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_key_id_modes {
|
||||
NL802154_KEY_ID_MODE_IMPLICIT,
|
||||
NL802154_KEY_ID_MODE_INDEX,
|
||||
NL802154_KEY_ID_MODE_INDEX_SHORT,
|
||||
NL802154_KEY_ID_MODE_INDEX_EXTENDED,
|
||||
NL802154_KEY_ID_MODE_IMPLICIT,
|
||||
NL802154_KEY_ID_MODE_INDEX,
|
||||
NL802154_KEY_ID_MODE_INDEX_SHORT,
|
||||
NL802154_KEY_ID_MODE_INDEX_EXTENDED,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_KEY_ID_MODE_AFTER_LAST,
|
||||
NL802154_KEY_ID_MODE_MAX = __NL802154_KEY_ID_MODE_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_KEY_ID_MODE_AFTER_LAST,
|
||||
NL802154_KEY_ID_MODE_MAX = __NL802154_KEY_ID_MODE_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_key_id_attrs {
|
||||
NL802154_KEY_ID_ATTR_UNSPEC,
|
||||
NL802154_KEY_ID_ATTR_UNSPEC,
|
||||
|
||||
NL802154_KEY_ID_ATTR_MODE,
|
||||
NL802154_KEY_ID_ATTR_INDEX,
|
||||
NL802154_KEY_ID_ATTR_IMPLICIT,
|
||||
NL802154_KEY_ID_ATTR_SOURCE_SHORT,
|
||||
NL802154_KEY_ID_ATTR_SOURCE_EXTENDED,
|
||||
NL802154_KEY_ID_ATTR_PAD,
|
||||
NL802154_KEY_ID_ATTR_MODE,
|
||||
NL802154_KEY_ID_ATTR_INDEX,
|
||||
NL802154_KEY_ID_ATTR_IMPLICIT,
|
||||
NL802154_KEY_ID_ATTR_SOURCE_SHORT,
|
||||
NL802154_KEY_ID_ATTR_SOURCE_EXTENDED,
|
||||
NL802154_KEY_ID_ATTR_PAD,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_KEY_ID_ATTR_AFTER_LAST,
|
||||
NL802154_KEY_ID_ATTR_MAX = __NL802154_KEY_ID_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_KEY_ID_ATTR_AFTER_LAST,
|
||||
NL802154_KEY_ID_ATTR_MAX = __NL802154_KEY_ID_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_seclevels {
|
||||
NL802154_SECLEVEL_NONE,
|
||||
NL802154_SECLEVEL_MIC32,
|
||||
NL802154_SECLEVEL_MIC64,
|
||||
NL802154_SECLEVEL_MIC128,
|
||||
NL802154_SECLEVEL_ENC,
|
||||
NL802154_SECLEVEL_ENC_MIC32,
|
||||
NL802154_SECLEVEL_ENC_MIC64,
|
||||
NL802154_SECLEVEL_ENC_MIC128,
|
||||
NL802154_SECLEVEL_NONE,
|
||||
NL802154_SECLEVEL_MIC32,
|
||||
NL802154_SECLEVEL_MIC64,
|
||||
NL802154_SECLEVEL_MIC128,
|
||||
NL802154_SECLEVEL_ENC,
|
||||
NL802154_SECLEVEL_ENC_MIC32,
|
||||
NL802154_SECLEVEL_ENC_MIC64,
|
||||
NL802154_SECLEVEL_ENC_MIC128,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_SECLEVEL_AFTER_LAST,
|
||||
NL802154_SECLEVEL_MAX = __NL802154_SECLEVEL_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_SECLEVEL_AFTER_LAST,
|
||||
NL802154_SECLEVEL_MAX = __NL802154_SECLEVEL_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_frames {
|
||||
NL802154_FRAME_BEACON,
|
||||
NL802154_FRAME_DATA,
|
||||
NL802154_FRAME_ACK,
|
||||
NL802154_FRAME_CMD,
|
||||
NL802154_FRAME_BEACON,
|
||||
NL802154_FRAME_DATA,
|
||||
NL802154_FRAME_ACK,
|
||||
NL802154_FRAME_CMD,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_FRAME_AFTER_LAST,
|
||||
NL802154_FRAME_MAX = __NL802154_FRAME_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_FRAME_AFTER_LAST,
|
||||
NL802154_FRAME_MAX = __NL802154_FRAME_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_cmd_frames {
|
||||
__NL802154_CMD_FRAME_INVALID,
|
||||
NL802154_CMD_FRAME_ASSOC_REQUEST,
|
||||
NL802154_CMD_FRAME_ASSOC_RESPONSE,
|
||||
NL802154_CMD_FRAME_DISASSOC_NOTIFY,
|
||||
NL802154_CMD_FRAME_DATA_REQUEST,
|
||||
NL802154_CMD_FRAME_PAN_ID_CONFLICT_NOTIFY,
|
||||
NL802154_CMD_FRAME_ORPHAN_NOTIFY,
|
||||
NL802154_CMD_FRAME_BEACON_REQUEST,
|
||||
NL802154_CMD_FRAME_COORD_REALIGNMENT,
|
||||
NL802154_CMD_FRAME_GTS_REQUEST,
|
||||
__NL802154_CMD_FRAME_INVALID,
|
||||
NL802154_CMD_FRAME_ASSOC_REQUEST,
|
||||
NL802154_CMD_FRAME_ASSOC_RESPONSE,
|
||||
NL802154_CMD_FRAME_DISASSOC_NOTIFY,
|
||||
NL802154_CMD_FRAME_DATA_REQUEST,
|
||||
NL802154_CMD_FRAME_PAN_ID_CONFLICT_NOTIFY,
|
||||
NL802154_CMD_FRAME_ORPHAN_NOTIFY,
|
||||
NL802154_CMD_FRAME_BEACON_REQUEST,
|
||||
NL802154_CMD_FRAME_COORD_REALIGNMENT,
|
||||
NL802154_CMD_FRAME_GTS_REQUEST,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_CMD_FRAME_AFTER_LAST,
|
||||
NL802154_CMD_FRAME_MAX = __NL802154_CMD_FRAME_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_CMD_FRAME_AFTER_LAST,
|
||||
NL802154_CMD_FRAME_MAX = __NL802154_CMD_FRAME_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_seclevel_attrs {
|
||||
NL802154_SECLEVEL_ATTR_UNSPEC,
|
||||
NL802154_SECLEVEL_ATTR_UNSPEC,
|
||||
|
||||
NL802154_SECLEVEL_ATTR_LEVELS,
|
||||
NL802154_SECLEVEL_ATTR_FRAME,
|
||||
NL802154_SECLEVEL_ATTR_CMD_FRAME,
|
||||
NL802154_SECLEVEL_ATTR_DEV_OVERRIDE,
|
||||
NL802154_SECLEVEL_ATTR_LEVELS,
|
||||
NL802154_SECLEVEL_ATTR_FRAME,
|
||||
NL802154_SECLEVEL_ATTR_CMD_FRAME,
|
||||
NL802154_SECLEVEL_ATTR_DEV_OVERRIDE,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_SECLEVEL_ATTR_AFTER_LAST,
|
||||
NL802154_SECLEVEL_ATTR_MAX = __NL802154_SECLEVEL_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_SECLEVEL_ATTR_AFTER_LAST,
|
||||
NL802154_SECLEVEL_ATTR_MAX = __NL802154_SECLEVEL_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/* TODO what is this? couldn't find in mib */
|
||||
enum {
|
||||
NL802154_DEVKEY_IGNORE,
|
||||
NL802154_DEVKEY_RESTRICT,
|
||||
NL802154_DEVKEY_RECORD,
|
||||
NL802154_DEVKEY_IGNORE,
|
||||
NL802154_DEVKEY_RESTRICT,
|
||||
NL802154_DEVKEY_RECORD,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_DEVKEY_AFTER_LAST,
|
||||
NL802154_DEVKEY_MAX = __NL802154_DEVKEY_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_DEVKEY_AFTER_LAST,
|
||||
NL802154_DEVKEY_MAX = __NL802154_DEVKEY_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_dev {
|
||||
NL802154_DEV_ATTR_UNSPEC,
|
||||
NL802154_DEV_ATTR_UNSPEC,
|
||||
|
||||
NL802154_DEV_ATTR_FRAME_COUNTER,
|
||||
NL802154_DEV_ATTR_PAN_ID,
|
||||
NL802154_DEV_ATTR_SHORT_ADDR,
|
||||
NL802154_DEV_ATTR_EXTENDED_ADDR,
|
||||
NL802154_DEV_ATTR_SECLEVEL_EXEMPT,
|
||||
NL802154_DEV_ATTR_KEY_MODE,
|
||||
NL802154_DEV_ATTR_PAD,
|
||||
NL802154_DEV_ATTR_FRAME_COUNTER,
|
||||
NL802154_DEV_ATTR_PAN_ID,
|
||||
NL802154_DEV_ATTR_SHORT_ADDR,
|
||||
NL802154_DEV_ATTR_EXTENDED_ADDR,
|
||||
NL802154_DEV_ATTR_SECLEVEL_EXEMPT,
|
||||
NL802154_DEV_ATTR_KEY_MODE,
|
||||
NL802154_DEV_ATTR_PAD,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_DEV_ATTR_AFTER_LAST,
|
||||
NL802154_DEV_ATTR_MAX = __NL802154_DEV_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_DEV_ATTR_AFTER_LAST,
|
||||
NL802154_DEV_ATTR_MAX = __NL802154_DEV_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_devkey {
|
||||
NL802154_DEVKEY_ATTR_UNSPEC,
|
||||
NL802154_DEVKEY_ATTR_UNSPEC,
|
||||
|
||||
NL802154_DEVKEY_ATTR_FRAME_COUNTER,
|
||||
NL802154_DEVKEY_ATTR_EXTENDED_ADDR,
|
||||
NL802154_DEVKEY_ATTR_ID,
|
||||
NL802154_DEVKEY_ATTR_PAD,
|
||||
NL802154_DEVKEY_ATTR_FRAME_COUNTER,
|
||||
NL802154_DEVKEY_ATTR_EXTENDED_ADDR,
|
||||
NL802154_DEVKEY_ATTR_ID,
|
||||
NL802154_DEVKEY_ATTR_PAD,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_DEVKEY_ATTR_AFTER_LAST,
|
||||
NL802154_DEVKEY_ATTR_MAX = __NL802154_DEVKEY_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_DEVKEY_ATTR_AFTER_LAST,
|
||||
NL802154_DEVKEY_ATTR_MAX = __NL802154_DEVKEY_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
enum nl802154_key {
|
||||
NL802154_KEY_ATTR_UNSPEC,
|
||||
NL802154_KEY_ATTR_UNSPEC,
|
||||
|
||||
NL802154_KEY_ATTR_ID,
|
||||
NL802154_KEY_ATTR_USAGE_FRAMES,
|
||||
NL802154_KEY_ATTR_USAGE_CMDS,
|
||||
NL802154_KEY_ATTR_BYTES,
|
||||
NL802154_KEY_ATTR_ID,
|
||||
NL802154_KEY_ATTR_USAGE_FRAMES,
|
||||
NL802154_KEY_ATTR_USAGE_CMDS,
|
||||
NL802154_KEY_ATTR_BYTES,
|
||||
|
||||
/* keep last */
|
||||
__NL802154_KEY_ATTR_AFTER_LAST,
|
||||
NL802154_KEY_ATTR_MAX = __NL802154_KEY_ATTR_AFTER_LAST - 1
|
||||
/* keep last */
|
||||
__NL802154_KEY_ATTR_AFTER_LAST,
|
||||
NL802154_KEY_ATTR_MAX = __NL802154_KEY_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
#define NL802154_KEY_SIZE 16
|
||||
#define NL802154_CMD_FRAME_NR_IDS 256
|
||||
#define NL802154_KEY_SIZE 16
|
||||
#define NL802154_CMD_FRAME_NR_IDS 256
|
||||
|
||||
#endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue