Skip to content
Snippets Groups Projects
Commit e3880e6c authored by Jakob Olsson's avatar Jakob Olsson
Browse files

fix client steering CMDU generation via UBUS API

parent 4484d889
No related branches found
No related tags found
3 merge requests!295wifi_opclass: add wifi_radio_opclass_update_channel,!294Revert "fix typo query_channel_pref enum",!293Draft: Janusz cntlr apis
......@@ -1013,15 +1013,12 @@ error:
struct cmdu_buff *cntlr_gen_client_steer_request(struct controller *c,
uint8_t *origin, uint8_t *bssid, uint32_t steer_timeout,
uint32_t sta_nr, uint8_t stas[][6], uint32_t bssid_nr,
uint8_t target_bssid[][6], uint32_t request_mode)
uint8_t target_bssid[][6], bool btm_abridged,
bool btm_disassoc_imminent, uint32_t btm_disassoc_timeout,
uint8_t mbo_reason, bool is_mandate)
{
struct cmdu_buff *frm;
uint16_t mid = 0;
bool is_mandate;
bool btm_abridged;
bool btm_disassoc_imminent;
uint32_t btm_disassoc_timeout;
uint8_t mbo_reason;
int ret;
frm = cmdu_alloc_simple(CMDU_CLIENT_STEERING_REQUEST, &mid);
......@@ -1033,12 +1030,6 @@ struct cmdu_buff *cntlr_gen_client_steer_request(struct controller *c,
dbg("%s %d sta_id " MACFMT "\n", __func__, __LINE__, MAC2STR(stas[0]));
is_mandate = true;
mbo_reason = 0; /* unspecified */
btm_abridged = false;
btm_disassoc_imminent = true;
btm_disassoc_timeout = (steer_timeout * 1000 * 1000) / 1024; /* in TUs */
ret = cntlr_gen_tlv_steer_request(c, frm,
MAP_TLV_STEERING_REQUEST,
bssid,
......@@ -1066,12 +1057,19 @@ int cntlr_send_client_steer_request(struct controller *c,
uint32_t bssid_nr, uint8_t target_bssid[][6], uint32_t request_mode)
{
struct cmdu_buff *cmdu_data = NULL;
bool btm_abridged = false, btm_disassoc_imminent = true, is_mandate = true;
uint32_t btm_disassoc_timeout = (steer_timeout * 1000 * 1000) / 1024; /* in TUs */;
uint8_t mbo_reason = 0; /* unspecified */
trace("%s:--->\n", __func__);
cmdu_data = cntlr_gen_client_steer_request(c, agent_mac, bssid, steer_timeout,
sta_nr, stas, bssid_nr, target_bssid, request_mode);
cmdu_data = cntlr_gen_client_steer_request(c, agent_mac, bssid,
steer_timeout, sta_nr, stas,
bssid_nr, target_bssid,
btm_abridged,
btm_disassoc_imminent,
btm_disassoc_timeout,
mbo_reason, is_mandate);
if (!cmdu_data)
return -1;
......
......@@ -73,7 +73,9 @@ struct cmdu_buff *cntlr_gen_higher_layer_data(struct controller *c,
struct cmdu_buff *cntlr_gen_client_steer_request(struct controller *c,
uint8_t *origin, uint8_t *bssid, uint32_t steer_timeout,
uint32_t sta_nr, uint8_t stas[][6], uint32_t bssid_nr,
uint8_t target_bssid[][6], uint32_t request_mode);
uint8_t target_bssid[][6], bool btm_abridged,
bool btm_disassoc_imminent, uint32_t btm_disassoc_timeout,
uint8_t mbo_reason, bool is_mandate);
struct cmdu_buff *cntlr_gen_comb_infra_metrics_query(struct controller *c,
uint8_t *origin, uint8_t *bssid_mac);
int cntrl_send_channel_preference_query(struct controller *c, uint8_t *agent);
......
......@@ -1000,14 +1000,7 @@ int COMMAND(steer)(void *priv, void *args, void *out)
memcpy(tbssid[0], target_bssid, 6);
/* prepare Client Steer Request */
cmdu = cmdu_alloc_simple(CMDU_CLIENT_STEERING_REQUEST, &mid);
if (!cmdu) {
dbg("%s: -ENOMEM\n", __func__);
return -1;
}
ret = cntlr_gen_tlv_steer_request(c, cmdu,
MAP_TLV_STEERING_REQUEST,
cmdu = cntlr_gen_client_steer_request(c, agent,
s->bssid,
steer_op_window,
1, stas,
......@@ -1017,6 +1010,12 @@ int COMMAND(steer)(void *priv, void *args, void *out)
btm_disassoc_tmo,
mbo_reason,
1);
if (!cmdu) {
dbg("%s: Error generating steer CMDU\n",
__func__);
return -1;
}
} else {
/* select all STAs of Agent in the same band as target_bssid */
struct netif_iface *tfbss = cntlr_iterate_fbss(c, target_bssid);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment