summaryrefslogtreecommitdiff
path: root/src/platform/nm-linux-platform.c
diff options
context:
space:
mode:
authorAndrew Zaborowski <andrew.zaborowski@intel.com>2020-11-17 16:17:13 +0100
committerThomas Haller <thaller@redhat.com>2020-11-19 13:38:06 +0100
commite5a2520069c21a533554f493db11af072eb56071 (patch)
tree5e881fdd6a04d3c5162944514a51526234b53f9b /src/platform/nm-linux-platform.c
parentf37db2c2a56a7b3f68203f0c4f09eb197bf444bf (diff)
downloadNetworkManager-e5a2520069c21a533554f493db11af072eb56071.tar.gz
platform: Add a wifi_get_station utility
Merge nm_platform_wifi_get_bssid, nm_platform_wifi_get_quality, nm_platform_wifi_get_rate into one utility, nm_platform_wifi_get_station that uses the single NL80211_CMD_GET_STATION command dump when the nl80211 driver is used. With wext each function mapped to one ioctl while with nl80211 all three can be obtained with one netlink command. The new function should use the minimum number of calls with either driver.
Diffstat (limited to 'src/platform/nm-linux-platform.c')
-rw-r--r--src/platform/nm-linux-platform.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index b377c85e7a..5f8ca938ae 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -8309,6 +8309,17 @@ wifi_get_rate(NMPlatform *platform, int ifindex)
return nm_wifi_utils_get_rate(wifi_data);
}
+static gboolean
+wifi_get_station(NMPlatform *platform,
+ int ifindex,
+ guint8 * out_bssid,
+ int * out_quality,
+ guint32 * out_rate)
+{
+ WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
+ return nm_wifi_utils_get_station(wifi_data, out_bssid, out_quality, out_rate);
+}
+
static NM80211Mode
wifi_get_mode(NMPlatform *platform, int ifindex)
{
@@ -9673,6 +9684,7 @@ nm_linux_platform_class_init(NMLinuxPlatformClass *klass)
platform_class->wifi_get_frequency = wifi_get_frequency;
platform_class->wifi_get_quality = wifi_get_quality;
platform_class->wifi_get_rate = wifi_get_rate;
+ platform_class->wifi_get_station = wifi_get_station;
platform_class->wifi_get_mode = wifi_get_mode;
platform_class->wifi_set_mode = wifi_set_mode;
platform_class->wifi_set_powersave = wifi_set_powersave;