From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CB479A0527 for ; Mon, 9 Nov 2020 19:45:45 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C27F86A6F; Mon, 9 Nov 2020 19:45:44 +0100 (CET) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by dpdk.org (Postfix) with ESMTP id 209586A6F for ; Mon, 9 Nov 2020 19:45:44 +0100 (CET) Received: by mail-wr1-f65.google.com with SMTP id o15so2041771wru.6 for ; Mon, 09 Nov 2020 10:45:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QP9fftm7//fcFon39bLoJkQfFKGWkN6xGhgt9diwcsM=; b=hWjTqy5KFSNlJUQ45ag5NF/U2fuSYaO8RymlRY87CIluEAMpdcqFrZ6LDfKR/HMQW6 Uvpk7EeThhu88OecbwkOKjb+1D4RBbTUlgO9vVvE19V6EdLfEMJBbeuaCaXZuTpzKyVs 6gscrghhQsmiNKWQf9I5Xg9wPNBJF3Yg9jtg525dAJtXLk2YIHExs1SYr1Bjnts7ok/i rsgovMrbRU/27CXfTt00Ak7YjKjzAb8Q8QbwZtSe6GbEFj0CwWZ9T04ugHAhgfl4rbTM OqQWnegBwLdcUwBOpLF7yZjqbNsr13DLYhx4NINiYAlVJLozGLV6phvkIoFrvA4urDcr 20Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QP9fftm7//fcFon39bLoJkQfFKGWkN6xGhgt9diwcsM=; b=IwrXY9pXaG4ms1omcXpbawQX5PS8Q+3woJ88WEGqEuAyv02wSEYYS0spK9Pz/Ig6S2 BpLZppZ68YjcrQQpzENTF3OopPTefK+MsMofTUfXwiXuAX7jMzLWFMekJ799cIbnmS0+ 1KYgxgyDLreRQWDM1I6XyqRVQ1yd7gTNW3F66NFx3U2Pp2jeGMYEBDaGw5hsBLyzS4z9 pCuJNWOerz1f++aEVrFVzsRCrdlB4AbWibQcKvBEg5T6IJCznR4wkz3RuctpFQAL6URj c4xEe34ObUhxeZN+QJA03niJQTa5IbT7klKaQKFR2SfoOwDRpLn7RqCi2VTGtV+aLNEy UGxA== X-Gm-Message-State: AOAM530rGrVMZj7feE0FQ3WUNY8JDpghyAvrAMIaG5oOzbt8KW2vCaT3 ZgseI7nYaYsNlBwHi19Rj3y76gkwO0jp7WzJ X-Google-Smtp-Source: ABdhPJyOrZeqrxiAHp0Onngnp/KVeMoKYankEqCpIttq0TwCVNnSfGHazLUuLDNvY3VGZfeXkpmnjQ== X-Received: by 2002:adf:f3c7:: with SMTP id g7mr20848464wrp.394.1604947542894; Mon, 09 Nov 2020 10:45:42 -0800 (PST) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id y4sm325677wmj.2.2020.11.09.10.45.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Nov 2020 10:45:42 -0800 (PST) From: luca.boccassi@gmail.com To: Guoyang Zhou Cc: dpdk stable Date: Mon, 9 Nov 2020 18:41:06 +0000 Message-Id: <20201109184111.3463090-78-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201109184111.3463090-1-luca.boccassi@gmail.com> References: <20201028104606.3504127-207-luca.boccassi@gmail.com> <20201109184111.3463090-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/hinic/base: support two or more AEQS for chip' has been queued to stable release 19.11.6 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.6 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/11/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/d579dd24997d349203f43064caed20f521bf6380 Thanks. Luca Boccassi --- >From d579dd24997d349203f43064caed20f521bf6380 Mon Sep 17 00:00:00 2001 From: Guoyang Zhou Date: Wed, 4 Nov 2020 10:03:19 +0800 Subject: [PATCH] net/hinic/base: support two or more AEQS for chip [ upstream commit 17ff26b6302416a1b97d566fd744bf28488c76a8 ] For device initialize, driver only supports four aeqs before, and now driver can supports two or more aeqs from chip config file. Fixes: 611faa5f46cc ("fix various typos found by Lintian") Signed-off-by: Guoyang Zhou --- drivers/net/hinic/base/hinic_pmd_eqs.c | 8 ++-- drivers/net/hinic/base/hinic_pmd_eqs.h | 4 ++ drivers/net/hinic/base/hinic_pmd_mbox.c | 60 +++++++++++++++++++++---- drivers/net/hinic/base/hinic_pmd_mbox.h | 5 +-- 4 files changed, 60 insertions(+), 17 deletions(-) diff --git a/drivers/net/hinic/base/hinic_pmd_eqs.c b/drivers/net/hinic/base/hinic_pmd_eqs.c index 79e1b20bca..fecb653401 100644 --- a/drivers/net/hinic/base/hinic_pmd_eqs.c +++ b/drivers/net/hinic/base/hinic_pmd_eqs.c @@ -470,10 +470,10 @@ int hinic_comm_aeqs_init(struct hinic_hwdev *hwdev) struct irq_info aeq_irqs[HINIC_MAX_AEQS]; num_aeqs = HINIC_HWIF_NUM_AEQS(hwdev->hwif); - if (num_aeqs < HINIC_MAX_AEQS) { - PMD_DRV_LOG(ERR, "Warning: PMD need %d AEQs, Chip have %d", - HINIC_MAX_AEQS, num_aeqs); - return HINIC_ERROR; + if (num_aeqs < HINIC_MIN_AEQS) { + PMD_DRV_LOG(ERR, "PMD need %d AEQs, Chip has %d\n", + HINIC_MIN_AEQS, num_aeqs); + return -EINVAL; } memset(aeq_irqs, 0, sizeof(aeq_irqs)); diff --git a/drivers/net/hinic/base/hinic_pmd_eqs.h b/drivers/net/hinic/base/hinic_pmd_eqs.h index 16046ecde3..5e6dc3914b 100644 --- a/drivers/net/hinic/base/hinic_pmd_eqs.h +++ b/drivers/net/hinic/base/hinic_pmd_eqs.h @@ -9,6 +9,10 @@ #define HINIC_AEQN_START 0 #define HINIC_MAX_AEQS 4 +#define HINIC_MIN_AEQS 2 +#define HINIC_AEQN_0 0 +#define HINIC_AEQN_1 1 +#define HINIC_AEQN_2 2 #define HINIC_EQ_MAX_PAGES 8 diff --git a/drivers/net/hinic/base/hinic_pmd_mbox.c b/drivers/net/hinic/base/hinic_pmd_mbox.c index cfe91ddbad..ab99cfb5ad 100644 --- a/drivers/net/hinic/base/hinic_pmd_mbox.c +++ b/drivers/net/hinic/base/hinic_pmd_mbox.c @@ -298,15 +298,52 @@ mbox_copy_send_data(struct hinic_send_mbox *mbox, void *seg, u16 seg_len) mbox->data + MBOX_HEADER_SZ + i * sizeof(u32)); } +static int mbox_msg_ack_aeqn(struct hinic_hwdev *hwdev) +{ + u16 aeq_num = HINIC_HWIF_NUM_AEQS(hwdev->hwif); + int msg_ack_aeqn; + + if (aeq_num >= HINIC_MAX_AEQS - 1) { + msg_ack_aeqn = HINIC_AEQN_2; + } else if (aeq_num == HINIC_MIN_AEQS) { + /* This is used for ovs */ + msg_ack_aeqn = HINIC_AEQN_1; + } else { + PMD_DRV_LOG(ERR, "Warning: Invalid aeq num: %d\n", aeq_num); + msg_ack_aeqn = -1; + } + + return msg_ack_aeqn; +} + +static u16 mbox_msg_dst_aeqn(struct hinic_hwdev *hwdev, + enum hinic_hwif_direction_type seq_dir) +{ + u16 dst_aeqn; + + if (seq_dir == HINIC_HWIF_DIRECT_SEND) + dst_aeqn = HINIC_AEQN_0; + else + dst_aeqn = mbox_msg_ack_aeqn(hwdev); + + return dst_aeqn; +} + +static int mbox_seg_ack_aeqn(struct hinic_hwdev *hwdev) +{ + return mbox_msg_ack_aeqn(hwdev); +} + static void write_mbox_msg_attr(struct hinic_mbox_func_to_func *func_to_func, - u16 dst_func, u16 dst_aeqn, + u16 dst_func, u16 dst_aeqn, u16 seg_ack_aeqn, __rte_unused u16 seg_len, int poll) { u32 mbox_int, mbox_ctrl; mbox_int = HINIC_MBOX_INT_SET(dst_func, DST_FUNC) | HINIC_MBOX_INT_SET(dst_aeqn, DST_AEQN) | - HINIC_MBOX_INT_SET(HINIC_MBOX_RSP_AEQN, SRC_RESP_AEQN) | + /* N/A in polling mode */ + HINIC_MBOX_INT_SET(seg_ack_aeqn, SRC_RESP_AEQN) | HINIC_MBOX_INT_SET(NO_DMA_ATTRIBUTE_VAL, STAT_DMA) | HINIC_MBOX_INT_SET(ALIGN(MBOX_SIZE, MBOX_SEG_LEN_ALIGN) >> 2, TX_SIZE) | @@ -552,19 +589,21 @@ static int send_mbox_seg(struct hinic_mbox_func_to_func *func_to_func, struct hinic_send_mbox *send_mbox = &func_to_func->send_mbox; struct hinic_hwdev *hwdev = func_to_func->hwdev; u16 seq_dir = HINIC_MBOX_HEADER_GET(header, DIRECTION); - u16 dst_aeqn = (seq_dir == HINIC_HWIF_DIRECT_SEND) ? - HINIC_MBOX_RECV_AEQN : HINIC_MBOX_RSP_AEQN; + u16 dst_aeqn, seg_ack_aeqn; u16 err_code, wb_status = 0; u32 cnt = 0; + dst_aeqn = mbox_msg_dst_aeqn(hwdev, seq_dir); + seg_ack_aeqn = mbox_seg_ack_aeqn(hwdev); + clear_mbox_status(send_mbox); mbox_copy_header(send_mbox, &header); mbox_copy_send_data(send_mbox, seg, seg_len); - write_mbox_msg_attr(func_to_func, dst_func, dst_aeqn, seg_len, - MBOX_SEND_MSG_POLL); + write_mbox_msg_attr(func_to_func, dst_func, dst_aeqn, seg_ack_aeqn, + seg_len, MBOX_SEND_MSG_POLL); rte_wmb(); @@ -698,7 +737,7 @@ static int hinic_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func, goto send_err; time = msecs_to_jiffies(timeout ? timeout : HINIC_MBOX_COMP_TIME_MS); - err = hinic_aeq_poll_msg(func_to_func->rsp_aeq, time, NULL); + err = hinic_aeq_poll_msg(func_to_func->ack_aeq, time, NULL); if (err) { set_mbox_to_func_event(func_to_func, EVENT_TIMEOUT); PMD_DRV_LOG(ERR, "Send mailbox message time out"); @@ -921,13 +960,16 @@ void hinic_comm_func_to_func_free(struct hinic_hwdev *hwdev) int hinic_comm_func_to_func_init(struct hinic_hwdev *hwdev) { int rc; + u16 msg_ack_aeqn; rc = hinic_func_to_func_init(hwdev); if (rc) return rc; - hwdev->func_to_func->rsp_aeq = &hwdev->aeqs->aeq[HINIC_MBOX_RSP_AEQN]; - hwdev->func_to_func->recv_aeq = &hwdev->aeqs->aeq[HINIC_MBOX_RECV_AEQN]; + msg_ack_aeqn = mbox_msg_ack_aeqn(hwdev); + + hwdev->func_to_func->ack_aeq = &hwdev->aeqs->aeq[msg_ack_aeqn]; + hwdev->func_to_func->recv_aeq = &hwdev->aeqs->aeq[HINIC_AEQN_0]; return 0; } diff --git a/drivers/net/hinic/base/hinic_pmd_mbox.h b/drivers/net/hinic/base/hinic_pmd_mbox.h index bf7b4906dc..dc08b99f47 100644 --- a/drivers/net/hinic/base/hinic_pmd_mbox.h +++ b/drivers/net/hinic/base/hinic_pmd_mbox.h @@ -5,9 +5,6 @@ #ifndef _HINIC_PMD_MBOX_H_ #define _HINIC_PMD_MBOX_H_ -#define HINIC_MBOX_RECV_AEQN 0 -#define HINIC_MBOX_RSP_AEQN 2 - #define HINIC_MBOX_PF_SEND_ERR 0x1 #define HINIC_MBOX_PF_BUSY_ACTIVE_FW 0x2 #define HINIC_MBOX_VF_CMD_ERROR 0x3 @@ -69,7 +66,7 @@ struct hinic_mbox_func_to_func { struct hinic_recv_mbox mbox_resp[HINIC_MAX_FUNCTIONS]; struct hinic_recv_mbox mbox_send[HINIC_MAX_FUNCTIONS]; - struct hinic_eq *rsp_aeq; + struct hinic_eq *ack_aeq; struct hinic_eq *recv_aeq; u8 send_msg_id; -- 2.27.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-11-09 18:40:14.061603966 +0000 +++ 0078-net-hinic-base-support-two-or-more-AEQS-for-chip.patch 2020-11-09 18:40:11.231312838 +0000 @@ -1 +1 @@ -From 17ff26b6302416a1b97d566fd744bf28488c76a8 Mon Sep 17 00:00:00 2001 +From d579dd24997d349203f43064caed20f521bf6380 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 17ff26b6302416a1b97d566fd744bf28488c76a8 ] + @@ -11 +12,0 @@ -Cc: stable@dpdk.org @@ -56 +57 @@ -index ab1106a37d..ff44c25a85 100644 +index cfe91ddbad..ab99cfb5ad 100644 @@ -59 +60 @@ -@@ -297,15 +297,52 @@ mbox_copy_send_data(struct hinic_send_mbox *mbox, void *seg, u16 seg_len) +@@ -298,15 +298,52 @@ mbox_copy_send_data(struct hinic_send_mbox *mbox, void *seg, u16 seg_len) @@ -114 +115 @@ -@@ -551,19 +588,21 @@ static int send_mbox_seg(struct hinic_mbox_func_to_func *func_to_func, +@@ -552,19 +589,21 @@ static int send_mbox_seg(struct hinic_mbox_func_to_func *func_to_func, @@ -140 +141 @@ -@@ -697,7 +736,7 @@ static int hinic_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func, +@@ -698,7 +737,7 @@ static int hinic_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func, @@ -149 +150 @@ -@@ -920,13 +959,16 @@ void hinic_comm_func_to_func_free(struct hinic_hwdev *hwdev) +@@ -921,13 +960,16 @@ void hinic_comm_func_to_func_free(struct hinic_hwdev *hwdev)