Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp185303ybh; Tue, 17 Mar 2020 20:58:33 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuuhgTrp8jWX1uWYEYaS8D9DYcun+6hSSXrR3Wuritts6shJTS+7fcK7j7NpB99SQ3MXh/G X-Received: by 2002:a9d:1920:: with SMTP id j32mr2098384ota.221.1584503913726; Tue, 17 Mar 2020 20:58:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584503913; cv=none; d=google.com; s=arc-20160816; b=pYIFEbuisc0bLVziyDgWlFKAhEioQ6v33VHggc4dGxW1DvJ6uIEqFxYLeCwLc5L0FD XiDupil11HktlnWvwIpCUZ2TfbgkTtODcE3Vi9ZqdEsoo31Mgq+USICHzYGDW5c1+4Nf eqxzSns8blI4yz/RmRrYu3UGp9IZm6bGKr3NNYweEw4KZGv87yIPi+YvO2yWqgBL8kjw AH8aka26oxVaCWXUVqvirfMZm5TqwR+eW7e5vyuyOmMPJWaDbWG5z5U59jHHmX1tK9eA K+luFK+mYHN+hl9emYvDBWmI3DV/cXOYz5e1fesoXh66LYhaPFgQ9USkPTJUfRnLvwJ/ ueyQ== 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; bh=HrvOlSvIX4hTDGYaDbtPSFGjs3tzAS15aODeG1GtbX8=; b=zX7VVlxO4t4TOw4G23AIPHqeL8BtzGyclJBIvUmNTvOEvOt+wdv167XgCiVlAK09B7 lzWY92viMNA1Hnan1aHNyFvbDDtXPZhGgLBmm9J5dRJEdfrLfdrQZRuAOt5pENNE7jVa GFCsjbG6+XThppZvv/iAsLKBqyFaPMGLANkxqEU+8/PJNmeyMLjO4euTxoFqnq91Ftv7 jhU66S3u98Mb5hlHPnHhFyHaX347cRPMOXrBGSjT+bIJjqOoa+wLyFl/J7hBW6giU4n2 jdAcX4NzM6/tHvb4pVjfx+MYc6y1w0z0GztGZlq5fx0rwuomn0/BTT7o1bysun46RRUX NM5w== 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 18si2670491oin.182.2020.03.17.20.58.22; Tue, 17 Mar 2020 20:58: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 S1727334AbgCRD6E (ORCPT + 99 others); Tue, 17 Mar 2020 23:58:04 -0400 Received: from szxga06-in.huawei.com ([45.249.212.32]:58046 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726506AbgCRD6D (ORCPT ); Tue, 17 Mar 2020 23:58:03 -0400 Received: from DGGEMS409-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 5B60A565C5BCC4FE207F; Wed, 18 Mar 2020 11:57:52 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS409-HUB.china.huawei.com (10.3.19.209) with Microsoft SMTP Server id 14.3.487.0; Wed, 18 Mar 2020 11:57:41 +0800 From: Huazhong Tan To: CC: , , , , , , Jian Shen , Huazhong Tan Subject: [PATCH net-next 1/3] net: hns3: add a conversion for mailbox's response code Date: Wed, 18 Mar 2020 11:57:05 +0800 Message-ID: <1584503827-12025-2-git-send-email-tanhuazhong@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1584503827-12025-1-git-send-email-tanhuazhong@huawei.com> References: <1584503827-12025-1-git-send-email-tanhuazhong@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jian Shen Currently, when mailbox handling fails, the PF driver just responds 1 to the VF driver. It is not sufficient for the VF driver to find out why its mailbox fails. So the error should be responded to VF, but the error is type int and the response field in struct hclge_mbx_pf_to_vf_cmd is type u16, a conversion is needed. Signed-off-by: Jian Shen Signed-off-by: Huazhong Tan --- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 16 +++++++++++++++- drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c | 7 ++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c index 3d850f6..c24fd8c 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c @@ -5,6 +5,11 @@ #include "hclge_mbx.h" #include "hnae3.h" +static u16 hclge_errno_to_resp(int errno) +{ + return abs(errno); +} + /* hclge_gen_resp_to_vf: used to generate a synchronous response to VF when PF * receives a mailbox message from VF. * @vport: pointer to struct hclge_vport @@ -21,6 +26,7 @@ static int hclge_gen_resp_to_vf(struct hclge_vport *vport, struct hclge_dev *hdev = vport->back; enum hclge_cmd_status status; struct hclge_desc desc; + u16 resp; resp_pf_to_vf = (struct hclge_mbx_pf_to_vf_cmd *)desc.data; @@ -43,7 +49,15 @@ static int hclge_gen_resp_to_vf(struct hclge_vport *vport, resp_pf_to_vf->msg[0] = HCLGE_MBX_PF_VF_RESP; resp_pf_to_vf->msg[1] = vf_to_pf_req->msg[0]; resp_pf_to_vf->msg[2] = vf_to_pf_req->msg[1]; - resp_pf_to_vf->msg[3] = (resp_status == 0) ? 0 : 1; + resp = hclge_errno_to_resp(resp_status); + if (resp < SHRT_MAX) { + resp_pf_to_vf->msg[3] = resp; + } else { + dev_warn(&hdev->pdev->dev, + "failed to send response to VF, response status %d is out-of-bound\n", + resp); + resp_pf_to_vf->msg[3] = EIO; + } if (resp_data && resp_data_len > 0) memcpy(&resp_pf_to_vf->msg[4], resp_data, resp_data_len); diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c index 7cbd715..5b481f9 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c @@ -5,6 +5,11 @@ #include "hclgevf_main.h" #include "hnae3.h" +static int hclgevf_resp_to_errno(u16 resp_code) +{ + return resp_code ? -resp_code : 0; +} + static void hclgevf_reset_mbx_resp_status(struct hclgevf_dev *hdev) { /* this function should be called with mbx_resp.mbx_mutex held @@ -193,7 +198,7 @@ void hclgevf_mbx_handler(struct hclgevf_dev *hdev) resp->origin_mbx_msg = (req->msg[1] << 16); resp->origin_mbx_msg |= req->msg[2]; - resp->resp_status = req->msg[3]; + resp->resp_status = hclgevf_resp_to_errno(req->msg[3]); temp = (u8 *)&req->msg[4]; for (i = 0; i < HCLGE_MBX_MAX_RESP_DATA_SIZE; i++) { -- 2.7.4