1. 程式人生 > 實用技巧 >dpdk 網絡卡佇列初始化

dpdk 網絡卡佇列初始化

每個佇列都要設定

   /* Allocate and set up 1 RX queue per Ethernet port. */
        for (q = 0; q < rx_rings; q++) {
                retval = rte_eth_rx_queue_setup(port, q, nb_rxd,
                                rte_eth_dev_socket_id(port), NULL, mbuf_pool);
                if (retval < 0)
                        
return retval; }

ret = (*dev->dev_ops->rx_queue_setup)(dev, rx_queue_id, nb_rx_desc,
                                              socket_id, &local_conf, mp);

參考https://blog.csdn.net/hz5034/article/details/88367518

函式功能
rte_eth_dev_count() 網絡卡數
rte_eth_dev_configure() 配置網絡卡
rte_eth_rx_queue_setup()
rte_eth_tx_queue_setup()
為網絡卡分配接收/傳送佇列
rte_eth_dev_start() 啟動網絡卡
rte_eth_rx_burst()
rte_eth_tx_burst()
基於指定網絡卡指定佇列的收/發包函式

rte_eth_dev / rte_eth_dev_data

DPDK定義了一個rte_eth_devices陣列,陣列元素型別為struct rte_eth_dev,一個數組元素表示一塊網絡卡。struct rte_eth_dev有四個重要的成員:rx/tx_pkt_burst、dev_ops、data,其中前兩者分別是網絡卡的burst收/發包函式;dev_ops是網絡卡驅動註冊的函式表,型別為struct eth_dev_ops;data包含了網絡卡的主要資訊,型別為struct rte_eth_dev_data