X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fena%2Fena_ethdev.c;h=97e383315b48fad9cfcddfa3984f921163989709;hb=1343c4153bf96d25add88c3e21ee5129095a6f7b;hp=807751973543bf624cb1ed019eed6eb43b1b7182;hpb=5723fbed4f969bb69b32927a138b272fb002fba1;p=dpdk.git diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 8077519735..97e383315b 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -570,7 +570,9 @@ static int ena_rss_reta_update(struct rte_eth_dev *dev, } } + rte_spinlock_lock(&adapter->admin_lock); rc = ena_com_indirect_table_set(ena_dev); + rte_spinlock_unlock(&adapter->admin_lock); if (unlikely(rc && rc != ENA_COM_UNSUPPORTED)) { PMD_DRV_LOG(ERR, "Cannot flush the indirect table\n"); return rc; @@ -599,7 +601,9 @@ static int ena_rss_reta_query(struct rte_eth_dev *dev, (reta_size > RTE_RETA_GROUP_SIZE && ((reta_conf + 1) == NULL))) return -EINVAL; + rte_spinlock_lock(&adapter->admin_lock); rc = ena_com_indirect_table_get(ena_dev, indirect_table); + rte_spinlock_unlock(&adapter->admin_lock); if (unlikely(rc && rc != ENA_COM_UNSUPPORTED)) { PMD_DRV_LOG(ERR, "cannot get indirect table\n"); return -ENOTSUP; @@ -954,7 +958,10 @@ static int ena_stats_get(struct rte_eth_dev *dev, return -ENOTSUP; memset(&ena_stats, 0, sizeof(ena_stats)); + + rte_spinlock_lock(&adapter->admin_lock); rc = ena_com_get_dev_basic_stats(ena_dev, &ena_stats); + rte_spinlock_unlock(&adapter->admin_lock); if (unlikely(rc)) { PMD_DRV_LOG(ERR, "Could not retrieve statistics from ENA\n"); return rc; @@ -1876,6 +1883,8 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev) goto err_delete_debug_area; } + rte_spinlock_init(&adapter->admin_lock); + rte_intr_callback_register(intr_handle, ena_interrupt_handler_rte, adapter);