Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp531898ybt; Fri, 19 Jun 2020 07:37:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPQAuvZO9t7r63/aF87Rmv+eciJwy1W0rD2mF+dQyTpl3my/IZR3B2lDwZjt3bskmmBn7i X-Received: by 2002:a05:6402:308b:: with SMTP id de11mr3645949edb.181.1592577472484; Fri, 19 Jun 2020 07:37:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592577472; cv=none; d=google.com; s=arc-20160816; b=hXZUu/R0zdH1mrbdDRoZFYC/gS0qiS3r16hM9C4QZWtze6r1l9huSpqRTgD9rTtEVF o0SumgDhIql5NRS8mh23qTFUze0+Wiy4K1sbs12LafFKMVcqYBrHIzU7sdytvmsFpDFW ABqMuZcXwj6a1j3p+plPXZ1EjfWYYzWJVj5RTqG+URWNlvg9QKrkLKggkmONvV0YH6Pg mEHw4x+d3hsLx0Z0qX9aP0oWavqrnxsvwjIaMkI7b61sfMGc4RCYZ1X0DcDh2INyzN/S SWMaeB2deRnq9c8iN/nOyY48M2tiqKEqJk/LM4b4c6kHGcS9e81iKc/ZAXvvTdGH1Wm5 0T0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Cv1zrpU9i/feIUsJHJY4igrXbCUjdaFNDBoy9/47mEI=; b=BXBupMvIz98Afv89k2yZlIRYk8xfnJjhRCKpjF40OAV28Ayc9dPwtah4cMQanQKzrr 6YOSxqonrbJirj6x7zC65+OAwuBtQm9TFuacyBtpsfROf0MZUOfM7fxnAXyZ6dtwB8xU MpZU4yxoX5n1fh04zVwlGQtnSAUA3DjFiGur7X3Ydzpl/8PL4rdPM5ta7TxOmJLYnNEc HX/HXCnNDGr///v5HZAPuyDSWeql/ucD4v9UgwaVLtgjFOv0ywAXvuqdjSwHpD6aJG8a 0ys1NBqdVVxdn/0WCAdB0x56gPQPzXuO/vUVpMuTtpJTlwjnwy9Bfi2t+yZHshZVCL52 T3gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="iJejxK/L"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ss12si3870494ejb.188.2020.06.19.07.37.30; Fri, 19 Jun 2020 07:37:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="iJejxK/L"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733231AbgFSOc3 (ORCPT + 99 others); Fri, 19 Jun 2020 10:32:29 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:38459 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1733213AbgFSOc0 (ORCPT ); Fri, 19 Jun 2020 10:32:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592577144; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Cv1zrpU9i/feIUsJHJY4igrXbCUjdaFNDBoy9/47mEI=; b=iJejxK/LgRth1tMS3lL9dQ1hlaWeNGdYpAOxjhVq8Ra8cbYOoY0w4qHtO2aYsJmSzeYijg 0JvOWXWRrr8QE4qGvJAtENlBussloqVNclCOgexjb+rtMkz2WH867ZkOHO4UIDyZMv5iWE ZjmhrwxGMEy7UE5iqhnUCEa/Cfyczw0= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-163-EFRcKdwYNtmIkMzwbFJFyg-1; Fri, 19 Jun 2020 10:32:20 -0400 X-MC-Unique: EFRcKdwYNtmIkMzwbFJFyg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CA2D78BB3F3; Fri, 19 Jun 2020 14:32:18 +0000 (UTC) Received: from hp-dl360pgen8-07.khw2.lab.eng.bos.redhat.com (hp-dl360pgen8-07.khw2.lab.eng.bos.redhat.com [10.16.210.135]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7134E7C21D; Fri, 19 Jun 2020 14:32:14 +0000 (UTC) From: Jarod Wilson To: linux-kernel@vger.kernel.org Cc: Jarod Wilson , Jay Vosburgh , Veaceslav Falico , Andy Gospodarek , "David S. Miller" , Jeff Kirsher , Jakub Kicinski , Steffen Klassert , Herbert Xu , netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org, Jeff Kirsher Subject: [PATCH net-next v3 2/4] ixgbe_ipsec: become aware of when running as a bonding slave Date: Fri, 19 Jun 2020 10:31:53 -0400 Message-Id: <20200619143155.20726-3-jarod@redhat.com> In-Reply-To: <20200619143155.20726-1-jarod@redhat.com> References: <20200619143155.20726-1-jarod@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Slave devices in a bond doing hardware encryption also need to be aware that they're slaves, so we operate on the slave instead of the bonding master to do the actual hardware encryption offload bits. CC: Jay Vosburgh CC: Veaceslav Falico CC: Andy Gospodarek CC: "David S. Miller" CC: Jeff Kirsher CC: Jakub Kicinski CC: Steffen Klassert CC: Herbert Xu CC: netdev@vger.kernel.org CC: intel-wired-lan@lists.osuosl.org Acked-by: Jeff Kirsher Signed-off-by: Jarod Wilson --- .../net/ethernet/intel/ixgbe/ixgbe_ipsec.c | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c index 113f6087c7c9..26b0a58a064d 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c @@ -432,6 +432,9 @@ static int ixgbe_ipsec_parse_proto_keys(struct xfrm_state *xs, char *alg_name = NULL; int key_len; + if (xs->xso.slave_dev) + dev = xs->xso.slave_dev; + if (!xs->aead) { netdev_err(dev, "Unsupported IPsec algorithm\n"); return -EINVAL; @@ -478,8 +481,8 @@ static int ixgbe_ipsec_parse_proto_keys(struct xfrm_state *xs, static int ixgbe_ipsec_check_mgmt_ip(struct xfrm_state *xs) { struct net_device *dev = xs->xso.dev; - struct ixgbe_adapter *adapter = netdev_priv(dev); - struct ixgbe_hw *hw = &adapter->hw; + struct ixgbe_adapter *adapter; + struct ixgbe_hw *hw; u32 mfval, manc, reg; int num_filters = 4; bool manc_ipv4; @@ -497,6 +500,12 @@ static int ixgbe_ipsec_check_mgmt_ip(struct xfrm_state *xs) #define BMCIP_V6 0x3 #define BMCIP_MASK 0x3 + if (xs->xso.slave_dev) + dev = xs->xso.slave_dev; + + adapter = netdev_priv(dev); + hw = &adapter->hw; + manc = IXGBE_READ_REG(hw, IXGBE_MANC); manc_ipv4 = !!(manc & MANC_EN_IPV4_FILTER); mfval = IXGBE_READ_REG(hw, IXGBE_MFVAL); @@ -561,14 +570,21 @@ static int ixgbe_ipsec_check_mgmt_ip(struct xfrm_state *xs) static int ixgbe_ipsec_add_sa(struct xfrm_state *xs) { struct net_device *dev = xs->xso.dev; - struct ixgbe_adapter *adapter = netdev_priv(dev); - struct ixgbe_ipsec *ipsec = adapter->ipsec; - struct ixgbe_hw *hw = &adapter->hw; + struct ixgbe_adapter *adapter; + struct ixgbe_ipsec *ipsec; + struct ixgbe_hw *hw; int checked, match, first; u16 sa_idx; int ret; int i; + if (xs->xso.slave_dev) + dev = xs->xso.slave_dev; + + adapter = netdev_priv(dev); + ipsec = adapter->ipsec; + hw = &adapter->hw; + if (xs->id.proto != IPPROTO_ESP && xs->id.proto != IPPROTO_AH) { netdev_err(dev, "Unsupported protocol 0x%04x for ipsec offload\n", xs->id.proto); @@ -746,12 +762,19 @@ static int ixgbe_ipsec_add_sa(struct xfrm_state *xs) static void ixgbe_ipsec_del_sa(struct xfrm_state *xs) { struct net_device *dev = xs->xso.dev; - struct ixgbe_adapter *adapter = netdev_priv(dev); - struct ixgbe_ipsec *ipsec = adapter->ipsec; - struct ixgbe_hw *hw = &adapter->hw; + struct ixgbe_adapter *adapter; + struct ixgbe_ipsec *ipsec; + struct ixgbe_hw *hw; u32 zerobuf[4] = {0, 0, 0, 0}; u16 sa_idx; + if (xs->xso.slave_dev) + dev = xs->xso.slave_dev; + + adapter = netdev_priv(dev); + ipsec = adapter->ipsec; + hw = &adapter->hw; + if (xs->xso.flags & XFRM_OFFLOAD_INBOUND) { struct rx_sa *rsa; u8 ipi; -- 2.20.1