[PATCH v2] Reduce nlctrl name resolution calls

Masashi Honma masashi.honma at gmail.com
Fri Aug 20 02:26:33 PDT 2021


The number of nlctrl name resolution calls required to connect to a WPA2-PSK AP
is 12. And each nlctrl name resolution call spends 55 micro sec on lower spec
CPU like Intel Atom N270. This patch reduces the number of nctrl name resolution
calls from 12 to 1 by caching the results of nctrl name resolution calls on
int size memory and little bit speeds up the connection process.

Signed-off-by: Masashi Honma <masashi.honma at gmail.com>
---
 src/drivers/driver_nl80211.c | 8 +++++++-
 src/drivers/driver_nl80211.h | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 49b2f8664..c77ea91b6 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -604,7 +604,7 @@ static int nl_get_multicast_id(struct nl80211_global *global,
 	msg = nlmsg_alloc();
 	if (!msg)
 		return -ENOMEM;
-	if (!genlmsg_put(msg, 0, 0, genl_ctrl_resolve(global->nl, "nlctrl"),
+	if (!genlmsg_put(msg, 0, 0, global->nlctrl_id,
 			 0, 0, CTRL_CMD_GETFAMILY, 0) ||
 	    nla_put_string(msg, CTRL_ATTR_FAMILY_NAME, family)) {
 		nlmsg_free(msg);
@@ -1883,6 +1883,12 @@ static int wpa_driver_nl80211_init_nl_global(struct nl80211_global *global)
 		goto err;
 	}
 
+	global->nlctrl_id = genl_ctrl_resolve(global->nl, "nlctrl");
+	if (global->nlctrl_id < 0) {
+		wpa_printf(MSG_ERROR, "nl80211: 'nlctrl' generic netlink not found");
+		goto err;
+	}
+
 	global->nl_event = nl_create_handle(global->nl_cb, "event");
 	if (global->nl_event == NULL)
 		goto err;
diff --git a/src/drivers/driver_nl80211.h b/src/drivers/driver_nl80211.h
index 9d61c1d69..80d456472 100644
--- a/src/drivers/driver_nl80211.h
+++ b/src/drivers/driver_nl80211.h
@@ -32,6 +32,7 @@ struct nl80211_global {
 	struct nl_cb *nl_cb;
 	struct nl_sock *nl;
 	int nl80211_id;
+	int nlctrl_id;
 	int ioctl_sock; /* socket for ioctl() use */
 
 	struct nl_sock *nl_event;
-- 
2.25.1




More information about the Hostap mailing list