2012-04-18 18:01:01

by Ashok Nagarajan

[permalink] [raw]
Subject: [PATCH v2 1/2] iw: Allow setting RSSI threshold for peering

Signed-off-by: Ashok Nagarajan <[email protected]>
---
mesh.c | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/mesh.c b/mesh.c
index 4a3c29e..f678dc0 100644
--- a/mesh.c
+++ b/mesh.c
@@ -17,6 +17,7 @@ SECTION(mesh);
typedef struct _any_t {
union {
uint32_t as_32;
+ int32_t as_s32;
uint16_t as_16;
uint8_t as_8;
} u;
@@ -96,6 +97,19 @@ static uint32_t _parse_u32(const char *str, _any *ret)
return 0;
}

+static uint32_t _parse_s32(const char *str, _any *ret)
+{
+ char *endptr = NULL;
+ long int v = strtol(str, &endptr, 10);
+ if (*endptr != '\0')
+ return 0xffffffff;
+ if (v > 0xff)
+ return 0xffffffff;
+ ret->u.as_s32 = (int32_t)v;
+ return 0;
+}
+
+
static void _print_u8(struct nlattr *a)
{
printf("%d", nla_get_u8(a));
@@ -131,6 +145,12 @@ static void _print_u32_in_TUs(struct nlattr *a)
printf("%d TUs", nla_get_u32(a));
}

+static void _print_s32_in_dBm(struct nlattr *a)
+{
+ printf("%d dBm", (int32_t) nla_get_u32(a));
+}
+
+
/* The current mesh parameters */
const static struct mesh_param_descr _mesh_param_descrs[] =
{
@@ -187,6 +207,8 @@ const static struct mesh_param_descr _mesh_param_descrs[] =
{"mesh_sync_offset_max_neighor",
NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR,
_my_nla_put_u32, _parse_u32, _print_u32},
+ {"mesh_rssi_threshold", NL80211_MESHCONF_RSSI_THRESHOLD,
+ _my_nla_put_u32, _parse_s32, _print_s32_in_dBm},
};

static void print_all_mesh_param_descr(void)
--
1.7.5.4



2012-04-18 18:01:12

by Ashok Nagarajan

[permalink] [raw]
Subject: [PATCH v2 2/2] iw: Show Toffset on station dump

Signed-off-by: Ashok Nagarajan <[email protected]>
---
v2:
Fix compiler warning (Johannes)
station.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/station.c b/station.c
index ef69ea5..3c5fc38 100644
--- a/station.c
+++ b/station.c
@@ -45,6 +45,7 @@ static int print_sta_handler(struct nl_msg *msg, void *arg)
[NL80211_STA_INFO_RX_PACKETS] = { .type = NLA_U32 },
[NL80211_STA_INFO_TX_PACKETS] = { .type = NLA_U32 },
[NL80211_STA_INFO_SIGNAL] = { .type = NLA_U8 },
+ [NL80211_STA_INFO_T_OFFSET] = { .type = NLA_U64 },
[NL80211_STA_INFO_TX_BITRATE] = { .type = NLA_NESTED },
[NL80211_STA_INFO_LLID] = { .type = NLA_U16 },
[NL80211_STA_INFO_PLID] = { .type = NLA_U16 },
@@ -113,6 +114,9 @@ static int print_sta_handler(struct nl_msg *msg, void *arg)
if (sinfo[NL80211_STA_INFO_SIGNAL_AVG])
printf("\n\tsignal avg:\t%d dBm",
(int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL_AVG]));
+ if (sinfo[NL80211_STA_INFO_T_OFFSET])
+ printf("\n\tToffset:\t%ld us",
+ (int64_t)nla_get_u64(sinfo[NL80211_STA_INFO_T_OFFSET]));

if (sinfo[NL80211_STA_INFO_TX_BITRATE]) {
if (nla_parse_nested(rinfo, NL80211_RATE_INFO_MAX,
--
1.7.5.4