[PATCH v6 1/2] net/iavf: accept up to 32k unicast MAC addresses

Burakov, Anatoly anatoly.burakov at intel.com
Thu Sep 10 14:13:47 CEST 2026


On 9/4/2026 2:28 PM, David Marchand wrote:
> E810 hardware provides 32k switch lookups.
> Thanks to this, it is possible to allow a lot more secondary mac
> addresses than what is possible today.
> 
> In practice, the maximum number of macs available per port may be lower
> and depends on usage by other (trusted?) VFs on the same PF.
> There is no way to figure out this limit but to try adding a mac address
> and get an error from the PF driver.
> 
> Mailbox exchanges are limited to IAVF_AQ_BUF_SZ, segment messages
> accordingly.
> 
> Signed-off-by: David Marchand <david.marchand at redhat.com>
> ---

On another note, I don't think this is even compatible with ethdev API.

In `ethdev_driver.h`:

struct __rte_cache_aligned rte_eth_dev_data {
	...
	/**
	 * 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];
	...
}

example of this bitmap in rte_eth_dev_mac_addr_remove:

	/* Update NIC */
	dev->dev_ops->mac_addr_remove(dev, index);

	/* Update address in NIC data structure */
	rte_ether_addr_copy(&null_mac_addr, &dev->data->mac_addrs[index]);

	/* reset pool bitmap */
	dev->data->mac_pool_sel[index] = 0;

	rte_ethdev_trace_mac_addr_remove(port_id, addr);

meaning, the mac_addrs array and the mac_pool_sel have the same 
limitation because they are indexed by the same index.

RTE_ETH_NUM_RECEIVE_MAC_ADDR is defined as 128, so correct me if I'm 
wrong here, but according to ethdev API one cannot have more than 128 
MAC addresses?

-- 
Thanks,
Anatoly


More information about the dev mailing list