From f73708e1d70752b06ab8998ca37cd6394a5020de Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Mon, 12 Jan 2015 17:52:38 +0200 Subject: [PATCH] scan: Refactor scheduled scan code to scan.c Move the implementation details of triggering scheduled wifi scans over netlink to scan.c from wiphy.c. No functionality is affected by this commit. --- src/scan.c | 20 ++++++++++++++++++++ src/scan.h | 4 ++++ src/wiphy.c | 16 ++-------------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/scan.c b/src/scan.c index 005f42eb..3f64988f 100644 --- a/src/scan.c +++ b/src/scan.c @@ -47,3 +47,23 @@ void scan_start(struct l_genl_family *nl80211, uint32_t ifindex, l_genl_family_send(nl80211, msg, callback, user_data, NULL); l_genl_msg_unref(msg); } + +void scan_sched_start(struct l_genl_family *nl80211, uint32_t ifindex, + uint32_t scan_interval, + scan_func_t callback, void *user_data) +{ + struct l_genl_msg *msg; + + scan_interval *= 1000; /* in kernel the interval is in msecs */ + + msg = l_genl_msg_new_sized(NL80211_CMD_START_SCHED_SCAN, 32); + l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &ifindex); + l_genl_msg_append_attr(msg, NL80211_ATTR_SCHED_SCAN_INTERVAL, + 4, &scan_interval); + l_genl_msg_append_attr(msg, NL80211_ATTR_SOCKET_OWNER, 0, NULL); + + if (!l_genl_family_send(nl80211, msg, callback, user_data, NULL)) + l_error("Starting scheduled scan failed"); + + l_genl_msg_unref(msg); +} diff --git a/src/scan.h b/src/scan.h index f71e6bb0..9f670a5b 100644 --- a/src/scan.h +++ b/src/scan.h @@ -24,3 +24,7 @@ typedef void (*scan_func_t)(struct l_genl_msg *msg, void *user_data); void scan_start(struct l_genl_family *nl80211, uint32_t ifindex, scan_func_t callback, void *user_data); + +void scan_sched_start(struct l_genl_family *nl80211, uint32_t ifindex, + uint32_t scan_interval, scan_func_t callback, + void *user_data); diff --git a/src/wiphy.c b/src/wiphy.c index f644d77b..60a4a504 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -769,8 +769,6 @@ done: static void setup_scheduled_scan(struct wiphy *wiphy, struct netdev *netdev, uint32_t scan_interval) { - struct l_genl_msg *msg; - if (!wiphy->support_scheduled_scan) { l_debug("Scheduled scan not supported for %s " "iface %s ifindex %u", wiphy->name, netdev->name, @@ -778,18 +776,8 @@ static void setup_scheduled_scan(struct wiphy *wiphy, struct netdev *netdev, return; } - scan_interval *= 1000; /* in kernel the interval is in msecs */ - - msg = l_genl_msg_new_sized(NL80211_CMD_START_SCHED_SCAN, 32); - msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &netdev->index); - msg_append_attr(msg, NL80211_ATTR_SCHED_SCAN_INTERVAL, - 4, &scan_interval); - msg_append_attr(msg, NL80211_ATTR_SOCKET_OWNER, 0, NULL); - - if (!l_genl_family_send(nl80211, msg, sched_scan_callback, NULL, NULL)) - l_error("Starting scheduled scan failed"); - - l_genl_msg_unref(msg); + scan_sched_start(nl80211, netdev->index, scan_interval, + sched_scan_callback, netdev); } static void interface_dump_callback(struct l_genl_msg *msg, void *user_data)