Is netmap jumbo frames broken in STABLE?

Andrew Vylegzhanin avv314 at gmail.com
Mon Jun 6 13:22:36 UTC 2016


Hello all,


I have an application that uses netmap for capture jumbo frames. The frames
are fixed size and have fixed rate (for example size 5166, rate 50000 pps).
The frames are pure Ethernet, without IP header.


Everything works fine in 10.0-RELEASE, 10.1-RELEASE.


Starting from 10.3 and actual 10-STABLE I've got wrong data from netmap
ring. It's looks like packet data broke and packet split on two parts 4092
and 1070 bytes,  where original size was 5166.

A code ring precessing is based on macros from netmap_user.h :


        n = nm_ring_space(ring);

        for (rx = 0; rx < limit; rx++) {

                struct netmap_slot *slot = &ring->slot[cur];

                char *p = NETMAP_BUF(ring, slot->buf_idx);

                process_payload(p, slot->len, datapx);

                cur = nm_ring_next(ring, cur);

        }

        ring->head = ring->cur = cur;


Here is netmap sysctl's:

dev.netmap.buf_num=81920

dev.netmap.ring_size=73728

dev.netmap.buf_size=5248


Hardware is Dell R720 (2x E5-2643 v2) with four Intel Ethernet 10G 2P X520
Adapter. I use only one hardware queue per interface.


BTW, may be a new version of Intel ixgbe driver (3.1.13-k) is a reason?


Does it make sense to try with 11-CURRENT?


Thank you in advance.


-- 

Andrew


More information about the freebsd-net mailing list