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 55C5742B2A; Wed, 17 May 2023 10:54:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1ABA541611; Wed, 17 May 2023 10:54:49 +0200 (CEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2047.outbound.protection.outlook.com [40.107.101.47]) by mails.dpdk.org (Postfix) with ESMTP id 367FE4067B; Wed, 17 May 2023 10:54:47 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AJ4o3mK4gCyPmeGnvkyR6tUNb9f8eO2+6uygU9wGKgj8p7a62Ia2rKM/njlayB0bVgsuOIqja5kdmbkfSKLlyFCbne0x2vj/1VdIJW3jc9WdnjB6rdb5EnUQzXuTGpXMiiQF19QkXmZSztbPgnhhsSIrSDMuN0kpcOPO4YyvuMXxKtDEXVSm0bf5X3xKGZ25W7eHsZLUXo3ALFjNQgq6HvgNmiWgymnWuTyJfzgsSDIQJiIqxCsBBemsb0AinRt7icRMI0ojqxxL8y4zslMF4W/xaqR7X0VOplsyp/iwJIcb4O0vV7tvmfH2XETQlHUQRLx/OXjaeqUxlGMI86sV0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=P+9kGq1Iu1LckbnMhAi1jhQA4/fOg7a/ns18A/iv9RE=; b=VXiSP++4QRZF5Khl/aS73dX+dt304GiVdC2eEgFpIjjwg3FuwyT2a6GtWng0yREd0KNvNhG4BLg11H0NLTmqZo1ss2BDSw7ELmLFcFXyAyslWsnM2ak6w7dGNASwyZwkQcVyV+IIgFWBFPhzqibrPtCITxlUJo1Vh+3bzAP4Nr79Fr4I0YCRvsmEzcIads7kB8GDeQe47P02Mc7BxPT9S+kFg/cJw0HV+b+ANu7PkBHdCfN2Ub8XksGYcKDVfhRoqFTHcKunuSMub21McRLywxOvFjY/YUI8XyuVCK6P7ogZStfg1c1WcYgvcSNcQrxFw+6L3n6NrPVNQuQZ3scsbg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P+9kGq1Iu1LckbnMhAi1jhQA4/fOg7a/ns18A/iv9RE=; b=DQ2ckgG6E1p3EBXm5lDoGgLS3UFXCmBmGWzEijPsRB1QMaslAvHBnbc/qkd7fM/g2xsd7BSp973DYqqwRb8/H42CEpg+1gMDqhhjm6l9OAj4oTmgdoC64DeP0m8YbjLqNyfE4e6JoK2fw3tW82Rf1uKUuyzEDctEtzmVxNI3e+w= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by SA1PR12MB8842.namprd12.prod.outlook.com (2603:10b6:806:378::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.17; Wed, 17 May 2023 08:54:43 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::7957:641d:6aba:3f9a]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::7957:641d:6aba:3f9a%4]) with mapi id 15.20.6387.033; Wed, 17 May 2023 08:54:43 +0000 Message-ID: <8bdbde41-18d0-0b01-e706-d13eed98425f@amd.com> Date: Wed, 17 May 2023 09:53:47 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Content-Language: en-US To: "lihuisong (C)" Cc: thomas@monjalon.net, andrew.rybchenko@oktetlabs.ru, liudongdong3@huawei.com, huangdaode@huawei.com, fengchengwen@huawei.com, dev@dpdk.org, "techboard@dpdk.org" References: <20221020093102.20679-1-lihuisong@huawei.com> <20230202123625.14975-1-lihuisong@huawei.com> <9fe8b055-2530-0cc3-c5fd-6672b2f569c0@huawei.com> <6d809c54-ce59-2564-3cfb-7ffe681c8a7f@huawei.com> From: Ferruh Yigit Subject: Re: [PATCH V8] ethdev: fix one address occupies two entries in MAC addrs In-Reply-To: <6d809c54-ce59-2564-3cfb-7ffe681c8a7f@huawei.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO4P123CA0610.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:314::12) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|SA1PR12MB8842:EE_ X-MS-Office365-Filtering-Correlation-Id: 79b16036-bb55-4e5a-a5bc-08db56b45b61 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PMY2GkiQO2AXLh/thJ+bd4pS3K06q0Tbn/Pdxi0BPnas2XPIHwuDZLs9CAdt86KV7kHvBFbm5bdzNH95LJqUYYTBbdN8BvFgtM2MMebx5vbx+R1DXdpEPnAZeotzFHiNY5zNu2J/0kXhthNXjQ9p4OI2OGkfmXuLUNRV7psgWboEV1MaXF3RQMj8lVupKpUhCLTrEZpBSbzJRXfXgGSJGeP8rclos3o0/bXoBabyEUCTuBRWRWZ42L2Vl9p0qXPOjW5/mN2AMcKooQ7r6ByIr3/f49bfyy0Tlx2+MYAKK2Ijg1uOALHVVVm2zb8mkgE3M5hqC0x1nOVrp95BApEdHmTY7nmNS44siag5KVPUBHIxo7z7lfnUubPjYR1W9aGZhnTSnoJvxbDZ50NzyJ/opaPF7opjwW9/N3z6xW5OO2gxkhxnJUwX6g99OEVHxiTF7gBI0xGZaiIFFBDDS7GMNP0JLTiUG1jpGbcrjyiYmPFd2OICUp13wF4fpIMVNoE2JVb9GqUzt4Qr+Ab0kU5QNCtiBqMwO4l3kJrHbjUrv/nnxiGHAuhpn6bdW1927I3WhCucCl8nzE6mmV6xYdW58FSpfV/jfA9+Yap4wpyavmY0yjZw4E1WwrICU3o2yOc2JZODJnqdtIt5G78vsZTt8A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(346002)(366004)(376002)(396003)(136003)(39860400002)(451199021)(31686004)(66899021)(83380400001)(6916009)(41300700001)(8676002)(2906002)(8936002)(36756003)(5660300002)(31696002)(316002)(86362001)(38100700002)(4326008)(66476007)(66556008)(66946007)(53546011)(6512007)(6506007)(26005)(186003)(44832011)(478600001)(2616005)(6486002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?M0ZGZDU0Sy9BTFpDcEt6TzdoY09UK2owcTI5R3N6VEZOSkhmQ08rVmN2NkRz?= =?utf-8?B?SzRMMUR6UnBRa2pYanluZkVYQ2NPMlFPeXdHVS9HZHRPN3dKTzY0NWtzenUy?= =?utf-8?B?cmVmRm1iUVFRN3hhWE52NVc4cE5US0xpSXVENm40elNuU3ZrRHF2aWEwWHVG?= =?utf-8?B?cklwT1hRc2tUNUFtc1FCcSs2MFk4WHZjWjZRL3lnOEtQcGlBemUxcE4yYmRv?= =?utf-8?B?THVMWnVKTFlVQ0djb01lcTU3N09QOHJETjNybGs5M3c2SFR4NENzRy9oY0gr?= =?utf-8?B?Ym92MVEzU0pOd05BTVIwOVQ2OTFNS0ZpN05FNFRyejR0VFRHL1M0RHhrNUQ4?= =?utf-8?B?NVArdi9xaEFJTWJpSEh1ZVNQYWZTdkt2clBtVVZpeGljR1h0NVVvNzV1QUYz?= =?utf-8?B?dXpLNEFqUEdOQ1d2VVlSdVVCZFd1SytXYlpBd1NVZG11Y3RaT3VhaGh4Ny9a?= =?utf-8?B?UDVEM0V2blRWYkVtb0FzVWd3NGJRalB4MVVnV3l6ZEZCNnUrRlpHblFqN01t?= =?utf-8?B?K2VXU1lSRUZ0RDdrYStpSUtpVXVZZXAwQmJtdWlla3FCNWxlUUJXUTRFa0Nt?= =?utf-8?B?cFdnWjNiOEFHN3dOekRwWGh6V3M2dW5JblJiRVp2Y3hsYmFqS0RUa3JVRUow?= =?utf-8?B?MzNrY0hnYTI2K1FWaVNHbzg4Z1JxbjkzeGRuSTM4SU0wNzlhTlFJN2xaSWJR?= =?utf-8?B?UFRUU2dOUzg4bXVDb1NDS094YnhvRE4yZnhFMFp2NUhzSG1nanBmaUNuMjM3?= =?utf-8?B?Q0kvYzYzcWNuUDdMS25Xb1diVXE0YjNLeDFLdnB3NGxwRTN0emlUVWZ2dlc1?= =?utf-8?B?ek1yRVVEWUpwNk9IMllONk55bFYveWhTRFhlV0FKTXhwVTVOZlJsUnN6Z1lj?= =?utf-8?B?WXV0WnVVMmtBdHZhYS93dlJ6RFFvcUhTUFJaUmI0RHg4dHNwZVJMaVREWTJG?= =?utf-8?B?M0ltemFma0tsVnhuS0tScnZYejBvYmROOFFWQzRsOEI3NDdxSG9McDBwWHdi?= =?utf-8?B?emNxZnZkLzFoZFVpc1RacDg1ckVDVXp5S0gvTVlXYWphVzBuODI1eGR6K2VE?= =?utf-8?B?aTNORkZNTVlMbEZIVWRJSEFvL0l2YjhyQnlwaDhOeTVjd2xvZkZoZzlRcVVR?= =?utf-8?B?QmRFdkZnaVVqZzZuQTlJRlBuekl6dXJvMkgvS244djg3RnFCRzAyNmRSemZs?= =?utf-8?B?a0FKQXY4cU1haDZteU5YMktBTUhrQmtDdlUzQjhkS1p1SkNaNkI1N1o1Y3h6?= =?utf-8?B?ZkNMY2ExeEhORWNrOEE3TzlxNGdDZ2pmdVNpYkFxK3NwOWhzZURJTG5IU3R1?= =?utf-8?B?LzBYc0t4TEt6aXE0REwzK0pPOE9EL0U0OGlkWXprZ24vcEJNcldYb1VOSGlB?= =?utf-8?B?bCtFY0htMFBycU5YTHVCWEl5anBaOHc0TXpzZWc0WlhOc293czFGVGVUNVl5?= =?utf-8?B?Q3QyNUNXQzlIN0ZXR2EvUG5XVXY1T1VlOGQzK3MzMU1zY2NremE1MlZ5THpa?= =?utf-8?B?U1pXU2dBWHBvVStOZ0Q1NExXM2lyOWtnN0cvdE5hZHVxTHRuSXZaZkN2dzRh?= =?utf-8?B?M0NZdUhUZFVEVzRoc0Q4UHhveHZjbitKM2FqMjRrOE5JU2FvNU96QjByNkdW?= =?utf-8?B?cDFpaTAvdzBoR08zeWVoTXBSb2JMVjBlUkpmUnZWRnlGREdjWXhZcVg1WGdO?= =?utf-8?B?QmYvQWNFdWdiOXFpR0tocjZNK29FUllET0JCQVVBVHB2OTFUNS9rdTluRlQx?= =?utf-8?B?aThnZ3A5cGdrODNZQlBMSXM0MFUzR2E0S3BOZk1aSFk4TTlUeklCeE9aVzdQ?= =?utf-8?B?RlFMdGFFN0RhVUZXdHhGUVhpSFNSN3VDVG9PRHhnYjhpMmx5RFpiam1RdjhW?= =?utf-8?B?dmt5Zi9VakpCaGNTUWQyenA5MEdnVjZZWUVNMzN2WW9EdWpRSmtRTEVKRDRw?= =?utf-8?B?UTI1RU1GVUFJZ3RjM2l2Rnh5MEdDNDF0YkYvemU2VGU4QXFTVkVhODlNTlJq?= =?utf-8?B?T2xjMTVNSkhmT29kMlk3UW1Bb1BLb3RNVjZvNzQ4SVJYb29kckpqTWxvVEhF?= =?utf-8?B?R3hidWZrZHdKNURkcWMwUHhUa3V6eHM0TDBnV0E0UEdXRXdVWHVpcHVHbWwv?= =?utf-8?Q?r9qdCkVsMM0UgDVFdrM76+c6c?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79b16036-bb55-4e5a-a5bc-08db56b45b61 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2023 08:54:43.2420 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GhKg2nAHkwzD3eUeljxvACPA8swGFDzDSbH+OCiGJzJJ1sDYcbiqM6LOrPJK/7wn X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8842 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On 5/17/2023 8:45 AM, lihuisong (C) wrote: > > 在 2023/5/16 22:13, Ferruh Yigit 写道: >> On 5/16/2023 12:47 PM, lihuisong (C) wrote: >>> Hi Ferruh, >>> >>> There is no result on techboard. >>> How to deal with this problem next? >> +techboard for comment. >> >> >> Btw, what was your positioning to Bruce's suggestion, >> when a MAC address is in the list, fail to set it as default and enforce >> user do the corrective action (delete MAC explicitly etc...). > If a MAC address is in the list, rte_eth_dev_default_mac_addr_set > returns failure? Yes. In that case API can return EEXIST or similar. In this case user need to call 'rte_eth_dev_mac_addr_remove()' first and call 'rte_eth_dev_default_mac_addr_set()' again, if this is the intention. >> If you are OK with it, that is good for me too, unless techboard objects >> we can proceed with that one. >> >> >>> /Huisong >>> >>> 在 2023/2/2 20:36, Huisong Li 写道: >>>> The dev->data->mac_addrs[0] will be changed to a new MAC address when >>>> applications modify the default MAC address by .mac_addr_set(). >>>> However, >>>> if the new default one has been added as a non-default MAC address by >>>> .mac_addr_add(), the .mac_addr_set() doesn't remove it from the >>>> mac_addrs >>>> list. As a result, one MAC address occupies two entries in the list. >>>> Like: >>>> add(MAC1) >>>> add(MAC2) >>>> add(MAC3) >>>> add(MAC4) >>>> set_default(MAC3) >>>> default=MAC3, the rest of the list=MAC1, MAC2, MAC3, MAC4 >>>> Note: MAC3 occupies two entries. >>>> >>>> In addition, some PMDs, such as i40e, ice, hns3 and so on, do remove >>>> the >>>> old default MAC when set default MAC. If user continues to do >>>> set_default(MAC5), and the mac_addrs list is default=MAC5, >>>> filters=(MAC1, >>>> MAC2, MAC3, MAC4). At this moment, user can still see MAC3 from the >>>> list, >>>> but packets with MAC3 aren't actually received by the PMD. >>>> >>>> So need to ensure that the new default address is removed from the >>>> rest of >>>> the list if the address was already in the list. >>>> >>>> Fixes: 854d8ad4ef68 ("ethdev: add default mac address modifier") >>>> Cc: stable@dpdk.org >>>> >>>> Signed-off-by: Huisong Li >>>> Acked-by: Chengwen Feng >>>> --- >>>> v8: fix some comments. >>>> v7: add announcement in the release notes and document this behavior. >>>> v6: fix commit log and some code comments. >>>> v5: >>>>    - merge the second patch into the first patch. >>>>    - add error log when rollback failed. >>>> v4: >>>>     - fix broken in the patchwork >>>> v3: >>>>     - first explicitly remove the non-default MAC, then set default >>>> one. >>>>     - document default and non-default MAC address >>>> v2: >>>>     - fixed commit log. >>>> --- >>>>    doc/guides/rel_notes/release_23_03.rst |  6 +++++ >>>>    lib/ethdev/ethdev_driver.h             |  6 ++++- >>>>    lib/ethdev/rte_ethdev.c                | 35 >>>> ++++++++++++++++++++++++-- >>>>    lib/ethdev/rte_ethdev.h                |  3 +++ >>>>    4 files changed, 47 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/doc/guides/rel_notes/release_23_03.rst >>>> b/doc/guides/rel_notes/release_23_03.rst >>>> index 84b112a8b1..1c9b9912c2 100644 >>>> --- a/doc/guides/rel_notes/release_23_03.rst >>>> +++ b/doc/guides/rel_notes/release_23_03.rst >>>> @@ -105,6 +105,12 @@ API Changes >>>>       Also, make sure to start the actual text at the margin. >>>>       ======================================================= >>>>    +* ethdev: ensured all entries in MAC address list are uniques. >>>> +  When setting a default MAC address with the function >>>> +  ``rte_eth_dev_default_mac_addr_set``, >>>> +  the address is now removed from the rest of the address list >>>> +  in order to ensure it is only at index 0 of the list. >>>> + >>>>      ABI Changes >>>>    ----------- >>>> diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h >>>> index dde3ec84ef..3994c61b86 100644 >>>> --- a/lib/ethdev/ethdev_driver.h >>>> +++ b/lib/ethdev/ethdev_driver.h >>>> @@ -117,7 +117,11 @@ struct rte_eth_dev_data { >>>>          uint64_t rx_mbuf_alloc_failed; /**< Rx ring mbuf allocation >>>> failures */ >>>>    -    /** Device Ethernet link address. @see >>>> rte_eth_dev_release_port() */ >>>> +    /** >>>> +     * Device Ethernet link addresses. >>>> +     * All entries are unique. >>>> +     * The first entry (index zero) is the default address. >>>> +     */ >>>>        struct rte_ether_addr *mac_addrs; >>>>        /** Bitmap associating MAC addresses to pools */ >>>>        uint64_t mac_pool_sel[RTE_ETH_NUM_RECEIVE_MAC_ADDR]; >>>> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c >>>> index 86ca303ab5..de25183619 100644 >>>> --- a/lib/ethdev/rte_ethdev.c >>>> +++ b/lib/ethdev/rte_ethdev.c >>>> @@ -4498,7 +4498,10 @@ rte_eth_dev_mac_addr_remove(uint16_t port_id, >>>> struct rte_ether_addr *addr) >>>>    int >>>>    rte_eth_dev_default_mac_addr_set(uint16_t port_id, struct >>>> rte_ether_addr *addr) >>>>    { >>>> +    uint64_t mac_pool_sel_bk = 0; >>>>        struct rte_eth_dev *dev; >>>> +    uint32_t pool; >>>> +    int index; >>>>        int ret; >>>>          RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); >>>> @@ -4517,16 +4520,44 @@ rte_eth_dev_default_mac_addr_set(uint16_t >>>> port_id, struct rte_ether_addr *addr) >>>>        if (*dev->dev_ops->mac_addr_set == NULL) >>>>            return -ENOTSUP; >>>>    +    /* Keep address unique in dev->data->mac_addrs[]. */ >>>> +    index = eth_dev_get_mac_addr_index(port_id, addr); >>>> +    if (index > 0) { >>>> +        /* Remove address in dev data structure */ >>>> +        mac_pool_sel_bk = dev->data->mac_pool_sel[index]; >>>> +        ret = rte_eth_dev_mac_addr_remove(port_id, addr); >>>> +        if (ret < 0) { >>>> +            RTE_ETHDEV_LOG(ERR, "Cannot remove the port %u address >>>> from the rest of list.\n", >>>> +                       port_id); >>>> +            return ret; >>>> +        } >>>> +    } >>>>        ret = (*dev->dev_ops->mac_addr_set)(dev, addr); >>>>        if (ret < 0) >>>> -        return ret; >>>> +        goto out; >>>>          /* Update default address in NIC data structure */ >>>>        rte_ether_addr_copy(addr, &dev->data->mac_addrs[0]); >>>>          return 0; >>>> -} >>>>    +out: >>>> +    if (index > 0) { >>>> +        pool = 0; >>>> +        do { >>>> +            if (mac_pool_sel_bk & UINT64_C(1)) { >>>> +                if (rte_eth_dev_mac_addr_add(port_id, addr, >>>> +                                 pool) != 0) >>>> +                    RTE_ETHDEV_LOG(ERR, "failed to restore MAC pool >>>> id(%u) in port %u.\n", >>>> +                               pool, port_id); >>>> +            } >>>> +            mac_pool_sel_bk >>= 1; >>>> +            pool++; >>>> +        } while (mac_pool_sel_bk != 0); >>>> +    } >>>> + >>>> +    return ret; >>>> +} >>>>      /* >>>>     * Returns index into MAC address array of addr. Use >>>> 00:00:00:00:00:00 to find >>>> diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h >>>> index d22de196db..2456153457 100644 >>>> --- a/lib/ethdev/rte_ethdev.h >>>> +++ b/lib/ethdev/rte_ethdev.h >>>> @@ -4356,6 +4356,9 @@ int rte_eth_dev_mac_addr_remove(uint16_t port_id, >>>>      /** >>>>     * Set the default MAC address. >>>> + * It replaces the address at index 0 of the MAC address list. >>>> + * If the address was already in the MAC address list, >>>> + * it is removed from the rest of the list. >>>>     * >>>>     * @param port_id >>>>     *   The port identifier of the Ethernet device. >> .