Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp3795797imm; Fri, 25 May 2018 11:47:33 -0700 (PDT) X-Google-Smtp-Source: AB8JxZq+++8gloAXIUHTXe3n8BBGTB7j6pie0jz1LozEqW73Z2tZlHIA3gpEjhU6QH+OPnTVwRY4 X-Received: by 2002:a65:5ac9:: with SMTP id d9-v6mr2933596pgt.342.1527274053808; Fri, 25 May 2018 11:47:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527274053; cv=none; d=google.com; s=arc-20160816; b=LnFEU9q9j4SIRy+W9rTQ/BUe/1Pd3DHvb/Ht4bTRD4t9fR7+x8joN/QevlIoll5Yx5 UshwOYzVOFQvHA9hQRT5Hll9mC3a7VXVSrX7cpGI+7BZWn1Xc48cIW5su+cqtkqIFNoG wvyVkaqnSRZqlxXRS/v3BbLSexp1oD9UNH3dBZpa9IaMOUzOCpUzOF0tKSJpsYHU6Q35 Vb2wGjHlBmZXba64gUX56vJ3Z0GpRtZ4gNEqT9o2iqaZmV7BuhiM5JkuFAsoh27OEV4q EpWfWD4NXsZojUOilA0PFJxnw0ri/1OLpvoqnbKh7TYCqP5FUPGFvudhMozvjemWc385 SVTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=MMRSrcdqgRlBEMsvcXa07GNnnNX+ATy5ET5pMJjmnug=; b=MudMci66qUaQhig57hNPOI9Q5FJ6gV2ZAqGo7shog3vAtThJKxDxdYqJqMPa60mtmV WRoyhxk3xqzJlp+3oQIRF4Rdn708U0aBIPCAnqy9kt9WCtc0UOE0T1xQ/aQke/oxr+fz BJP21S0wh8j1h50MzG18olQEhTMJ3YGGe/a0SqD6uonKHo1SRK0q7cMAuV4quoDl1TNu /Ytvai6JJO2fliDFxspWTjsghPoC3jXc1TQRKScIt9rJG/Rg+S3Skmj46aznD7m9lNco Xt0EncqjqtViBcc+gptcYOrLClfMhw46RIMDoFkER8SQHSsNg9SdwjTZAP+lXf06+ZRM HYcA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e39-v6si24613342plg.168.2018.05.25.11.47.18; Fri, 25 May 2018 11:47:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S968102AbeEYSpJ (ORCPT + 99 others); Fri, 25 May 2018 14:45:09 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:8142 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S968030AbeEYSo7 (ORCPT ); Fri, 25 May 2018 14:44:59 -0400 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 09F319878A204; Sat, 26 May 2018 02:44:46 +0800 (CST) Received: from S00293818-DELL1.china.huawei.com (10.202.227.234) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.382.0; Sat, 26 May 2018 02:44:39 +0800 From: Salil Mehta To: CC: , , , , , , Subject: [PATCH net-next 06/12] net: hns3: Fixes the state to indicate client-type initialization Date: Fri, 25 May 2018 19:43:01 +0100 Message-ID: <20180525184307.36288-7-salil.mehta@huawei.com> X-Mailer: git-send-email 2.8.3 In-Reply-To: <20180525184307.36288-1-salil.mehta@huawei.com> References: <20180525184307.36288-1-salil.mehta@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.202.227.234] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Peng Li HNAE3 module supports kernel nic driver, user nic driver and roce driver, and there are 3 client types. Driver uses one bit(HNAE3_CLIENT_INITED_B) to indicate the client initialization state, it will cause confusion for 3 client types. This patch fixes it by use 3 bits to indicate the initialization state. Fixes: 38caee9d3ee8 ("net: hns3: Add support of the HNAE3 framework") Signed-off-by: Peng Li Signed-off-by: Salil Mehta --- drivers/net/ethernet/hisilicon/hns3/hnae3.c | 49 +++++++++++++++++++++++++++-- drivers/net/ethernet/hisilicon/hns3/hnae3.h | 4 ++- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.c b/drivers/net/ethernet/hisilicon/hns3/hnae3.c index 63d7dbf..9d79dad 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hnae3.c +++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.c @@ -36,6 +36,49 @@ static bool hnae3_client_match(enum hnae3_client_type client_type, return false; } +static void hnae3_set_client_init_flag(struct hnae3_client *client, + struct hnae3_ae_dev *ae_dev, int inited) +{ + switch (client->type) { + case HNAE3_CLIENT_KNIC: + hnae_set_bit(ae_dev->flag, HNAE3_KNIC_CLIENT_INITED_B, inited); + break; + case HNAE3_CLIENT_UNIC: + hnae_set_bit(ae_dev->flag, HNAE3_UNIC_CLIENT_INITED_B, inited); + break; + case HNAE3_CLIENT_ROCE: + hnae_set_bit(ae_dev->flag, HNAE3_ROCE_CLIENT_INITED_B, inited); + break; + default: + break; + } +} + +static int hnae3_get_client_init_flag(struct hnae3_client *client, + struct hnae3_ae_dev *ae_dev) +{ + int inited = 0; + + switch (client->type) { + case HNAE3_CLIENT_KNIC: + inited = hnae_get_bit(ae_dev->flag, + HNAE3_KNIC_CLIENT_INITED_B); + break; + case HNAE3_CLIENT_UNIC: + inited = hnae_get_bit(ae_dev->flag, + HNAE3_UNIC_CLIENT_INITED_B); + break; + case HNAE3_CLIENT_ROCE: + inited = hnae_get_bit(ae_dev->flag, + HNAE3_ROCE_CLIENT_INITED_B); + break; + default: + break; + } + + return inited; +} + static int hnae3_match_n_instantiate(struct hnae3_client *client, struct hnae3_ae_dev *ae_dev, bool is_reg) { @@ -56,14 +99,14 @@ static int hnae3_match_n_instantiate(struct hnae3_client *client, return ret; } - hnae_set_bit(ae_dev->flag, HNAE3_CLIENT_INITED_B, 1); + hnae3_set_client_init_flag(client, ae_dev, 1); return 0; } - if (hnae_get_bit(ae_dev->flag, HNAE3_CLIENT_INITED_B)) { + if (hnae3_get_client_init_flag(client, ae_dev)) { ae_dev->ops->uninit_client_instance(client, ae_dev); - hnae_set_bit(ae_dev->flag, HNAE3_CLIENT_INITED_B, 0); + hnae3_set_client_init_flag(client, ae_dev, 0); } return 0; diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h index 45c571e..f250c59 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h +++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h @@ -54,7 +54,9 @@ #define HNAE3_DEV_INITED_B 0x0 #define HNAE3_DEV_SUPPORT_ROCE_B 0x1 #define HNAE3_DEV_SUPPORT_DCB_B 0x2 -#define HNAE3_CLIENT_INITED_B 0x3 +#define HNAE3_KNIC_CLIENT_INITED_B 0x3 +#define HNAE3_UNIC_CLIENT_INITED_B 0x4 +#define HNAE3_ROCE_CLIENT_INITED_B 0x5 #define HNAE3_DEV_SUPPORT_ROCE_DCB_BITS (BIT(HNAE3_DEV_SUPPORT_DCB_B) |\ BIT(HNAE3_DEV_SUPPORT_ROCE_B)) -- 2.7.4