Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp1123465rwd; Tue, 13 Jun 2023 05:19:56 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4tQDHHn0nCvvF7BNOFeI6GFRUZ8qatxz+SVyMOOOmhOwWTfjaU6ZHCNKZOFw7ak9um7ZBt X-Received: by 2002:a17:907:6d96:b0:978:8979:c66c with SMTP id sb22-20020a1709076d9600b009788979c66cmr12215757ejc.18.1686658796436; Tue, 13 Jun 2023 05:19:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686658796; cv=none; d=google.com; s=arc-20160816; b=z5FcIPo3kvoY7LtCkDmdgdUIXDaw9O5zUbWtEPYcSyzZmn+kudGcNWMn1BJtTlZYhm vxm/MQf3PdejDQ288lTeNpg49c8/uKI1JPokmHCdrK0dhl8EfcZ77IDLoOjNRdKoMOX1 koKykU4KX/f8RfVRWYRYxH7UCheynkSK3FuB+9rsRX0A8Sa6aKZqmmva4+u2L71Gu4Cb 5eQ3aFp8Fwf2gH5g1lEZVWnvJ8x5WALeG2mr3rr97DwyckLY0Ho9ZWxmZ9SSyZQl7Ck1 4TEMSwO0i7JbhqK0EqOC5RdSsNHCv7OW/7VtXS795fMhtOh+AIg3df/VwBDCnwjhtse3 MSog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=x8Lx4CZ5JkvZXj2FnosCsfWTRe7EkuTyWCnNqOWAfBA=; b=OwD4CBj8DWStaT8/MCG0GCyl3n1T2IwzH3wGeYy2/WpYopmERNEPxNR0qevdD62Thl 0tRfA7QxuwdPdk0wklorY+RAoMRhnzdadXoMyKGolEJPHnBTHN51f70vQhjEClzLXrZ3 HpYBJTGwaE3a2FNwTjpL4IDuFSturOs5mHueDt47Uly6fLhfuDybIEPb25cVPVjk3msN l4q5WyRTi1/WrHZDIf8h3pjGHksnRrcvnpAwpzo0Kn265A5uT7dk7eSGy/8/psnluDlB fR38MEBUYM9oykJx0xl9gyaxe9jHRraLHkRFe67/NEJtQLcbpljbrT9dnfEqwrd7VXWm svPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=cxwwCaoG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g10-20020a1709061e0a00b0097391f75082si6553755ejj.838.2023.06.13.05.19.31; Tue, 13 Jun 2023 05:19:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=cxwwCaoG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S242201AbjFMMRG (ORCPT + 99 others); Tue, 13 Jun 2023 08:17:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56592 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239161AbjFMMRF (ORCPT ); Tue, 13 Jun 2023 08:17:05 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B4093B4 for ; Tue, 13 Jun 2023 05:16:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686658578; 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=x8Lx4CZ5JkvZXj2FnosCsfWTRe7EkuTyWCnNqOWAfBA=; b=cxwwCaoG35HXzL23pDZzTRauqvC8carkTbwc5n4liIXtx1UUJCks6myiQgMXhrbqJWJbWM 0Na9jVj5G6VOMJ5rjfuiEXf36VslpY/2DK/B4A9NYlEojz9EXhj4jQ01zbD2WX5omnuX9a VY5ZwEj6+oCb8wlKKdgmanZwqyoSu6o= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-588-699EPON0PX-PcHtYs6wIVg-1; Tue, 13 Jun 2023 08:16:15 -0400 X-MC-Unique: 699EPON0PX-PcHtYs6wIVg-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EEA25185A791; Tue, 13 Jun 2023 12:16:14 +0000 (UTC) Received: from p1.luc.cera.cz (unknown [10.43.2.89]) by smtp.corp.redhat.com (Postfix) with ESMTP id 787251410F01; Tue, 13 Jun 2023 12:16:13 +0000 (UTC) From: Ivan Vecera To: netdev@vger.kernel.org Cc: Ma Yuying , Jesse Brandeburg , Tony Nguyen , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , intel-wired-lan@lists.osuosl.org (moderated list:INTEL ETHERNET DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next 2/2] i40e: Wait for pending VF reset in VF set callbacks Date: Tue, 13 Jun 2023 14:16:10 +0200 Message-Id: <20230613121610.137654-2-ivecera@redhat.com> In-Reply-To: <20230613121610.137654-1-ivecera@redhat.com> References: <20230613121610.137654-1-ivecera@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 028daf80117376 ("i40e: Fix attach VF to VM issue") fixed a race between i40e_ndo_set_vf_mac() and i40e_reset_vf() during an attachment of VF device to VM. This issue is not related to setting MAC address only but also VLAN assignment to particular VF because the newer libvirt sets configured MAC address as well as an optional VLAN. The same behavior is also for i40e's .ndo_set_vf_rate and .ndo_set_vf_spoofchk where the callbacks just check if the VF was initialized but not wait for the finish of pending reset. Reproducer: [root@host ~]# virsh attach-interface guest hostdev --managed 0000:02:02.0 --mac 52:54:00:b4:aa:bb error: Failed to attach interface error: Cannot set interface MAC/vlanid to 52:54:00:b4:aa:bb/0 for ifname enp2s0f0 vf 0: Resource temporarily unavailable Fix this issue by using i40e_check_vf_init_timeout() helper to check whether a reset of particular VF was finished in i40e's .ndo_set_vf_vlan, .ndo_set_vf_rate and .ndo_set_vf_spoofchk callbacks. Tested-by: Ma Yuying Signed-off-by: Ivan Vecera --- .../net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index b84b6b675fa7..4741ba14ab27 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -4466,13 +4466,11 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev, int vf_id, } vf = &pf->vf[vf_id]; - vsi = pf->vsi[vf->lan_vsi_idx]; - if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { - dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n", - vf_id); + if (!i40e_check_vf_init_timeout(vf)) { ret = -EAGAIN; goto error_pvid; } + vsi = pf->vsi[vf->lan_vsi_idx]; if (le16_to_cpu(vsi->info.pvid) == vlanprio) /* duplicate request, so just return success */ @@ -4616,13 +4614,11 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate, } vf = &pf->vf[vf_id]; - vsi = pf->vsi[vf->lan_vsi_idx]; - if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { - dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n", - vf_id); + if (!i40e_check_vf_init_timeout(vf)) { ret = -EAGAIN; goto error; } + vsi = pf->vsi[vf->lan_vsi_idx]; ret = i40e_set_bw_limit(vsi, vsi->seid, max_tx_rate); if (ret) @@ -4789,9 +4785,7 @@ int i40e_ndo_set_vf_spoofchk(struct net_device *netdev, int vf_id, bool enable) } vf = &(pf->vf[vf_id]); - if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { - dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n", - vf_id); + if (!i40e_check_vf_init_timeout(vf)) { ret = -EAGAIN; goto out; } -- 2.39.3