From patchwork Fri Oct 28 14:59:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Benny_L=C3=B8nstrup_Ammitzb=C3=B8ll?= X-Patchwork-Id: 1696179 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=EXKf4b4x; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ammitzboell-consult.dk header.i=@ammitzboell-consult.dk header.a=rsa-sha256 header.s=rsa1 header.b=I5lyQzqf; dkim=fail reason="signature verification failed" header.d=ammitzboell-consult.dk header.i=@ammitzboell-consult.dk header.a=ed25519-sha256 header.s=ed1 header.b=VXFayqdm; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MzQnM4Wl0z23l4 for ; Sat, 29 Oct 2022 02:04:39 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Subject:From:To:MIME-Version :Date:Message-ID:Content-Type:Reply-To:Cc:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=Rq7hZPm+d+4N1X67xgHliMNNY5Is9mO648Ihnw7zPZM=; b=EXKf4b4xFmmj9V+b+X447y0PyW /QyHVG1biFv5/C0Ua5l4nMkfwevDKGJPneNSvBdSiblBoV5qg4Xb5DLRuKXF+Q110qjAxs7kFW+qm 5dCdjnX0oqZAqcImJGElXqU1YDdDGjnkjTcBnP7g8yX/7l4iFLaXSRz4eE3tuSoxJ7aYI90KAB7As aYSlClcFaKPfM8m8gsdE7eeLzD1miQXI/5Nwy82XbRIRZoQ/iZA97ODxzImOhnkE2sOMy5OoI9Umg IwVhUW7TzMxH/bOw6QLfeieMO9S1PJr0KmWYHKLX/Vng4Or/JFwmW5iyU5hZmYx4dxlWOoLxja/QM SXxeMl1w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ooQsz-000MqH-IQ; Fri, 28 Oct 2022 15:03:05 +0000 Received: from mailrelay5-2.pub.mailoutpod2-cph3.one.com ([2a02:2350:5:40a::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ooQqB-000LDz-9m for hostap@lists.infradead.org; Fri, 28 Oct 2022 15:00:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ammitzboell-consult.dk; s=rsa1; h=subject:from:to:mime-version:date:message-id:content-type:from; bh=OXMmGQRk62HCxg/XXykgrk9GEocEqbNRTnzoLb5Ah8M=; b=I5lyQzqfJhcQIw1JIGvrm/P47HvLjpsWBrINmK2yQOQxapRCzamw8VBRoIH//oNR7vW0/Zw8+Zm/6 T0qH3RNbHu6z5lhcaJf0JloJTDCU1k7gzjO0XY6iCvcY8Z24u7nX/WQ9a31u7SON1NHWFvUbGxfThP DW9e0PKNax3uqHcZnBN0mkwzXxNA0olixtsuAZnQSjNvoxvk6CNBc8+wLFaprx4W99QTwTq4Ex1L1x aTzM7dm4x91Nhqs6ON6AeYSiRf1eAjuBCPoGPEN+dGnNLgB3GdUck8zHexUFKhjC6Ui7pITpuv0rWI vfuFy7wcCH5mYodmUIFdkADUoPds5oQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ammitzboell-consult.dk; s=ed1; h=subject:from:to:mime-version:date:message-id:content-type:from; bh=OXMmGQRk62HCxg/XXykgrk9GEocEqbNRTnzoLb5Ah8M=; b=VXFayqdm1fDYYVOhNIeR6kNhP2Uk9+9yoG8KLJuz87qPc0/SZ9sqk2jsWAD4DZBHldqCZkgVqIaz7 9P5kd6pCA== X-HalOne-ID: 2feeb467-56d1-11ed-a23e-2b2c31a40212 Received: from [192.168.137.15] (unknown [217.195.190.24]) by mailrelay5 (Halon) with ESMTPSA id 2feeb467-56d1-11ed-a23e-2b2c31a40212; Fri, 28 Oct 2022 14:59:57 +0000 (UTC) Message-ID: <752e48ea-9f11-59c7-779f-faf6ca3cbe71@ammitzboell-consult.dk> Date: Fri, 28 Oct 2022 16:59:56 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 To: hostap@lists.infradead.org Content-Language: en-US From: =?utf-8?q?Benny_L=C3=B8nstrup_Ammitzb=C3=B8ll?= Subject: [PATCH] Enable MACsec HW offload in driver_macsec_linux if supported X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221028_080012_830549_4C417567 X-CRM114-Status: GOOD ( 13.48 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From 65efbc9348fb767dd77d2f04418bececadeca71f Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Benny_L=C3=B8nstrup_Ammitzb=C3=B8ll?= Date: Fri, 28 Oct 2022 16:47:27 +0200 Subject: [PATCH [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From 65efbc9348fb767dd77d2f04418bececadeca71f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benny=20L=C3=B8nstrup=20Ammitzb=C3=B8ll?= Date: Fri, 28 Oct 2022 16:47:27 +0200 Subject: [PATCH] Enable MACsec HW offload in driver_macsec_linux if supported. Signed-off-by: Benny Ammitzboell --- src/drivers/driver_macsec_linux.c | 63 ++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver_macsec_linux.c b/src/drivers/driver_macsec_linux.c index b609bbf38..21697d6c5 100644 --- a/src/drivers/driver_macsec_linux.c +++ b/src/drivers/driver_macsec_linux.c @@ -677,6 +677,46 @@ out_free_msg: } +/** + * macsec_drv_try_enable_hw_offload - Try to enable hardware offload if possible + * @priv: Private driver interface data + * Returns: 0 on success, -1 on failure (or if not supported) + */ +static int macsec_drv_try_enable_hw_offload(void *priv, enum macsec_offload offl) +{ + struct macsec_drv_data *drv = priv; + struct macsec_genl_ctx *ctx = &drv->ctx; + struct nl_msg *msg; + struct nlattr *nest; + int ret = -1; + + wpa_printf(MSG_DEBUG, DRV_PREFIX "%s trying offl=%u", __func__, offl); + + msg = msg_prepare(MACSEC_CMD_UPD_OFFLOAD, ctx, drv->ifi); + if (!msg) + return ret; + + nest = nla_nest_start(msg, MACSEC_ATTR_OFFLOAD); + if (!nest) + goto nla_put_failure; + + NLA_PUT_U8(msg, MACSEC_OFFLOAD_ATTR_TYPE, offl); + + nla_nest_end(msg, nest); + + ret = nl_send_recv(ctx->sk, msg); + if (ret < 0) { + wpa_printf(MSG_ERROR, + DRV_PREFIX "failed to communicate: %d (%s)", + ret, nl_geterror(-ret)); + } + + nla_put_failure: + nlmsg_free(msg); + return ret; +} + + /** * macsec_drv_get_receive_lowest_pn - Get receive lowest PN * @priv: Private driver interface data @@ -1180,7 +1220,28 @@ static int macsec_drv_create_transmit_sc( /* In case some settings have already been done but we couldn't apply * them. */ - return try_commit(drv); + err = try_commit(drv); + if (err) + return err; + + /* Try to enable MACsec hardware offloading */ + err = macsec_drv_try_enable_hw_offload(drv, MACSEC_OFFLOAD_MAC); + if (err) { + err = macsec_drv_try_enable_hw_offload(drv, MACSEC_OFFLOAD_PHY); + if (err) { + wpa_printf(MSG_INFO, DRV_PREFIX + "%s: MACSEC_OFFLOAD_OFF", + drv->common.ifname); + } else { + wpa_printf(MSG_INFO, DRV_PREFIX + "%s: MACSEC_OFFLOAD_PHY", + drv->common.ifname); + } + } else { + wpa_printf(MSG_INFO, DRV_PREFIX + "%s: MACSEC_OFFLOAD_MAC", + drv->common.ifname); + } } -- 2.37.4