X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fenic%2Fenic_main.c;h=7f84b5f935c7e4526e9e310e921da16e0eb54591;hb=bcd68b68415172815e55fc67cf3947c0433baf74;hp=f7ae84767f959d5f93f6522289872deb9a245e48;hpb=daa02b5cddbb8e11b31d41e2bf7bb1ae64dcae2f;p=dpdk.git diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c index f7ae84767f..7f84b5f935 100644 --- a/drivers/net/enic/enic_main.c +++ b/drivers/net/enic/enic_main.c @@ -448,7 +448,7 @@ enic_intr_handler(void *arg) rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL); enic_log_q_error(enic); /* Re-enable irq in case of INTx */ - rte_intr_ack(&enic->pdev->intr_handle); + rte_intr_ack(enic->pdev->intr_handle); } static int enic_rxq_intr_init(struct enic *enic) @@ -477,14 +477,16 @@ static int enic_rxq_intr_init(struct enic *enic) " interrupts\n"); return err; } - intr_handle->intr_vec = rte_zmalloc("enic_intr_vec", - rxq_intr_count * sizeof(int), 0); - if (intr_handle->intr_vec == NULL) { + + if (rte_intr_vec_list_alloc(intr_handle, "enic_intr_vec", + rxq_intr_count)) { dev_err(enic, "Failed to allocate intr_vec\n"); return -ENOMEM; } for (i = 0; i < rxq_intr_count; i++) - intr_handle->intr_vec[i] = i + ENICPMD_RXQ_INTR_OFFSET; + if (rte_intr_vec_list_index_set(intr_handle, i, + i + ENICPMD_RXQ_INTR_OFFSET)) + return -rte_errno; return 0; } @@ -494,10 +496,8 @@ static void enic_rxq_intr_deinit(struct enic *enic) intr_handle = enic->rte_dev->intr_handle; rte_intr_efd_disable(intr_handle); - if (intr_handle->intr_vec != NULL) { - rte_free(intr_handle->intr_vec); - intr_handle->intr_vec = NULL; - } + + rte_intr_vec_list_free(intr_handle); } static void enic_prep_wq_for_simple_tx(struct enic *enic, uint16_t queue_idx) @@ -667,10 +667,10 @@ int enic_enable(struct enic *enic) vnic_dev_enable_wait(enic->vdev); /* Register and enable error interrupt */ - rte_intr_callback_register(&(enic->pdev->intr_handle), + rte_intr_callback_register(enic->pdev->intr_handle, enic_intr_handler, (void *)enic->rte_dev); - rte_intr_enable(&(enic->pdev->intr_handle)); + rte_intr_enable(enic->pdev->intr_handle); /* Unmask LSC interrupt */ vnic_intr_unmask(&enic->intr[ENICPMD_LSC_INTR_OFFSET]); @@ -1111,8 +1111,8 @@ int enic_disable(struct enic *enic) (void)vnic_intr_masked(&enic->intr[i]); /* flush write */ } enic_rxq_intr_deinit(enic); - rte_intr_disable(&enic->pdev->intr_handle); - rte_intr_callback_unregister(&enic->pdev->intr_handle, + rte_intr_disable(enic->pdev->intr_handle); + rte_intr_callback_unregister(enic->pdev->intr_handle, enic_intr_handler, (void *)enic->rte_dev); @@ -1665,6 +1665,7 @@ int enic_set_mtu(struct enic *enic, uint16_t new_mtu) /* replace Rx function with a no-op to avoid getting stale pkts */ eth_dev->rx_pkt_burst = enic_dummy_recv_pkts; + rte_eth_fp_ops[enic->port_id].rx_pkt_burst = eth_dev->rx_pkt_burst; rte_mb(); /* Allow time for threads to exit the real Rx function. */ @@ -1699,6 +1700,7 @@ int enic_set_mtu(struct enic *enic, uint16_t new_mtu) /* put back the real receive function */ rte_mb(); enic_pick_rx_handler(eth_dev); + rte_eth_fp_ops[enic->port_id].rx_pkt_burst = eth_dev->rx_pkt_burst; rte_mb(); /* restart Rx traffic */