Hi, So I found my issue with vector mode not being enabled was due to a linking issue in my build environment, it was picking up the stub that returned -1 on the check of conditions, even though I had enabled vector mode in the config before I built the environment.
However now I have vector mode working, I never seem to free any mbufs, so my app works great for about a second, then of course everything coming in gets dropped. Is there something different I have to do to get my mbufs free'd if the vector rx function is being used rather than the bulk_alloc rx function? I can run the l2fwd function fine, and it is using vector mode, but L2fwd output Initializing port 0... PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are satisfied. Rx Burst Bulk Alloc function will be used on port=0, queue=0. PMD: i40e_set_tx_function_flag(): Vector tx can be enabled on this txq. PMD: i40e_set_tx_function(): Vector tx finally be used. PMD: i40e_set_rx_function(): Vector rx enabled, please make sure RX burst size no less than 4 (port=0). done: Port 0, MAC address: 68:05:CA:27:F1:BC My output PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are satisfied. Rx Burst Bulk Alloc function will be used on port=0, queue=0. PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are satisfied. Rx Burst Bulk Alloc function will be used on port=0, queue=1. PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are satisfied. Rx Burst Bulk Alloc function will be used on port=0, queue=2. PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are satisfied. Rx Burst Bulk Alloc function will be used on port=0, queue=3. PMD: i40e_set_tx_function(): Xmit tx finally be used. PMD: i40e_pf_config_rss(): Max of contiguous 4 PF queues are configured PMD: i40e_set_rx_function(): Vector rx enabled, please make sure RX burst size no less than 4 (port=0). So the code in i40e_rxtx.c seems to imply I should be either using vector or bulk dev->rx_pkt_burst = i40e_recv_pkts_vec; or dev->rx_pkt_burst = i40e_recv_pkts_bulk_alloc; I seem to be going through this function twice? But so does l2fwd... however l2fwd I think has the transmit function free up the buffers after they are sent? I use explicit calls to rte_mempool_put_bulk to free up buffers I've finished with? I can see a report in the release notes for 16.04.0 about an issue with ixgbe and releasing mbufs, did/does the i40e suffer from similar problems? Any suggestions gratefully received thanks Martin martin _ curran - gray @ keysight . com (remove the spaces) Martin Curran-Gray HW/FPGA/SW Engineer Keysight Technologies UK Ltd
