[dpdk-dev] Errors Rx count increasing while pktgen doing nothing on Intel 82598EB 10G

Moon-Sang Lee sang0627 at gmail.com
Thu Jan 28 01:57:33 CET 2016


Helin, I implemented my own sample application that is a kind of carrier
grade NAT server.
It works fine on 1G NIC (i.e. Intel Corporation 82576 Gigabit Network
Connection (rev 01))
But, it does not receive packets on 10G NIC (i.e. Intel Corporation 82598EB
10-Gigabit AF Network Connection (rev 01)) as described in the previous
email.
According to my log messages, it seems that control register for RX DMA is
not enabled.

Here is some information about my environment.

1. HW & OS
[mslee at centos7 ~]$ uname -a
Linux centos7 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015
x86_64 x86_64 x86_64 GNU/Linux
[mslee at centos7 ~]$ more /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
stepping : 5
microcode : 0x19
cpu MHz : 2262.000
cache size : 8192 KB
physical id : 1
siblings : 8
core id : 0
cpu cores : 4
apicid : 16
initial apicid : 16
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp
lm c
onstant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc
aperfmperf
 pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1
sse4_2 po
pcnt lahf_lm ida dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 4521.93
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
...



2. port ocnfigure parameter for rte_eth_dev_configure():
ret = rte_eth_dev_configure(port, NB_RXQ, NB_TXQ, &port_conf);
where NB_RXQ=1, NB_TXQ=2, and
struct rte_eth_conf port_conf = {
    .rxmode = {
        //.mq_mode = ETH_MQ_RX_RSS,
        .mq_mode = ETH_MQ_RX_NONE,  // for 10G NIC
        .max_rx_pkt_len = ETHER_MAX_LEN,
        .split_hdr_size = 0,
        .header_split = 0,      // Header Split disabled
        .hw_ip_checksum = 0,    // IP checksum offload enabled
        .hw_vlan_filter = 0,    // VLAN filtering disabled
        .jumbo_frame = 0,       // Jumbo Frame Support disabled
        .hw_strip_crc = 0,      // CRC stripped by hardware
    },
    .rx_adv_conf = {
        .rss_conf = {
            .rss_key = NULL,
            .rss_hf = ETH_RSS_IP,
        },
    },
    .txmode = {
        .mq_mode = ETH_MQ_TX_NONE,
    },
};



3. rx queue setup parameter
ret = rte_eth_rx_queue_setup(port, RXQ_ID, NB_RXD, socket_id,  NULL,
pktmbuf_pool[socket_id])
where RXQ_ID = 0, NB_RXD = 128



4. config parameters in config/common_linuxapp
#
# Compile burst-oriented IXGBE PMD driver
#
CONFIG_RTE_LIBRTE_IXGBE_PMD=y
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
CONFIG_RTE_IXGBE_INC_VECTOR=y
CONFIG_RTE_IXGBE_RX_OLFLAGS_ENABLE=y



5. where log message is printed

dpdk-2.2.0/drivers/net/ixgbe/ixgbe_rxtx.c:

        /* Allocate buffers for descriptor rings */
        if (ixgbe_alloc_rx_queue_mbufs(rxq) != 0) {
            PMD_INIT_LOG(ERR, "Could not alloc mbuf for queue:%d",
                     rx_queue_id);
            return -1;
        }
        rxdctl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxq->reg_idx));
        rxdctl |= IXGBE_RXDCTL_ENABLE;
        IXGBE_WRITE_REG(hw, IXGBE_RXDCTL(rxq->reg_idx), rxdctl);

        /* Wait until RX Enable ready */
        poll_ms = RTE_IXGBE_REGISTER_POLL_WAIT_10_MS;
        do {
            rte_delay_ms(1);
            rxdctl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxq->reg_idx));
        } while (--poll_ms && !(rxdctl & IXGBE_RXDCTL_ENABLE));
        if (!poll_ms)
            PMD_INIT_LOG(ERR, "*Could not enable Rx Queue %d*",
 rx_queue_id);


I'm going to update firmware of my NIC, but I'm not sure it helps.
I appreciate any comment.



On Wed, Jan 27, 2016 at 4:23 PM, Zhang, Helin <helin.zhang at intel.com> wrote:

