From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EF9A5A0093 for ; Mon, 7 Mar 2022 16:10:43 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EAB054014E; Mon, 7 Mar 2022 16:10:43 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 59478411CB for ; Mon, 7 Mar 2022 16:10:42 +0100 (CET) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id A7D01C0000E6; Mon, 7 Mar 2022 07:10:40 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com A7D01C0000E6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1646665841; bh=/YbylfjsIK43dwgDo7nO+aVFWqXULUSG6Ophv75jALA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kmk3RC3ZFAX6+k9dGYnLdiEgpPWsQtZSM4lL3kXJHxUtF+sbxzyvlysVz0MwVD9nx ESA/4l1/KvI09ki36LmbWX7BOqN1CjmHBdmumzodGupXLTAwe05RLngLboCRMLStVP DbByJlt+d73Dckr6VjQuPe6bniZfZ07AgTvnVc+g= From: Kalesh A P To: stable@dpdk.org Cc: christian.ehrhardt@canonical.com, ajit.khaparde@broadcom.com Subject: [PATCH 19.11 2/8] net/bnxt: cap maximum number of unicast MAC addresses Date: Mon, 7 Mar 2022 20:40:30 +0530 Message-Id: <20220307151036.7116-3-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220307151036.7116-1-kalesh-anakkur.purayil@broadcom.com> References: <20220307151036.7116-1-kalesh-anakkur.purayil@broadcom.com> X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 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 From: Kalesh AP [ upstream commit 604a6be6b6c70cafdf055129d7d141d84509ad90 ] The Maximum number of receive mac addr is hard coded to 128 in the ethdev library(RTE_ETH_NUM_RECEIVE_MAC_ADDR). But the bnxt devices support more than 128 unicast MAC filters which could result in a segfault while user tries to add more than 128 unicast MAC addresses to the port. Fixes: a2033fda22ab ("net/bnxt: fix number of MAC addresses for VMDq") Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_ethdev.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index d4c63fa..4a1c1d7 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -559,7 +559,7 @@ static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev, return rc; /* MAC Specifics */ - dev_info->max_mac_addrs = bp->max_l2_ctx; + dev_info->max_mac_addrs = RTE_MIN(bp->max_l2_ctx, ETH_NUM_RECEIVE_MAC_ADDR); dev_info->max_hash_mac_addrs = 0; /* PF/VF specifics */ @@ -4927,11 +4927,15 @@ static int bnxt_alloc_stats_mem(struct bnxt *bp) static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; + size_t max_mac_addr = RTE_MIN(bp->max_l2_ctx, ETH_NUM_RECEIVE_MAC_ADDR); int rc = 0; + if (bp->max_l2_ctx > ETH_NUM_RECEIVE_MAC_ADDR) + PMD_DRV_LOG(INFO, "Max number of MAC addrs supported is %d, but will be limited to %d\n", + bp->max_l2_ctx, ETH_NUM_RECEIVE_MAC_ADDR); + eth_dev->data->mac_addrs = rte_zmalloc("bnxt_mac_addr_tbl", - RTE_ETHER_ADDR_LEN * - bp->max_l2_ctx, + RTE_ETHER_ADDR_LEN * max_mac_addr, 0); if (eth_dev->data->mac_addrs == NULL) { PMD_DRV_LOG(ERR, "Failed to alloc MAC addr tbl\n"); -- 2.10.1