3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2025-08-06 21:47:22 +02:00

Compare commits

..

1 Commits
3.9 ... master

Author SHA1 Message Date
Gokul Sivakumar
fee0e5de33 netdev: parse INACTIVE_TIME and CONNECTED_TIME in netdev_get_station
These two newly parsed station info params "inactive time" and the
"connected time" would be helpful to track the duration (in ms) for
which the station was last inactive and the total duration (in s) for
which the station is currently connected to the AP.

When the wlan device is in STA mode, these fields represent the info
of this station device. And when wlan device is in AP mode, then these
fields repesents the stations that are connected to this AP device.
2025-08-06 09:33:42 -05:00
4 changed files with 31 additions and 1 deletions

View File

@ -95,6 +95,8 @@ static const struct diagnostic_dict_mapping diagnostic_mapping[] = {
{ "Frequency", 'u' }, { "Frequency", 'u' },
{ "Channel", 'q' }, { "Channel", 'q' },
{ "Security", 's' }, { "Security", 's' },
{ "InactiveTime", 'u', "ms" },
{ "ConnectedTime", 'u', "s" },
{ NULL } { NULL }
}; };

View File

@ -110,6 +110,14 @@ bool diagnostic_info_to_dict(const struct diagnostic_station_info *info,
dbus_append_dict_basic(builder, "ExpectedThroughput", 'u', dbus_append_dict_basic(builder, "ExpectedThroughput", 'u',
&info->expected_throughput); &info->expected_throughput);
if (info->have_inactive_time)
dbus_append_dict_basic(builder, "InactiveTime", 'u',
&info->inactive_time);
if (info->have_connected_time)
dbus_append_dict_basic(builder, "ConnectedTime", 'u',
&info->connected_time);
return true; return true;
} }

View File

@ -43,6 +43,9 @@ struct diagnostic_station_info {
uint32_t expected_throughput; uint32_t expected_throughput;
uint32_t inactive_time;
uint32_t connected_time;
bool have_cur_rssi : 1; bool have_cur_rssi : 1;
bool have_avg_rssi : 1; bool have_avg_rssi : 1;
bool have_rx_mcs : 1; bool have_rx_mcs : 1;
@ -50,6 +53,8 @@ struct diagnostic_station_info {
bool have_rx_bitrate : 1; bool have_rx_bitrate : 1;
bool have_tx_bitrate : 1; bool have_tx_bitrate : 1;
bool have_expected_throughput : 1; bool have_expected_throughput : 1;
bool have_inactive_time : 1;
bool have_connected_time : 1;
}; };
bool diagnostic_info_to_dict(const struct diagnostic_station_info *info, bool diagnostic_info_to_dict(const struct diagnostic_station_info *info,

View File

@ -637,7 +637,6 @@ static bool netdev_parse_sta_info(struct l_genl_attr *attr,
info->have_tx_mcs = true; info->have_tx_mcs = true;
break; break;
case NL80211_STA_INFO_EXPECTED_THROUGHPUT: case NL80211_STA_INFO_EXPECTED_THROUGHPUT:
if (len != 4) if (len != 4)
return false; return false;
@ -645,6 +644,22 @@ static bool netdev_parse_sta_info(struct l_genl_attr *attr,
info->expected_throughput = l_get_u32(data); info->expected_throughput = l_get_u32(data);
info->have_expected_throughput = true; info->have_expected_throughput = true;
break;
case NL80211_STA_INFO_INACTIVE_TIME:
if (len != 4)
return false;
info->inactive_time = l_get_u32(data);
info->have_inactive_time = true;
break;
case NL80211_STA_INFO_CONNECTED_TIME:
if (len != 4)
return false;
info->connected_time = l_get_u32(data);
info->have_connected_time = true;
break; break;
} }
} }