@@ -258,6 +258,23 @@ CommandResponse PMDPort::Init(const bess::pb::PMDPortArg &arg) {
258258
259259 eth_rxconf = dev_info.default_rxconf ;
260260 eth_rxconf.rx_drop_en = 1 ;
261+
262+ if (dev_info.rx_desc_lim .nb_min > 0 &&
263+ queue_size[PACKET_DIR_INC] < dev_info.rx_desc_lim .nb_min ) {
264+ int old_size_rxq = queue_size[PACKET_DIR_INC];
265+ queue_size[PACKET_DIR_INC] = dev_info.rx_desc_lim .nb_min ;
266+ LOG (WARNING) << " resizing RX queue size from " << old_size_rxq << " to "
267+ << queue_size[PACKET_DIR_INC];
268+ }
269+
270+ if (dev_info.rx_desc_lim .nb_max > 0 &&
271+ queue_size[PACKET_DIR_INC] > dev_info.rx_desc_lim .nb_max ) {
272+ int old_size_rxq = queue_size[PACKET_DIR_INC];
273+ queue_size[PACKET_DIR_INC] = dev_info.rx_desc_lim .nb_max ;
274+ LOG (WARNING) << " capping RX queue size from " << old_size_rxq << " to "
275+ << queue_size[PACKET_DIR_INC];
276+ }
277+
261278 for (int i = 0 ; i < num_rxq; i++) {
262279 ret = rte_eth_rx_queue_setup (ret_port_id, i, queue_size[PACKET_DIR_INC],
263280 sid, ð_rxconf,
@@ -267,6 +284,22 @@ CommandResponse PMDPort::Init(const bess::pb::PMDPortArg &arg) {
267284 }
268285 }
269286
287+ if (dev_info.tx_desc_lim .nb_min > 0 &&
288+ queue_size[PACKET_DIR_OUT] < dev_info.tx_desc_lim .nb_min ) {
289+ int old_size_txq = queue_size[PACKET_DIR_OUT];
290+ queue_size[PACKET_DIR_OUT] = dev_info.tx_desc_lim .nb_min ;
291+ LOG (WARNING) << " resizing TX queue size from " << old_size_txq << " to "
292+ << queue_size[PACKET_DIR_OUT];
293+ }
294+
295+ if (dev_info.tx_desc_lim .nb_max > 0 &&
296+ queue_size[PACKET_DIR_OUT] > dev_info.tx_desc_lim .nb_max ) {
297+ int old_size_txq = queue_size[PACKET_DIR_OUT];
298+ queue_size[PACKET_DIR_OUT] = dev_info.tx_desc_lim .nb_max ;
299+ LOG (WARNING) << " capping TX queue size from " << old_size_txq << " to "
300+ << queue_size[PACKET_DIR_OUT];
301+ }
302+
270303 for (int i = 0 ; i < num_txq; i++) {
271304 ret = rte_eth_tx_queue_setup (ret_port_id, i, queue_size[PACKET_DIR_OUT],
272305 sid, nullptr );
0 commit comments