utils: cleanup

Move some RRM utility functions around to simplify code structure / #includes.

[fix commit message]
Signed-off-by: Nick Hainke <vincent@systemli.org>
This commit is contained in:
Ian Clowes 2022-01-31 10:47:32 +00:00 committed by Nick Hainke
parent 0e4fc507cb
commit 8bae43c811
5 changed files with 72 additions and 91 deletions

View file

@ -6,21 +6,13 @@
#include <time.h> #include <time.h>
#include <limits.h> #include <limits.h>
#include "ieee80211_utils.h"
#include "mac_utils.h" #include "mac_utils.h"
#include "utils.h" #include "utils.h"
/* Mac */ /* Mac */
// ---------------- Defines ------------------- // ---------------- Defines -------------------
#define DEFAULT_RRM_MODE_ORDER "pat"
#define RRM_MODE_COUNT 3
enum rrm_beacon_rqst_mode {
RRM_BEACON_RQST_MODE_PASSIVE,
RRM_BEACON_RQST_MODE_ACTIVE,
RRM_BEACON_RQST_MODE_BEACON_TABLE,
__RRM_BEACON_RQST_MODE_MAX
};
// ---------------- Global variables ---------------- // ---------------- Global variables ----------------
extern struct mac_entry_s *mac_set; extern struct mac_entry_s *mac_set;
@ -212,12 +204,6 @@ typedef struct auth_entry_s assoc_entry;
#define NR_OP_CLASS 20 #define NR_OP_CLASS 20
#define NR_CHANNEL 22 #define NR_CHANNEL 22
#define NR_PHY 24 #define NR_PHY 24
#ifndef BIT
#define BIT(x) (1U << (x))
#endif
#define WLAN_RRM_CAPS_BEACON_REPORT_PASSIVE BIT(4)
#define WLAN_RRM_CAPS_BEACON_REPORT_ACTIVE BIT(5)
#define WLAN_RRM_CAPS_BEACON_REPORT_TABLE BIT(6)
// ---------------- Global variables ---------------- // ---------------- Global variables ----------------
extern struct auth_entry_s *denied_req_set; extern struct auth_entry_s *denied_req_set;

View file

@ -3,6 +3,23 @@
#include <stdint.h> #include <stdint.h>
#ifndef BIT
#define BIT(x) (1U << (x))
#endif
#define WLAN_RRM_CAPS_BEACON_REPORT_PASSIVE BIT(4)
#define WLAN_RRM_CAPS_BEACON_REPORT_ACTIVE BIT(5)
#define WLAN_RRM_CAPS_BEACON_REPORT_TABLE BIT(6)
#define DEFAULT_RRM_MODE_ORDER "pat"
#define RRM_MODE_COUNT 3
enum rrm_beacon_rqst_mode {
RRM_BEACON_RQST_MODE_PASSIVE,
RRM_BEACON_RQST_MODE_ACTIVE,
RRM_BEACON_RQST_MODE_BEACON_TABLE,
__RRM_BEACON_RQST_MODE_MAX
};
/** /**
* Calculate bitrate using the supported rates values. * Calculate bitrate using the supported rates values.
* @param supp_rate_val * @param supp_rate_val
@ -24,4 +41,12 @@ double iee80211_calculate_expected_throughput_mbit(int exp_thr);
*/ */
int rcpi_to_rssi(int rcpi); int rcpi_to_rssi(int rcpi);
/**
* Convert mode string to array of RRM masks
* @param rrm_mode_order
* @param mode_string
* @return
*/
int parse_rrm_mode(int* rrm_mode_order, const char* mode_string);
#endif //DAWN_IEEE80211_UTILS_H #endif //DAWN_IEEE80211_UTILS_H

View file