> Moon-Sang
>
> Were you using pktgen or else application?
> Could you help to share with me the detailed steps of your reproducing
> that issue?
> We will find time on that soon later. Thanks!
>
> Regards,
> Helin
>
> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Laurent GUERBY
> Sent: Wednesday, January 27, 2016 3:16 PM
> To: Moon-Sang Lee <sang0627 at gmail.com>
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] Errors Rx count increasing while pktgen doing
> nothing on Intel 82598EB 10G
>
> On Wed, 2016-01-27 at 15:50 +0900, Moon-Sang Lee wrote:
> >
> >
> > Laurent, have you resolved this problem?
> > I'm using the same NIC as yours (i.e. Intel 82598EB 10G NIC) and faced
> > the same problem as you.
> > Here is parts of my log and it says that PMD cannot enable RX queue
> > for my NIC.
> > I'm using DPDK 2.2.0 and used 'null' for the 4th parameter in calling
> > rte_eth_rx_queue_setup().
> > (i.e. 'null' parameter provides the default rx_conf value.)
>
> Hi,
>
> I had to reuse my DPDK machines for another task, I will go back to it
> after FOSDEM.
>
> The error you get is the same as mine.
>
> Sincerely,
>
> Laurent
>
> >
> > Thanks.
> >
> >
> >
> >
> >
> > APP: initialising port 0 ...
> > PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7f5f27258040
> > sw_sc_ring=0x7f5f27257b00 hw_ring=0x7f5f27258580 dma_addr=0x41f458580
> > PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f5f27245940
> > hw_ring=0x7f5f27247980 dma_addr=0x41f447980
> > PMD: ixgbe_set_tx_function(): Using simple tx code path
> > PMD: ixgbe_set_tx_function(): Vector tx enabled.
> > PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f5f272337c0
> > hw_ring=0x7f5f27235800 dma_addr=0x41f435800
> > PMD: ixgbe_set_tx_function(): Using simple tx code path
> > PMD: ixgbe_set_tx_function(): Vector tx enabled.
> > PMD: ixgbe_set_rx_function(): Vector rx enabled, please make sure RX
> > burst size no less than 4 (port=0).
> > PMD: ixgbe_dev_rx_queue_start(): Could not enable Rx Queue 0
> > APP: port 0 has started
> > APP: port 0 has entered in promiscuous mode
> > APP: port 0 initialization is done.
> > KNI: pci: 09:00:00 8086:10c7
> > APP: kni allocation is done for port 0.
> > APP: initialising port 1 ...
> > PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7f5f27222dc0
> > sw_sc_ring=0x7f5f27222880 hw_ring=0x7f5f27223300 dma_addr=0x41f423300
> > PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f5f272106c0
> > hw_ring=0x7f5f27212700 dma_addr=0x41f412700
> > PMD: ixgbe_set_tx_function(): Using simple tx code path
> > PMD: ixgbe_set_tx_function(): Vector tx enabled.
> > PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f5f271fe540
> > hw_ring=0x7f5f27200580 dma_addr=0x41f400580
> > PMD: ixgbe_set_tx_function(): Using simple tx code path
> > PMD: ixgbe_set_tx_function(): Vector tx enabled.
> > PMD: ixgbe_set_rx_function(): Vector rx enabled, please make sure RX
> > burst size no less than 4 (port=1).
> > PMD: ixgbe_dev_rx_queue_start(): Could not enable Rx Queue 0
> > APP: port 1 has started
> > APP: port 1 has entered in promiscuous mode
> > APP: port 1 initialization is done.
> > KNI: pci: 0a:00:00 8086:10c7
> > APP: kni allocation is done for port 1.
> >
> >
> > checking link status
> > .done
> > Port 0 Link Up - speed 10000 Mbps - full-duplex Port 1 Link Up - speed
> > 10000 Mbps - full-duplex
> >
> >
> >
> > On Mon, Dec 28, 2015 at 5:28 AM, Wiles, Keith <keith.wiles at intel.com>
> > wrote:
> >         On 12/27/15, 2:09 PM, "Laurent GUERBY" <laurent at guerby.net>
> >         wrote:
> >
> >         >On Sun, 2015-12-27 at 19:43 +0000, Wiles, Keith wrote:
> >         >> On 12/27/15, 12:31 PM, "dev on behalf of Laurent GUERBY"
> >         <dev-bounces at dpdk.org on behalf of laurent at guerby.net> wrote:
> >         >>
> >         >> >Hi,
> >         >> >
> >         >> >I reported today an issue when using Pktgen-DPDK:
> >         >> >https://github.com/pktgen/Pktgen-DPDK/issues/52
> >         >> >
> >         >> >But I think it's more in DPDK than pktgen
> >         >> >
> >         >> >two identical machines with SFP+ DA cable between them
> >         >> >DPDK 2.2.0 from tarball
> >         >> >Pktgen-DPDK from git
> >         >> >two identical machines:
> >         >> >core i7 2600 (sandy bridge 4C/8T), HT disabled in the BIOS
> >         >> >ASUS P8H67-M PRO BIOS 3904 (latest available)
> >         >> >Ethernet controller: Intel Corporation 82598EB 10-Gigabit
> >         AF Dual Port
> >         >> >Network Connection (rev 01)
> >         >> >01:00.0 0200: 8086:10f1 (rev 01)
> >         >> >    Subsystem: 8086:a21f
> >         >> >boot kernel 3.16 unbutu 14.04 with isolcpus=2,3,4
> >         >> >
> >         >> >When launching pktgen even with no TX asked the Errors RX
> >         counters keeps
> >         >> >going up by about 7.4 millions per second:
> >         >> >
> >         >> >Errors Rx/Tx : 7471857054/0
> >         >> >
> >         >> >In the log I get "Could not enable Rx Queue", might be the
> >         >> >source of the issue?
> >         >> >
> >         >> >PMD: ixgbe_dev_rx_queue_start(): Could not enable Rx Queue
> >         0
> >         >> >PMD: ixgbe_dev_rx_queue_start(): Could not enable Rx Queue
> >         1
> >         >> >
> >         >> >When sending traffic  single UDP src/dst/IP/MAC the setup
> >         >> >reaches 14204188 pps 64 bytes, the error counter is also
> >         >> >increasing.
> >         >> >
> >         >> >Any idea what to look for?
> >         >>
> >         >> One more suggestion is to run test_pmd on one machine and
> >         something
> >         >> like iperf on the other to verify the DPDK is working
> >         correct, which I
> >         >> assume will be true. Not sure the RX errors are reported in
> >         the
> >         >> test_pmd or you could use the l3fwd application too.
> >         >
> >         >Ok, I will check the test_pmd documentation and try to do
> >         this test: I'm
> >         >just starting on DPDK :).
> >         >
> >         >> Please also send me the 'lspci | grep Ethernet’ output.
> >         >
> >         >I included one line in my original email above (plus extract
> >         of lspci
> >         >-vn), here is the full output of the command:
> >         >
> >         >01:00.0 Ethernet controller: Intel Corporation 82598EB
> >         10-Gigabit AF
> >         >Dual Port Network Connection (rev 01)
> >         >01:00.1 Ethernet controller: Intel Corporation 82598EB
> >         10-Gigabit AF
> >         >Dual Port Network Connection (rev 01)
> >         >05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
> >         >RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
> >         (rev 06)
> >         >
> >         >(The realtek is used only for internet connectivity).
> >         >
> >         >> Also send me the command line.
> >         >
> >         >On the first machine t1 :
> >         >root at t1:~/pktgen-dpdk#
> ./app/app/x86_64-native-linuxapp-gcc/pktgen \
> >         >-c e -n 1 --proc-type auto -- -m '[2:3].1' -P -f t1-t3.pkt -N
> >         >
> >         >And on the other machine t3:
> >         >root at t3:~/pktgen-dpdk#
> ./app/app/x86_64-native-linuxapp-gcc/pktgen \
> >         >-c e -n 1 --proc-type auto -- -m '[2:3].1' -P -f t3-t1.pkt -N
> >
> >
> >         You need to always start with port numbering for Pktgen with
> >         zero.
> >
> >         Change the [2:3].1 to [2:3].0 the reason is you removed one of
> >         the two ports and Pktgen starts port counting from zero for
> >         the first available port :-)
> >
> >         Sorry, I did not spot that sooner.
> >         >
> >         >The two "-f" pkt files are attached to this email, I do
> >         "start 1"
> >         >manually at the pktgen prompt.
> >         >
> >         >Thanks for your time,
> >         >
> >         >Sincerely,
> >         >
> >         >Laurent
> >         >
> >         >
> >         >> >
> >         >> >Laurent
> >         >> >
> >         >> >
> >         >>
> >         >>
> >         >> Regards,
> >         >> Keith
> >         >>
> >         >>
> >         >>
> >         >>
> >         >
> >         >
> >
> >
> >         Regards,
> >         Keith
> >
> >
> >
> >
> >
> >
> >
> >
> > --
> > Moon-Sang Lee, SW Engineer
> > Email: sang0627 at gmail.com
> > Wisdom begins in wonder. *Socrates*
>
>
>


-- 
Moon-Sang Lee, SW Engineer
Email: sang0627 at gmail.com
Wisdom begins in wonder. *Socrates*


More information about the dev mailing list