dpdk 網絡卡佇列初始化
阿新 • • 發佈:2020-09-03
每個佇列都要設定
/* 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