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 D8461A09F0; Wed, 16 Dec 2020 22:13:40 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 81CA6C9D8; Wed, 16 Dec 2020 22:13:25 +0100 (CET) Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by dpdk.org (Postfix) with ESMTP id 787B2C9D6 for ; Wed, 16 Dec 2020 22:13:23 +0100 (CET) Received: by mail-pl1-f170.google.com with SMTP id v3so13647914plz.13 for ; Wed, 16 Dec 2020 13:13:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=g5MRGZOM2ag3W4mzO0OaYTErIvBW8n30gLP1q6tXNSI=; b=KJEXrlRBe+EdAzVam27gSy4cbOUmFecxeuPZA1xKDIw3uT8vCKwbVdFul2HQlz7TFc JCQ2CbafBkRrLg5AsEtfqyynwJOGFLKtI96ToBjbp5rkVy9JwdkvTKiG7JTEVkQSbDxa DqGy1q4ZH5lX9Uh8YS9XXcBnzYTmw8B1E4FYLMpYw8OavrC7cRaOgihXfLyAfJervmv2 B2zhhNJ+cyCHI2JDzJvTGypJPHalFEj+DreoAUd7auUoCkPG44K3XWDkOI1X2wMhrKnq Kk8uN1S4VQUrZ/LxKq+sW2QfJwGNaD+7ovCEVHSKmAheb01kwqkqrvtvEcg5WV3stvlP +cWA== 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:in-reply-to:references; bh=g5MRGZOM2ag3W4mzO0OaYTErIvBW8n30gLP1q6tXNSI=; b=geKfsIWUfp4np+yu0zkza++VSJr/L+W8eHLsjfF7T8pYmIM4a60F4hNvd0urE4sRzY 3GzEup4CZceGsCNkF8e8H8TMloj5NjSMxW6rwgNiFC2prtKW1iW3KUHqVGBlIFmX8hII uEfZxmAW78IEi2L0bPjknA0ya3vrFwu4MR2Ks12iKM6A06YqQQFPb6sQOSGdymRz7mjd U42Ix4rzrvN+HxHwcB4OcjK4U9aRIe7NisphgNeOTnvMmFIaPAuOeQT/DTUgmcNaVB+V SQiomCfG2ybpig+NZIiNqnZzU24H58ZUCHNKsHZK8JTIW3tEoEUuXU/uimGzOWT+ikLc ewnw== X-Gm-Message-State: AOAM531Wl9f7d78Igz9HNiBJ7xtfE6BsKapqtZp3sBEgWO5Q4NkGWgGU gqVQuEzL41/HhBgrVn2pMgIg3MwhD1osgg== X-Google-Smtp-Source: ABdhPJyRFCr0ianEs5VvwPeWx2Crxbd9sX63CA31HIAHXXK2XFA6W4Hnfg0bm6O1kxjnks7W5aPxKw== X-Received: by 2002:a17:902:bb92:b029:d9:e9bf:b775 with SMTP id m18-20020a170902bb92b02900d9e9bfb775mr8117251pls.24.1608153201376; Wed, 16 Dec 2020 13:13:21 -0800 (PST) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id r67sm3345614pfc.82.2020.12.16.13.13.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Dec 2020 13:13:20 -0800 (PST) From: Andrew Boyer To: dev@dpdk.org Cc: Alfredo Cardigliano , Andrew Boyer Date: Wed, 16 Dec 2020 13:12:51 -0800 Message-Id: <20201216211257.37195-2-aboyer@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216211257.37195-1-aboyer@pensando.io> References: <20201216211257.37195-1-aboyer@pensando.io> In-Reply-To: <20201210142231.63209-1-aboyer@pensando.io> References: <20201210142231.63209-1-aboyer@pensando.io> Subject: [dpdk-dev] [PATCH v2 1/7] net/ionic: preserve RSS state unless RETA size changes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This preserves settings across a LIF stop/start. This will become important when link toggling is tied to LIF stop/start. Signed-off-by: Andrew Boyer --- drivers/net/ionic/ionic_lif.c | 44 ++++++++++++++++------------------- drivers/net/ionic/ionic_lif.h | 1 + 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c index 28ae9dc8a..646c921b2 100644 --- a/drivers/net/ionic/ionic_lif.c +++ b/drivers/net/ionic/ionic_lif.c @@ -962,8 +962,6 @@ ionic_lif_rss_config(struct ionic_lif *lif, static int ionic_lif_rss_setup(struct ionic_lif *lif) { - size_t tbl_size = sizeof(*lif->rss_ind_tbl) * - lif->adapter->ident.lif.eth.rss_ind_tbl_sz; static const uint8_t toeplitz_symmetric_key[] = { 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, @@ -971,34 +969,35 @@ ionic_lif_rss_setup(struct ionic_lif *lif) 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, }; - uint32_t socket_id = rte_socket_id(); uint32_t i; - int err; + uint16_t tbl_sz = lif->adapter->ident.lif.eth.rss_ind_tbl_sz; IONIC_PRINT_CALL(); - lif->rss_ind_tbl_z = rte_eth_dma_zone_reserve(lif->eth_dev, - "rss_ind_tbl", - 0 /* queue_idx*/, tbl_size, IONIC_ALIGN, socket_id); - if (!lif->rss_ind_tbl_z) { - IONIC_PRINT(ERR, "OOM"); - return -ENOMEM; - } + lif->rss_ind_tbl_z = rte_eth_dma_zone_reserve(lif->eth_dev, + "rss_ind_tbl", 0 /* queue_idx */, + sizeof(*lif->rss_ind_tbl) * tbl_sz, + IONIC_ALIGN, rte_socket_id()); + if (!lif->rss_ind_tbl_z) { + IONIC_PRINT(ERR, "OOM"); + return -ENOMEM; + } - lif->rss_ind_tbl = lif->rss_ind_tbl_z->addr; - lif->rss_ind_tbl_pa = lif->rss_ind_tbl_z->iova; + lif->rss_ind_tbl = lif->rss_ind_tbl_z->addr; + lif->rss_ind_tbl_pa = lif->rss_ind_tbl_z->iova; + } - /* Fill indirection table with 'default' values */ - for (i = 0; i < lif->adapter->ident.lif.eth.rss_ind_tbl_sz; i++) - lif->rss_ind_tbl[i] = i % lif->nrxqcqs; + if (lif->rss_ind_tbl_nrxqcqs != lif->nrxqcqs) { + lif->rss_ind_tbl_nrxqcqs = lif->nrxqcqs; - err = ionic_lif_rss_config(lif, IONIC_RSS_OFFLOAD_ALL, - toeplitz_symmetric_key, NULL); - if (err) - return err; + /* Fill indirection table with 'default' values */ + for (i = 0; i < tbl_sz; i++) + lif->rss_ind_tbl[i] = i % lif->nrxqcqs; + } - return 0; + return ionic_lif_rss_config(lif, IONIC_RSS_OFFLOAD_ALL, + toeplitz_symmetric_key, NULL); } static void @@ -1578,9 +1577,6 @@ ionic_lif_start(struct ionic_lif *lif) uint32_t i; int err; - IONIC_PRINT(DEBUG, "Setting RSS configuration on port %u", - lif->port_id); - err = ionic_lif_rss_setup(lif); if (err) return err; diff --git a/drivers/net/ionic/ionic_lif.h b/drivers/net/ionic/ionic_lif.h index 8e2b42443..b80931c61 100644 --- a/drivers/net/ionic/ionic_lif.h +++ b/drivers/net/ionic/ionic_lif.h @@ -108,6 +108,7 @@ struct ionic_lif { uint8_t *rss_ind_tbl; rte_iova_t rss_ind_tbl_pa; const struct rte_memzone *rss_ind_tbl_z; + uint32_t rss_ind_tbl_nrxqcqs; uint32_t info_sz; struct ionic_lif_info *info; rte_iova_t info_pa; -- 2.17.1