@ -334,44 +334,6 @@ static int load_time(time_t* v, char* s)
return ret; return ret;
} }
static int get_rrm_mode_val(char mode);
static int get_rrm_mode_val(char mode) {
switch (tolower(mode)) {
case 'a':
return WLAN_RRM_CAPS_BEACON_REPORT_ACTIVE;
break;
case 'p':
return WLAN_RRM_CAPS_BEACON_REPORT_PASSIVE;
break;
case 'b':
case 't':
return WLAN_RRM_CAPS_BEACON_REPORT_TABLE;
break;
}
return 0;
}
static int parse_rrm_mode(int *rrm_mode_order, const char *mode_string);
static int parse_rrm_mode(int *rrm_mode_order, const char *mode_string) {
int len, mode_val;
int mask = 0, order = 0, pos = 0;
if (!mode_string)
mode_string = DEFAULT_RRM_MODE_ORDER;
len = strlen(mode_string);
while (order < __RRM_BEACON_RQST_MODE_MAX) {
if (pos >= len) {
rrm_mode_order[order++] = 0;
} else {
mode_val = get_rrm_mode_val(mode_string[pos++]);
if (mode_val && !(mask & mode_val))
mask |= (rrm_mode_order[order++] = mode_val);
}
}
return mask;
}
static int consume_actions(int argc, char* argv[], int harness_verbosity); static int consume_actions(int argc, char* argv[], int harness_verbosity);
static int consume_actions(int argc, char* argv[], int harness_verbosity) static int consume_actions(int argc, char* argv[], int harness_verbosity)

View file

@ -144,44 +144,6 @@ struct local_config_s uci_get_local_config() {
} }
static int get_rrm_mode_val(char mode) {
switch (tolower(mode)) {
case 'a':
return WLAN_RRM_CAPS_BEACON_REPORT_ACTIVE;
break;
case 'p':
return WLAN_RRM_CAPS_BEACON_REPORT_PASSIVE;
break;
case 'b':
case 't':
return WLAN_RRM_CAPS_BEACON_REPORT_TABLE;
break;
}
return 0;
}
static int parse_rrm_mode(int *rrm_mode_order, const char *mode_string) {
int len, mode_val;
int mask = 0, order = 0, pos = 0;
dawnlog_debug_func("Entering...");
if (!mode_string)
mode_string = DEFAULT_RRM_MODE_ORDER;
len = strlen(mode_string);
while (order < __RRM_BEACON_RQST_MODE_MAX) {
if (pos >= len) {
rrm_mode_order[order++] = 0;
} else {
mode_val = get_rrm_mode_val(mode_string[pos++]);
if (mode_val && !(mask & mode_val))
mask |= (rrm_mode_order[order++] = mode_val);
}
}
return mask;
}
static struct mac_entry_s *insert_neighbor_mac(struct mac_entry_s *head, const char* mac) { static struct mac_entry_s *insert_neighbor_mac(struct mac_entry_s *head, const char* mac) {
dawnlog_debug_func("Entering..."); dawnlog_debug_func("Entering...");

View file

@ -12,3 +12,49 @@ int rcpi_to_rssi(int rcpi)
{ {
return rcpi / 2 - 110; return rcpi / 2 - 110;
} }
static int get_rrm_mode_val(char mode) {
int ret = 0;
switch (mode) {
case 'A':
case 'a':
ret = WLAN_RRM_CAPS_BEACON_REPORT_ACTIVE;
break;
case 'P':
case 'p':
ret = WLAN_RRM_CAPS_BEACON_REPORT_PASSIVE;
break;
case 'B':
case 'b':
case 'T':
case 't':
ret = WLAN_RRM_CAPS_BEACON_REPORT_TABLE;
break;
}
return ret;
}
int parse_rrm_mode(int* rrm_mode_order, const char* mode_string) {
if (!mode_string)
mode_string = DEFAULT_RRM_MODE_ORDER;
int mask = 0;
int order = 0;
while ((*mode_string != 0) && (order < __RRM_BEACON_RQST_MODE_MAX)) {
int mode_val = get_rrm_mode_val(*mode_string);
if (mode_val && (mask & mode_val) == 0)
{
rrm_mode_order[order++] = mode_val;
mask |= mode_val;
}
mode_string++;
}
while (order < __RRM_BEACON_RQST_MODE_MAX)
{
rrm_mode_order[order++] = 0;
}
return mask;
}