X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Focteontx%2Focteontx_ethdev.c;h=e8aa4ec78b1056ee4ffae28e362523aa90a77181;hb=9614459b1eaa31ca074519ace4bbfdadb9b12fde;hp=40d9d67dab36b94476f0827f20bf1cd2b7550604;hpb=9e399b88ce2f103165512d4005611a1f709deb1d;p=dpdk.git diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c index 40d9d67dab..e8aa4ec78b 100644 --- a/drivers/net/octeontx/octeontx_ethdev.c +++ b/drivers/net/octeontx/octeontx_ethdev.c @@ -577,13 +577,14 @@ octeontx_dev_mac_addr_del(struct rte_eth_dev *dev, uint32_t index) static int octeontx_dev_mac_addr_add(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr, - __rte_unused uint32_t index, + uint32_t index, __rte_unused uint32_t vmdq) { struct octeontx_nic *nic = octeontx_pmd_priv(dev); int ret; - ret = octeontx_bgx_port_mac_add(nic->port_id, mac_addr->addr_bytes); + ret = octeontx_bgx_port_mac_add(nic->port_id, mac_addr->addr_bytes, + index); if (ret < 0) { octeontx_log_err("failed to add MAC address filter on port %d", nic->port_id); @@ -598,12 +599,21 @@ octeontx_dev_default_mac_addr_set(struct rte_eth_dev *dev, struct rte_ether_addr *addr) { struct octeontx_nic *nic = octeontx_pmd_priv(dev); + uint8_t prom_mode = dev->data->promiscuous; int ret; + dev->data->promiscuous = 0; ret = octeontx_bgx_port_mac_set(nic->port_id, addr->addr_bytes); - if (ret != 0) + if (ret == 0) { + /* Update same mac address to BGX CAM table */ + ret = octeontx_bgx_port_mac_add(nic->port_id, addr->addr_bytes, + 0); + } + if (ret < 0) { + dev->data->promiscuous = prom_mode; octeontx_log_err("failed to set MAC address on port %d", - nic->port_id); + nic->port_id); + } return ret; } @@ -1153,6 +1163,9 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, /* Update port_id mac to eth_dev */ memcpy(data->mac_addrs, nic->mac_addr, RTE_ETHER_ADDR_LEN); + /* Update same mac address to BGX CAM table at index 0 */ + octeontx_bgx_port_mac_add(nic->port_id, nic->mac_addr, 0); + PMD_INIT_LOG(DEBUG, "ethdev info: "); PMD_INIT_LOG(DEBUG, "port %d, port_ena %d ochan %d num_ochan %d tx_q %d", nic->port_id, nic->port_ena,