mac: add handling for ackreq default handling
Alexander Aring
maintainerPATCH 1/1 mac: add handling for ackreq default handling
This patch adds support to change the ack request default handling, which indicates the default behaviour for the acknowledge request bit of 802.15.4 frames.
Signed-off-by Alexander Aring <[email protected]>
--- src/interface.c | 2 ++ src/mac.c | 28 ++++++++++++++++++++++++++++ src/nl802154.h | 4 ++++ 3 files changed, 34 insertions(+)
src/interface.c +2 -0
@@ -223,6 +223,8 @@ static int print_iface_handler(struct nl_msg *msg, void *arg)printf ("%s\tmax_csma_backoffs %d\n" , indent,nla_get_u8 (tb_msg[NL802154_ATTR_MAX_CSMA_BACKOFFS ]));if (tb_msg[NL802154_ATTR_LBT_MODE ])printf ("%s\tlbt %d\n" , indent,nla_get_u8 (tb_msg[NL802154_ATTR_LBT_MODE ])); +if (tb_msg[NL802154_ATTR_ACKREQ_DEFAULT ]) +printf ("%s\tackreq_default %d\n" , indent,nla_get_u8 (tb_msg[NL802154_ATTR_ACKREQ_DEFAULT ]));return NL_SKIP ; }
src/mac.c +28 -0
@@ -185,3 +185,31 @@ nla_put_failure: }COMMAND (set, lbt,"<1|0>" ,NL802154_CMD_SET_LBT_MODE ,0 ,CIB_NETDEV , handle_lbt_mode,NULL ); + +static int handle_ackreq_default (struct nl802154_state *state, +struct nl_cb *cb, +struct nl_msg *msg, +int argc,char **argv, +enum id_input id) +{ +unsigned long ackreq; +char *end; + +if (argc <1 ) +return 1 ; + +/* ACKREQ_DEFAULT */ + ackreq =strtoul (argv[0 ], &end,0 ); +if (*end !='\0' ) +return 1 ; + +NLA_PUT_U8 (msg,NL802154_ATTR_ACKREQ_DEFAULT , ackreq); + +return 0 ; + +nla_put_failure: +return -ENOBUFS ; +} +COMMAND (set, ackreq_default,"<1|0>" , +NL802154_CMD_SET_ACKREQ_DEFAULT ,0 ,CIB_NETDEV , handle_ackreq_default, +NULL );
src/nl802154.h +4 -0
@@ -52,6 +52,8 @@ enum nl802154_commands {NL802154_CMD_SET_LBT_MODE , + NL802154_CMD_SET_ACKREQ_DEFAULT, +/* add new commands above here */ /* used to define NL802154_CMD_MAX below */
@@ -104,6 +106,8 @@ enum nl802154_attrs {NL802154_ATTR_SUPPORTED_COMMANDS , +NL802154_ATTR_ACKREQ_DEFAULT , +/* add attributes here, update the policy in nl802154.c */ __NL802154_ATTR_AFTER_LAST,
Signature · 1 line
2.5.0
Hello.
Quoted 74 lines · Alexander Aring
This patch adds support to change the ack request default handling, which indicates the default behaviour for the acknowledge request bit of 802.15.4 frames.
Signed-off-by Alexander Aring <[email protected]>--- src/interface.c | 2 ++ src/mac.c | 28 ++++++++++++++++++++++++++++ src/nl802154.h | 4 ++++ 3 files changed, 34 insertions(+)src/interface.c +2
-0@@ -223,6 +223,8 @@ static int print_iface_handler(struct nl_msg *msg, void *arg)printf ("%s\tmax_csma_backoffs %d\n" , indent,nla_get_u8 (tb_msg[NL802154_ATTR_MAX_CSMA_BACKOFFS ]));if (tb_msg[NL802154_ATTR_LBT_MODE ])printf ("%s\tlbt %d\n" , indent,nla_get_u8 (tb_msg[NL802154_ATTR_LBT_MODE ])); +if (tb_msg[NL802154_ATTR_ACKREQ_DEFAULT ]) +printf ("%s\tackreq_default %d\n" , indent,nla_get_u8 (tb_msg[NL802154_ATTR_ACKREQ_DEFAULT ]));return NL_SKIP ; }src/mac.c +28
-0@@ -185,3 +185,31 @@ nla_put_failure: }COMMAND (set, lbt,"<1|0>" ,NL802154_CMD_SET_LBT_MODE ,0 ,CIB_NETDEV , handle_lbt_mode,NULL ); + +static int handle_ackreq_default (struct nl802154_state *state, +struct nl_cb *cb, +struct nl_msg *msg, +int argc,char **argv, +enum id_input id) +{ +unsigned long ackreq; +char *end; + +if (argc <1 ) +return 1 ; + +/* ACKREQ_DEFAULT */ + ackreq =strtoul (argv[0 ], &end,0 ); +if (*end !='\0' ) +return 1 ; + +NLA_PUT_U8 (msg,NL802154_ATTR_ACKREQ_DEFAULT , ackreq); + +return 0 ; + +nla_put_failure: +return -ENOBUFS ; +} +COMMAND (set, ackreq_default,"<1|0>" , +NL802154_CMD_SET_ACKREQ_DEFAULT ,0 ,CIB_NETDEV , handle_ackreq_default, +NULL );src/nl802154.h +2
-0@@ -52,6 +52,8 @@ enum nl802154_commands {NL802154_CMD_SET_LBT_MODE , + NL802154_CMD_SET_ACKREQ_DEFAULT, +/* add new commands above here */ /* used to define NL802154_CMD_MAX below */
src/nl802154.h enum nl802154_attrs { · line 113
Quoted 8 lines
src/nl802154.h +2
-0@@ -104,6 +106,8 @@ enum nl802154_attrs {NL802154_ATTR_SUPPORTED_COMMANDS , +NL802154_ATTR_ACKREQ_DEFAULT , +/* add attributes here, update the policy in nl802154.c */ __NL802154_ATTR_AFTER_LAST,
Tested this against the kernel patches.
Reviewed-by Stefan Schmidt<[email protected]>
regards
Stefan Schmidt
Alexander Aring
maintainerI added this change to this patch:
src/info.c +1 -0
@@ -212,6 +212,7 @@ static const char *commands[NL802154_CMD_MAX + 1] = { [NL802154_CMD_SET_BACKOFF_EXPONENT] = "set_backoff_exponent", [NL802154_CMD_SET_MAX_CSMA_BACKOFFS] = "set_max_csma_backoffs", [NL802154_CMD_SET_LBT_MODE] = "set_lbt_mode", + [NL802154_CMD_SET_ACKREQ_DEFAULT] = "set_ackreq_default", };static char cmdbuf[100 ];
For dumping that we will support "set_ackreq_default" which all current SoftMAC transceivers supports.
- Alex