| . /* 千兆:eth_igb_ops.rx_queue_setup = eth_igb_rx_queue_setup */ | +~> eth_igb_rx_queue_setup | . | . /* 万兆:ixgbe_eth_dev_ops.rx_queue_setup = ixgbe_dev_rx_queue_setup */ | +~> ixgbe_dev_rx_queue_setup | +-> rte_eth_tx_queue_setup /* 设置 以太网设备 的发...
rte_eth_dev_configure(portid, 1, 1, &port_conf); //分配网卡接收队列结构体,接收ring硬件描述符和软件ring等内存 rte_eth_rx_queue_setup(portid, 0, nb_rxd, rte_eth_dev_socket_id(portid), NULL, l2fwd_pktmbuf_pool); //分配网卡发送队列结构体,发送ring硬件描述符等内存 rte_eth_tx_queue_...
收包队列的构造主要是通过调用网卡队列设置函数rte_eth_rx_queue_setup(dpdk rte_ethdev.h)来完成。收包队列的结构体为ixgbe_rx_queue,该结构体里包含两个重要的环形队列rx_ring和sw_ring,rx_ring和sw_ring的关系可以简单如下认为。 rx_ring主要存储报文数据的物理地址,物理地址供网卡DMA使用,也称为DMA地址(硬...
将用户指定的配置信息dev_conf保存到devrte_eth_dev_configure(portid,1,1,&port_conf);//分配网卡接收队列结构体,接收ring硬件描述符和软件ring等内存rte_eth_rx_queue_setup(portid,0,nb_rxd,rte_eth_dev_socket_id(portid),NULL,l2fwd_pktmbuf_pool);//分配网卡发送队列结构体,发送ring硬件描述...
rte_eth_dev_count:获取被 DPDK App 接管的 eth 网卡数量。 rte_eth_dev_configure:根据 DPDK App 的需要,配置被 App 接管的 eth 网卡,实际上是配置 eth 网卡的驱动程序。 rte_eth_rx_queue_setup/rte_eth_tx_queue_setup:为网卡分配接收/发送队列。
rte_eth_dev_configure(gDpdkPortId, num_rx_queues, num_tx_queues, &port_conf); // 0是0号接收队列 // 128是队列长度 if (rte_eth_rx_queue_setup(gDpdkPortId, 0, 128, rte_eth_dev_socket_id(gDpdkPortId), NULL, mbuf_pool) < 0) { ...
rte_eth_rx_queue_setup()申请并设置一个收包队列。 关键参数: struct rte_mempool *mp; 由前文创建的pool rte_eth_tx_queue_setup() 同上。 rte_eth_dev_start()就是设置好了之后就启动啊,该收的收,该发的发。 rte_eth_promiscuous_enable()启动混杂模式,不解释。
retval =rte_eth_dev_adjust_nb_rx_tx_desc(port, &nb_rxd, &nb_txd);if(retval !=0)returnretval;// 初始化接收队列/* 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_...
5.如果queue数量向下调整(如4->1)会释放多余的3个queue资源。如果queue数量向上调整(如2->3)则会在原有基础上,新分配queue资源。rte_eth_tx_queue_setup()和rte_eth_rx_queue_setup()则调用具体driver的处理函数分配queue资源。 一些相同与不同点
59 /* non-temporal version not available, fallback to rte_prefetch0 */ 60 rte_prefetch0(p); 61 } cache相关 主要点是cache line,example中好些结构声明末尾有如下形式: 106 struct lcore_queue_conf { 107 unsigned n_rx_port; 108 unsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE]; ...