From patchwork Thu Feb 13 20:18:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13974004 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD41724BBFF for ; Thu, 13 Feb 2025 20:18:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477906; cv=none; b=jmvoPJ7IOgGdkfPERxDgpE31/Hsa7bqEwxdkadUWtrSuqU7bF1up7NC65pzZ+zTH7CGjqUjcFwwT22r03zFnuSAdzGeLcNOUk56QHhwqXolwvut0Le36tQDfExq0zZaR9GuiVSF/6q6eIru9DVb8xP80LTPO9c9537hXOKPPmto= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477906; c=relaxed/simple; bh=ykejZzXyXZzTxqDjHa5U7M2vXkmVWua+9D+cVByWsOs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=d58ZNNGeN8LqOEJmNWyccJ0p6Mqimjm1tiJnGn/w8InGKY+gwDTVxXc06j4K2xrz+nr9vctxXdiWiUm3woFO4jotMH+HE7Z0wckzycJ3GEjdCsAbqbjjrvCRSxUMlkOIxavqYvpiDfJQwKsU7NCa+932ZL29fZAa/AB2wLU70z0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lUTYsD5Z; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lUTYsD5Z" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-220c92c857aso20930985ad.0 for ; Thu, 13 Feb 2025 12:18:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739477904; x=1740082704; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0pCkHdx9LiuuyEfXsXgtMCMDq8bWGJ7vMMayCSWHOZo=; b=lUTYsD5Z9ycIoOAMBZiay3RPQO8GBODq/ZwsEFMF3AmTyGVtPT7A6UF5gxVgoqxLvQ JV45P6y/SWdShGaTYybh1mc/rAg1QqP4M/99TgmDnOieEbx7A/ZrCtG9Tn7xdNsfCUx4 HwbtjibABlMLytEkeHuNxmY7L3RMBaQuSTB//FjBLHNJo5LgxdWpeLube5suBVFEFT7t eo3uUf7EZNBq3q8OWUCpNRMjPuXtiW6T2czz6iW2Hqv02o2E3YiFUgK/xDot3kPjb63m w8VyBh8waDJZaDl2+svPZr1Rk+F2/GFumPWhUFYJws9/XGH0FemUZ34B4dnc9AsWueMx +heg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739477904; x=1740082704; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0pCkHdx9LiuuyEfXsXgtMCMDq8bWGJ7vMMayCSWHOZo=; b=rD8Cx20WgHz6ETVN/cx0niS9RALDwI+P35YYPa45wucEXDgbIXrp3V8COq0DQ/npk0 mFiZanprlmtDU0Ujd4nRU/4BzHUAfW8HlYkMRi7F4X3ghCK0sGrmeuLDgqKTr/5QRkcs o9L7c4cu7h9ZGKcJUD0ar/UKkmYG4ajiO+RHWR6c0aTBIxvt3GKATO2jo+c5ul28woYX Ch4yaW+Txljq8hHzNDlteqZIDpdF+6iP7mfYOAKdP4wspm+4aJA1C9LAW219hRCpL7v5 hhmSaY2ami8S8Ul5w4QxcsTRMPiVgVcGDZar+jDU8k6ou9MkB9+sCEKuZM2zEntZ1glq VMMQ== X-Gm-Message-State: AOJu0Yx9KA5KcctLK/EvYxNVvbDNW5AOZmEnNrLUIsgXv9Q9AV1eUSFB EeL3AeFpXaEPhJ+44/ljCGfYx7hk9TcXeogfy+/XxeMup7WPjsbEXtHoJA== X-Gm-Gg: ASbGncuNJ9o6tZeP3P7peXivy6JKvEEzK/0CBCA7Z9gJBh4xIhbMfAlNdu54mU/qkNp Vn/9aCRpCeDr9sIMB+Wt3Q7asfoqqQA7ZluOdq6fY0GUWP5ekg0Qn82nAkBLr5qHQXGNv++sFOz twtdYcYLdN12tYp5cH+CoZpiPkNQ1ZIxobSkVvfwL3LWHelSnN4qREjC6Ks95wB80AfuHYyeBaK p7W35QEth1UC8cs5CzCfNYjObDoVQW4Bb8Ix9ZvDFphlrDeiAqZYjN18+imK6j/8zBN4ULFoJ5Q GzNJ8hvF+yj82B/fbBZacPL7kQ== X-Google-Smtp-Source: AGHT+IHsjl8uMk0C9lvqh7mCfrA/excGmmwbh0SrMKcpfjC5nJR26vmsJZlZKAnsup89jHCh8NwezQ== X-Received: by 2002:a17:902:ef4c:b0:215:8847:4377 with SMTP id d9443c01a7336-220d37151e7mr62312595ad.15.1739477903782; Thu, 13 Feb 2025 12:18:23 -0800 (PST) Received: from localhost.localdomain ([152.193.78.90]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d545c814sm16419455ad.148.2025.02.13.12.18.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 12:18:23 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v2 1/5] netdev: don't set CQM thresholds for fullmac cards Date: Thu, 13 Feb 2025 12:18:12 -0800 Message-Id: <20250213201816.230112-2-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250213201816.230112-1-prestwoj@gmail.com> References: <20250213201816.230112-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Since roaming is handled by the firmware setting CQM thresholds for roaming is pointless. --- src/netdev.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/netdev.c b/src/netdev.c index ecf61823..e0a39851 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -3827,6 +3827,15 @@ static void netdev_cmd_set_cqm_cb(struct l_genl_msg *msg, void *user_data) static int netdev_cqm_rssi_update(struct netdev *netdev) { struct l_genl_msg *msg; + struct netdev_handshake_state *nhs = l_container_of(netdev->handshake, + struct netdev_handshake_state, super); + + /* + * Fullmac cards handle roaming in firmware, there is no need to set + * CQM thresholds + */ + if (nhs->type == CONNECTION_TYPE_FULLMAC) + return 0; l_debug(""); From patchwork Thu Feb 13 20:18:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13974005 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7210524BC11 for ; Thu, 13 Feb 2025 20:18:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477907; cv=none; b=Ivl36NJkc36YeOT4hvad7LyCubv+f7g81WGTBW/Gk+6yXtgb2P4O5x1VYjULaU4P3NU4+DmjIxlReMRwnbjxPCSQBwjP/ws1yPd0j+jH4WeKQXfg5olEwZdCifr/aoWq81zRmBrdOoZZcqvBVb1SJN1bBwUQCbML6vqkRTZgyc0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477907; c=relaxed/simple; bh=SmDp/AtwyZaX+QYNLJpfT8SgFvWBptq86hr4LPtCP6E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=txBb9vNO1cQmFxmhdHupBZITGaz2nzKNcr2ZisJnUJTnmAWxhpNo9bbIVq3ABulj+2gnY+Zv05v2aikRqHdp/NxJKCFFEXu2r0dfTNLQWzwFn17uiVzmZTx1rZgMLb/oUejSOlnyTz1K9wLCMrHA2QZlwE/Api+UE3/yifC1edI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RsKrZ9i9; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RsKrZ9i9" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-21f3c119fe6so31514865ad.0 for ; Thu, 13 Feb 2025 12:18:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739477905; x=1740082705; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s2J5CivVdq8MUSEFFn1kXe7VS21AwQII0bR9xpTJfhY=; b=RsKrZ9i9OvYnHvpZI6TsCnbk03ZH25seYYcZuR2fqM/tLrQSRktCg7sdPjn+1vVz9R bm7EjdHie8Bjo9B9/EW/0fKlsFbEQuRY3Hdtkyz0BSqrwxth2CaLAxCzkj6VyFi3aM+O xvUTyHb0bPVdOJjekvri68DET2v8tb51F4G3IaxcdbxNz9S22vsr613//30ZSUmdjRFP KMIKHPAm39XhNFnNDnUe+o8o54x3yZqsEfu/LxyGVJBus0B364+d2ETAcXHdyaOkceRe jH3LtOnW9saKNJbMVY90C0W+Nj6GGeRIKBjgmZ7eXABN3Qw97mYrhmGkieaQ4nURJwbF 52Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739477905; x=1740082705; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s2J5CivVdq8MUSEFFn1kXe7VS21AwQII0bR9xpTJfhY=; b=kqKYNCzYkgxb8r/nizavekYEAJlu5bvCY9Tzf96C0OtTSVkD6rxtJm2BKOhpZ33/an xLFEc+/QQJA2vRwrJHGULzmjomPFd3zoJQp0JQKFpvFEaW/b3rsR2xI6OfQUy1fuNEbj MnRb4ieP0nO3MnzRltlySUxqAwMyW24YcTjQ7EZtKnX43fmvyX/89l0ieh9hzxdtl/8b uHJF+6wTLvE/vU/DM324UIGOVon1tcRcF8oZ6HomHMKoJ2LbQKTzafLzH4NjogO5634l rjwPUqGprlwA9GIxjVR5AiHS1IgIk1JIFK7WmJhITASgpwrGhsjMoWGH+xjvq6w1noTb UvNw== X-Gm-Message-State: AOJu0Yzzlml8W1D4WO2MPifa9+bsiFz83OuSmGIC1RPVCVkDK/oyrDVz 42IlytUAut11NpmEUFdHUTsXZUyI7hT3xJWu8JBNmbGlYMOEWduwkUT3ig== X-Gm-Gg: ASbGnctJsAZJKQjC6/qbkEZdB09wOigFF1N6v56pOZ3Ye2JlntPzLVXYiVtx/OpHHI5 CwmymnBJBhEUHnhgXEjy/fdd45fS5+XOrejq0ZGWGrtAXo+TIqgMyw2BgmHmzrKzq5NbCEDSDVM gGxI2OdXrY9IwGz/6CqJBsNXPxEWwe+8zvoRFY0m2NsxJ2/Ou0bWZ+OgPznJBTEebrb9r5iVn9q ti1MCiuX4DxL9hgF/VqnkpR6ta1ErZBZ4z99NpAaZIXuhRkNuC47fR+klqBmDuguXVQwWHwVrFh R5Au9uLrW5UBN0efb5jgmpWYRw== X-Google-Smtp-Source: AGHT+IEJddIckqQp8MkIhn4XXN409YTdzjEMSYma+YY6mWaWrVAI+lsmqkGgE7WOJoH2sWRUDRWXEw== X-Received: by 2002:a17:902:e54a:b0:216:32ea:c84b with SMTP id d9443c01a7336-220bbcc265bmr117285365ad.37.1739477905382; Thu, 13 Feb 2025 12:18:25 -0800 (PST) Received: from localhost.localdomain ([152.193.78.90]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d545c814sm16419455ad.148.2025.02.13.12.18.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 12:18:24 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v2 2/5] netdev: remove/update some iwd_notice logs Date: Thu, 13 Feb 2025 12:18:13 -0800 Message-Id: <20250213201816.230112-3-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250213201816.230112-1-prestwoj@gmail.com> References: <20250213201816.230112-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The iwd_notice function was more meant for special purpose events not general debug prints. For these error conditions we should be using l_warn. For the informational "External Auth to SSID" log we already print this information when connecting from station. In addition there are logs when performing external auth so it should be very obvious external auth is being used without this log. --- src/netdev.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/netdev.c b/src/netdev.c index e0a39851..06282c2a 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -5524,23 +5524,18 @@ static void netdev_external_auth_event(struct l_genl_msg *msg, } if (action == NL80211_EXTERNAL_AUTH_ABORT) { - iwd_notice(IWD_NOTICE_CONNECT_INFO, "External Auth Aborted"); + l_warn("External Auth Aborted"); goto error; } - iwd_notice(IWD_NOTICE_CONNECT_INFO, - "External Auth to SSID: %s, bssid: "MAC, - util_ssid_to_utf8(ssid.iov_len, ssid.iov_base), - MAC_STR(bssid)); - if (hs->ssid_len != ssid.iov_len || memcmp(hs->ssid, ssid.iov_base, hs->ssid_len)) { - iwd_notice(IWD_NOTICE_CONNECT_INFO, "Target SSID mismatch"); + l_warn("Target SSID mismatch"); goto error; } if (memcmp(hs->aa, bssid, ETH_ALEN)) { - iwd_notice(IWD_NOTICE_CONNECT_INFO, "Target BSSID mismatch"); + l_warn("Target BSSID mismatch"); goto error; } From patchwork Thu Feb 13 20:18:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13974006 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E7F2724BC19 for ; Thu, 13 Feb 2025 20:18:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477909; cv=none; b=V65VkEyNt8zhjz+28/v5PTVGiiePopfhaz90egQZ131VzdjHl2QQWUZKIaeg73gJ/IYQh/1fnWzxVYLeNox1hI28wwddZRCMnZuaxTTHl7XfbJ6fOXSnm0vrjUDRMTLKuNvsLiPkUCidjFF7fAbbnWPKcgiFmZM6EZ7lYVQRV8Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477909; c=relaxed/simple; bh=0LYcfQ+aRzf4n/L9kV2VTm5UGyYk7d9/ryiNba9lIDM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UBl8w7FIa3r+sBpShH5xk0KwhpHftUF2aBxW4Lvpgm7Ba7aajhQCKRO5ahB4OevaKXJ3Q4d+2aea3vbegP833Psymhp8Omkoy6K6FN2jHA5bBzOJDcQIb8rAvA5FkK2fvgIFs3plNdt9Rv+XMOLxO2l8qoW5JyZHWK2qLF5moE0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LMfFJ6NN; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LMfFJ6NN" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-220ca204d04so17213395ad.0 for ; Thu, 13 Feb 2025 12:18:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739477907; x=1740082707; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Pmz4C0A5XvthaH79KKOZeUtXZsVrurUc7g/Q/cbgHnA=; b=LMfFJ6NNC9DXLjhcywVkwNy1xCBAj4vXOhCqXE2kMFz3NY9IbNRLEPuy7LbAxmOO8X LCvThQojjhcPmqzO14PEiNu6dStQA2NDFsLighgY/OfBfr+opvu6x4+4CSQ5WJsdLB4F RCQ8mLyrdWWlKLMAtW9S+8GiAO5Nj8bQJSoTgxaHrQgmCPP2FBh2/zj3+FwM20WZMlar 50vjG2auz/fZuzoihHirUCQkoKpIm2H5QxzEePFFrg2m3yaaW/Z7fB4Md6yqwV8vDCrk N64bQck2/J2cjO/+VtOO7Z6ofda1hfm368xlLFUWj/HX41hWo4Vxi4Rl67SkOoCFDakn D48Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739477907; x=1740082707; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pmz4C0A5XvthaH79KKOZeUtXZsVrurUc7g/Q/cbgHnA=; b=bqlcX1RkB9MHK2nQG07b6I+LbcZ2boQiwyplRWuC2HtwNymA3lDO/VCeW1dWYRPIoD tLUsNarcm/ZopUvcG43lgTYrQmLhYQHGECZBQdwC0NFccGfBZI5TYKgIQjwb41H9Ax8f ef8ATZOyK4uCYNI0Xhj2Z8C4d5EEK3J7fOoPUyO0Ih+C7IRYqIu81ljAFYXF7/KTV4/X MOeVicxkRqNE+37qi/JIDa5BOsZ5qNbo31YO0fjgDukJquF85EZxKPAoH8NthMPkpSa9 P9fNBOOmGWUQGHORAxnpXNd9MorEB11yb6pRdXZgk4w/6WVFsNkfrXDjymukKKZrkMJc pPWA== X-Gm-Message-State: AOJu0YyUDi5Oyk7tB2YK7MNkLyDZRn/JPT+j+TCIKdqMscZ5XtkNFQj6 3xQTS4siBXAVD/D9yAUTn5EFoUjThLnFxsPqKKWYRwaSMZwQZ7dyq31sbA== X-Gm-Gg: ASbGnctgD04RojvguiIRpPEOLrehw06Es8+XwUBTXOO6Rfa5XYrEhihZS0J8qk1pjd5 8BESsyepuGLZT9CSgStGSjrlMfmQ6UPVnTcbpZA05VUanh0xAEzcTuSVT5HQ7vmAMqGx9ulMCqW c3EC1AgKS6KAO6QP6K9jxxD1jfb87wIihg8oBwMbyWLNM8/fD33ylZkLTuy2zclHaKoOW2kFItn v6TrA3aY3jHEsIoNMBevWXoaLoDTTkIF/sCSvjg+/pcIHh+OaSl1E6AJ67Zh5IbOVBEikCEbdk4 dlI1lhtkuvwxoa+NeeruB3xZSg== X-Google-Smtp-Source: AGHT+IGliSOrXqbkDiyd/U/etgbyVW8gSFkb82ePL5hGgPjSgPs0N+45uZVRUXExFWgbzs8GtdoS2w== X-Received: by 2002:a17:902:c942:b0:216:386e:dbc with SMTP id d9443c01a7336-220bbacbb1amr117597725ad.13.1739477906918; Thu, 13 Feb 2025 12:18:26 -0800 (PST) Received: from localhost.localdomain ([152.193.78.90]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d545c814sm16419455ad.148.2025.02.13.12.18.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 12:18:26 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v2 3/5] pmksa: add driver callbacks and pmksa_cache_free Date: Thu, 13 Feb 2025 12:18:14 -0800 Message-Id: <20250213201816.230112-4-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250213201816.230112-1-prestwoj@gmail.com> References: <20250213201816.230112-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In order to support fullmac drivers the PMKSA entries must be added and removed from the kernel. To accomplish this a set of driver callbacks will be added to the PMKSA module. In addition a new pmksa_cache_free API will be added whos only purpose is to handle the removal from the kernel. --- src/pmksa.c | 38 ++++++++++++++++++++++++++++++++++++-- src/pmksa.h | 9 +++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/pmksa.c b/src/pmksa.c index bb539b85..a50c8208 100644 --- a/src/pmksa.c +++ b/src/pmksa.c @@ -40,6 +40,9 @@ static uint64_t dot11RSNAConfigPMKLifetime = 43200ULL * L_USEC_PER_SEC; static uint32_t pmksa_cache_capacity = 255; +static pmksa_cache_add_func_t driver_add; +static pmksa_cache_remove_func_t driver_remove; +static pmksa_cache_flush_func_t driver_flush; struct min_heap { struct pmksa **data; @@ -142,7 +145,7 @@ int pmksa_cache_put(struct pmksa *pmksa) l_debug("Adding entry with PMKID: "PMKID, PMKID_STR(pmksa->pmkid)); if (cache.used == cache.capacity) { - l_free(cache.data[0]); + pmksa_cache_free(cache.data[0]); cache.data[0] = pmksa; __minheap_sift_down(cache.data, cache.used, 0, &ops); return 0; @@ -152,6 +155,9 @@ int pmksa_cache_put(struct pmksa *pmksa) __minheap_sift_up(cache.data, cache.used, &ops); cache.used += 1; + if (driver_add) + driver_add(pmksa); + return 0; } @@ -167,7 +173,7 @@ int pmksa_cache_expire(uint64_t cutoff) for (i = 0; i < used; i++) { if (cache.data[i]->expiration <= cutoff) { - l_free(cache.data[i]); + pmksa_cache_free(cache.data[i]); continue; } @@ -190,11 +196,30 @@ int pmksa_cache_flush(void) { uint32_t i; + /* + * The driver flush operation is done via a single kernel API call which + * is why below we use l_free instead of pmksa_cache_free as to not + * induce a DEL_PMKSA kernel call for each entry. + */ + if (driver_flush) + driver_flush(); + for (i = 0; i < cache.used; i++) l_free(cache.data[i]); memset(cache.data, 0, cache.capacity * sizeof(struct pmksa *)); cache.used = 0; + + return 0; +} + +int pmksa_cache_free(struct pmksa *pmksa) +{ + if (driver_remove) + driver_remove(pmksa); + + l_free(pmksa); + return 0; } @@ -217,6 +242,15 @@ void __pmksa_set_config(const struct l_settings *config) &pmksa_cache_capacity); } +void __pmksa_set_driver_callbacks(pmksa_cache_add_func_t add, + pmksa_cache_remove_func_t remove, + pmksa_cache_flush_func_t flush) +{ + driver_add = add; + driver_remove = remove; + driver_flush = flush; +} + static int pmksa_init(void) { cache.capacity = pmksa_cache_capacity; diff --git a/src/pmksa.h b/src/pmksa.h index 67879309..6a624504 100644 --- a/src/pmksa.h +++ b/src/pmksa.h @@ -32,6 +32,10 @@ struct pmksa { size_t pmk_len; }; +typedef void (*pmksa_cache_add_func_t)(const struct pmksa *pmksa); +typedef void (*pmksa_cache_remove_func_t)(const struct pmksa *pmksa); +typedef void (*pmksa_cache_flush_func_t)(void); + struct pmksa **__pmksa_cache_get_all(uint32_t *out_n_entries); struct pmksa *pmksa_cache_get(const uint8_t spa[static 6], @@ -41,6 +45,11 @@ struct pmksa *pmksa_cache_get(const uint8_t spa[static 6], int pmksa_cache_put(struct pmksa *pmksa); int pmksa_cache_expire(uint64_t cutoff); int pmksa_cache_flush(void); +int pmksa_cache_free(struct pmksa *pmksa); uint64_t pmksa_lifetime(void); void __pmksa_set_config(const struct l_settings *config); + +void __pmksa_set_driver_callbacks(pmksa_cache_add_func_t add, + pmksa_cache_remove_func_t remove, + pmksa_cache_flush_func_t flush); From patchwork Thu Feb 13 20:18:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13974007 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73CD124BC06 for ; Thu, 13 Feb 2025 20:18:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477910; cv=none; b=THgfLVHg6atf4ZIFVaylAvQsFixn/z3Y/BtNCcs/SEqBdkttV5nhRCU5KiP6A1Txuk+yF5kdezpTo5pZHkswMe3i5iRF6ZlRvvxTNr1aOsroGXHr05ofA682C2LDLWGyKnR1H4Y1XqjC4kTqa/2keKu/H0gCepTZnq8C1a41WHQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477910; c=relaxed/simple; bh=qnHfjnEhNCvmH3lCVzSLl2jnSlRGXIWMgbnsl55h1Ck=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FSfBzq52Ys1UXCIQ83t1SXX8EAmlNNTqV5zb2uJQETk1kUK26UY1lBQ8q3GIuqfeNiJQBU3Rkr96ski2ykwg1tcUqTdindP7W9R0OYEIbuXDnWykcUh27sg/OZ0zz5TglbgOvxl5+0GH2vmwi1uP7jkGSCZGBTYDnWL0yLEz398= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ifympxfq; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ifympxfq" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-21f2339dcfdso20471875ad.1 for ; Thu, 13 Feb 2025 12:18:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739477908; x=1740082708; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xMOMBL6Fvv0BI1/LgeVHPzVHWQ0ObEUKMn93HcW3ug0=; b=IfympxfqpczSHhv3WhHx0jrkkhhYf1fATLLLfXJ1MzAhQb1Nujxb3RhVaFsfGJV+ZB B3N9G6igQnv/Ke06jjYoDYMf4IWFP/rZKA/ws40QbitK15mvaGaY8DYnGPd1BhclkblR 3o4fuk/I26EogOM+kUw0pUfFfICrCY+q5NFlvsXQflBwzebitWImcSaSNsMZ8BIaC4Qs aMaegIsUoXif3Y5iHACFYvJD3hhJwUUpmHQ8nFgZU3jZ003uZBz/elsxY8EfzW8bjm/N /7bzrY4irfZy8SRKestP3ctA2Zz6dp/MJXTLvBoALYdr0EZcm7LqR7+h1uCR9tDHK1bU T7BA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739477908; x=1740082708; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xMOMBL6Fvv0BI1/LgeVHPzVHWQ0ObEUKMn93HcW3ug0=; b=thj3KU9tNGsWIVR9hGfoNUoYtHIj83+eGWGAprOaDPxLtWZZB2I+2+JvkkslxJJPL+ /IBBvtWUkIAQdz9/fEHjqThugPVSgdqe4RvqNozFrbTlZvYk9HHQMbf+Mj3ZB9giTVHo srhSwmeSG5bmka+7+YCxtl5Frh84eoqo46eGM5easS8gN66TrLPcIcOC3owu0LV4CzcU xAhZv/syObRMvvohiUWqJW16p2+oIoFPR8rWRCUL1HggWCaozfBN8Q4THQaKE30ORXx/ pCosBeXvJNDBBUVd/gEWX550Cz5VAP5t0hoOQt70ebu+IMpXQex2CQvosN6y9Gk+fHbb Xiew== X-Gm-Message-State: AOJu0YxQF/f7ZoZidwJKxZiJyvALT0pprqkwuNiVo6QyjMXgP6Pxr4fO IRFZ144WNzDIqrCw6fWF+GUs4FvpjQb89mblI5ommJAtRfaYtsMPu7ZbGQ== X-Gm-Gg: ASbGnctOGtsGlwaLb5ksI8pxtAYwISLnpCpxFTLhfQ4eqIZu23lnK1MWmmP00Zbt5JW pV5Gu7nGBrsYWfKbdbENOny6wrya6121JVnS0r0UMdifAhgaG0iI/5h7HNHAedsebAimwE981OE mwopw1SHcEi+CmHfQMoQpNwo74Qg71GFTkAfPOqiNoVfuwgGmB+dX3RlDoXTCwgGN113XQtDS3w ycig0MrR5mTTeegBpKZMyjQmKP+6ICh+55V7IcASOYZ/kRr8/DRYOWtpb4GheWSspIp/j8o2Shq FSYlP3VHbiadiJ6/2c9HCCenRw== X-Google-Smtp-Source: AGHT+IGXSvRoaGdcSlqJHutKY5khcDMya1AqH4zrCNcAERs0VSZ0hxOV6dpzZwCgdaVfNqD9uIVvkg== X-Received: by 2002:a17:902:f64d:b0:21f:3d0d:2408 with SMTP id d9443c01a7336-220d35053abmr65632795ad.10.1739477908520; Thu, 13 Feb 2025 12:18:28 -0800 (PST) Received: from localhost.localdomain ([152.193.78.90]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d545c814sm16419455ad.148.2025.02.13.12.18.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 12:18:28 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v2 4/5] handshake: use pmksa_cache_free Date: Thu, 13 Feb 2025 12:18:15 -0800 Message-Id: <20250213201816.230112-5-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250213201816.230112-1-prestwoj@gmail.com> References: <20250213201816.230112-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 --- src/handshake.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/handshake.c b/src/handshake.c index bee31beb..c469e6fa 100644 --- a/src/handshake.c +++ b/src/handshake.c @@ -1239,7 +1239,7 @@ static struct pmksa *handshake_state_steal_pmksa(struct handshake_state *s) s->have_pmksa = false; if (l_time_after(now, pmksa->expiration)) { - l_free(pmksa); + pmksa_cache_free(pmksa); pmksa = NULL; } @@ -1280,7 +1280,7 @@ void handshake_state_cache_pmksa(struct handshake_state *s) l_debug("Caching PMKSA for "MAC, MAC_STR(s->aa)); if (L_WARN_ON(pmksa_cache_put(pmksa) < 0)) - l_free(pmksa); + pmksa_cache_free(pmksa); } bool handshake_state_remove_pmksa(struct handshake_state *s) @@ -1294,7 +1294,7 @@ bool handshake_state_remove_pmksa(struct handshake_state *s) if (!pmksa) return false; - l_free(pmksa); + pmksa_cache_free(pmksa); return true; } From patchwork Thu Feb 13 20:18:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Prestwood X-Patchwork-Id: 13974008 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B38524BC19 for ; Thu, 13 Feb 2025 20:18:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477912; cv=none; b=H/dsONw3nAeh0nxvVGFgg53Y+o83Vh/fv281FALa9berX+LHWBipYGoa9+enszFp4x4MAOkc62a/ENM/SRVNsjsFA7NQn6ay0gbS6B+NsvjsMau0UO9ts36UfW9YUO7FYTl6RmeJ8ER9d/1+xRqVAV19YQ2Lg0nctf3kCyt4+Dc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739477912; c=relaxed/simple; bh=MHyVcLru0wLATx4It81dJRw7HFMwwtDYzPQm0dgZmCE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hHF0TUt9GRyJICkCdBTzx5NqXY8e4nNGe4Cu2ekXUTXFwdZ6PAznk1a0oJYizygs/M3slp9v4FbAn0QLc2SwufxLzFdYvYVhxm675kAF5M2tYa6gbWLSNu6ztHOYEwi8exTEsBJJOS5ltdQkAUBdqrKzd90uzlZJ5sPyHs13bIE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=de+CAzRy; arc=none smtp.client-ip=209.85.214.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="de+CAzRy" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-220c92c857aso20932335ad.0 for ; Thu, 13 Feb 2025 12:18:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739477910; x=1740082710; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=o+Q4DIOzacwA9E+GJsKZb37Ers+T1zM2CVh0x1uKiz8=; b=de+CAzRy3+nr2YKLkwqn90+yPc0tv7YDjc1zquFYbZnyW8W1+veY9LfrwW8ljbSyXe E/qZBdm3XKjD/kpvkyI4fNRtBtiZAi06OvRAur2zbfDNErEZIcuy/cADiIzA/wuoxT85 FiOzOEsxd2a5TemPHi7MsB9ukIprvNFhWXcH+9D3cPpjx+k8LK0aiLdjnNtkVqWi1fDd whnhyIX7/rJgsXlDX5C/uF0Q1iX1L2CiYFFY0w6MtwQPvOFrfLAFdoXWmcPgTwYmNb8A HNHbmNS8sSdFLa+abASKCfhSTaZ9G6B7BrmtaSZoQZ92NtakuGuVFAJ5gxOkAJmg05xi CZnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739477910; x=1740082710; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o+Q4DIOzacwA9E+GJsKZb37Ers+T1zM2CVh0x1uKiz8=; b=nzXCbZwMz/fEo+Ze111vk1WoagnxvLfkBkn1W30GMq85u0jf5pvqBaYVl+dLMcohWv WfxlVwdvub05TiYWsvDZJFH6wBVmdQHqzyxffMrwrK5FRVrkr91pnTV9mb4+9Y9VOVUS LWS9NfnhW7M7lVCMauIDVNnqRWMOVuEst1hpJkONeqJ23FXeB+TspAJpDF4byylDGswk 6fAGXjTUSWZXwPjpu7cYdO9y2dUux25Szj9o6iGfRItJNN7hjJdyGz9mduv6rw1lssZn ZxRSuGCJgqDFL+A19dCOfH/E9RUujDfeNMRhbZf7Zmyyf+cqFZi1kzRGxNs/jc8DR6Mf K+1g== X-Gm-Message-State: AOJu0YxL2xVd8Ri99eMAlJ9kCjGJcbrYYY3EOgr0fC3Z3JewgWO1fZTy YlMxqRFmX/PStk5I/j6gAPI1zo0HbAme+/P8cKWWdAnda3Hs8PJmuHepuQ== X-Gm-Gg: ASbGncs9gxxYr9Hrys+sjYMrDsCCQoUBx1vIV/9deWTeQ4QbYvjVqr9iPspKlgOeijF 7GLYmSgrfDVDiKlMsQEsk5WrxTnb5fCk0IPTPdORAJlGbxHbf71EQalb3KXI3MIS2VUtWOmYV23 acrN6VJvwkjSC9pp46fpVpMmdmm0tp6b77Z/WFLdEa+Rvr7w2C/Uhw8oVyHRGYusLOo8E7WKG0h sliNPNnDkncXHU4+FBYeGKWFjBq4RiQy6sbFVMQa3RwrblawdsUBcGrT/mSDn4fTKtRMtzIy2m9 d5/TAKIgpAr/VRsPzm3UV21Wtg== X-Google-Smtp-Source: AGHT+IEfJkXxbK291wr0YRx3bjE+stdY6QNop+DUT4j2g0EDNVjbeE4OmRjbrSPvzH4+IWIDc8ey+Q== X-Received: by 2002:a17:903:2f81:b0:215:3998:189f with SMTP id d9443c01a7336-220d36d2d10mr62519475ad.6.1739477910053; Thu, 13 Feb 2025 12:18:30 -0800 (PST) Received: from localhost.localdomain ([152.193.78.90]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d545c814sm16419455ad.148.2025.02.13.12.18.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2025 12:18:29 -0800 (PST) From: James Prestwood To: iwd@lists.linux.dev Cc: James Prestwood Subject: [PATCH v2 5/5] netdev: implement PMKSA for fullmac drivers Date: Thu, 13 Feb 2025 12:18:16 -0800 Message-Id: <20250213201816.230112-6-prestwoj@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250213201816.230112-1-prestwoj@gmail.com> References: <20250213201816.230112-1-prestwoj@gmail.com> Precedence: bulk X-Mailing-List: iwd@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Supporting PMKSA on fullmac drivers requires that we set the PMKSA into the kernel as well as remove it. This can now be triggered via the new PMKSA driver callbacks which are implemented and set with this patch. --- src/netdev.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/src/netdev.c b/src/netdev.c index 06282c2a..ddd05621 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -1498,6 +1498,105 @@ static void netdev_setting_keys_failed(struct netdev_handshake_state *nhs, handshake_event(&nhs->super, HANDSHAKE_EVENT_SETTING_KEYS_FAILED, &err); } +static bool netdev_match_addr(const void *a, const void *b) +{ + const struct netdev *netdev = a; + const uint8_t *addr = b; + + return memcmp(netdev->addr, addr, ETH_ALEN) == 0; +} + +static struct netdev *netdev_find_by_address(const uint8_t *addr) +{ + return l_queue_find(netdev_list, netdev_match_addr, addr); +} + +static void netdev_pmksa_driver_add(const struct pmksa *pmksa) +{ + struct l_genl_msg *msg; + struct netdev *netdev = netdev_find_by_address(pmksa->spa); + uint32_t expiration = (uint32_t)pmksa->expiration; + + if (!netdev) + return; + + /* Only need to set the PMKSA into the kernel for fullmac drivers */ + if (wiphy_supports_cmds_auth_assoc(netdev->wiphy)) + return; + + l_debug("Adding PMKSA to kernel"); + + msg = l_genl_msg_new(NL80211_CMD_SET_PMKSA); + + l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &netdev->index); + l_genl_msg_append_attr(msg, NL80211_ATTR_PMKID, 16, pmksa->pmkid); + l_genl_msg_append_attr(msg, NL80211_ATTR_MAC, ETH_ALEN, pmksa->aa); + l_genl_msg_append_attr(msg, NL80211_ATTR_SSID, + pmksa->ssid_len, pmksa->ssid); + l_genl_msg_append_attr(msg, NL80211_ATTR_PMK_LIFETIME, 4, &expiration); + l_genl_msg_append_attr(msg, NL80211_ATTR_PMK, + pmksa->pmk_len, pmksa->pmk); + + if (!l_genl_family_send(nl80211, msg, NULL, NULL, NULL)) + l_error("error sending SET_PMKSA"); +} + +static void netdev_pmksa_driver_remove(const struct pmksa *pmksa) +{ + struct l_genl_msg *msg; + struct netdev *netdev = netdev_find_by_address(pmksa->spa); + + if (!netdev) + return; + + /* Only need to set the PMKSA into the kernel for fullmac drivers */ + if (wiphy_supports_cmds_auth_assoc(netdev->wiphy)) + return; + + l_debug("Removing PMKSA from kernel"); + + msg = l_genl_msg_new(NL80211_CMD_DEL_PMKSA); + + l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &netdev->index); + l_genl_msg_append_attr(msg, NL80211_ATTR_PMKID, 16, pmksa->pmkid); + l_genl_msg_append_attr(msg, NL80211_ATTR_MAC, ETH_ALEN, pmksa->aa); + l_genl_msg_append_attr(msg, NL80211_ATTR_SSID, + pmksa->ssid_len, pmksa->ssid); + + if (!l_genl_family_send(nl80211, msg, NULL, NULL, NULL)) + l_error("error sending DEL_PMKSA"); +} + +static void netdev_flush_pmksa(struct netdev *netdev) +{ + struct l_genl_msg *msg; + + /* + * We only utilize the kernel's PMKSA cache for fullmac cards, + * so no need to flush if this is a softmac. + */ + if (wiphy_supports_cmds_auth_assoc(netdev->wiphy)) + return; + + msg = l_genl_msg_new(NL80211_CMD_FLUSH_PMKSA); + + l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &netdev->index); + + if (!l_genl_family_send(nl80211, msg, NULL, NULL, NULL)) + l_error("Failed to flush PMKSA for %u", netdev->index); +} + +static void netdev_pmksa_driver_flush(void) +{ + const struct l_queue_entry *e; + + for (e = l_queue_get_entries(netdev_list); e; e = e->next) { + struct netdev *netdev = e->data; + + netdev_flush_pmksa(netdev); + } +} + static void try_handshake_complete(struct netdev_handshake_state *nhs) { l_debug("ptk_installed: %u, gtk_installed: %u, igtk_installed: %u", @@ -6544,6 +6643,16 @@ struct netdev *netdev_create_from_genl(struct l_genl_msg *msg, netdev_get_link(netdev); + /* + * Call the netdev-specific variant to flush only this devices PMKSA + * cache in the kernel. This will make IWD's cache and the kernel's + * cache consistent, i.e. no entries + * + * TODO: If we ever are storing PMKSA's on disk we would first need to + * flush, then add all the PMKSA entries at this time. + */ + netdev_flush_pmksa(netdev); + return netdev; } @@ -6659,6 +6768,10 @@ static int netdev_init(void) __ft_set_tx_frame_func(netdev_tx_ft_frame); + __pmksa_set_driver_callbacks(netdev_pmksa_driver_add, + netdev_pmksa_driver_remove, + netdev_pmksa_driver_flush); + unicast_watch = l_genl_add_unicast_watch(genl, NL80211_GENL_NAME, netdev_unicast_notify, NULL, NULL);