Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Jun 2016 04:40:26 +0300
From:      Andrew Vylegzhanin <avv314@gmail.com>
To:        freebsd-net@freebsd.org
Cc:        Luigi Rizzo <rizzo@iet.unipi.it>, "Andrey V. Elsukov" <bu7cher@yandex.ru>,  Ryan Stone <rysto32@gmail.com>, tom.barbette@ulg.ac.be
Subject:   Re: Is netmap jumbo frames broken in STABLE?
Message-ID:  <CA%2BBi_YgvO%2Bptw6aN8-iPbMsb%2B3yMMZsdEdBDkLewSa=nQRLPFw@mail.gmail.com>
In-Reply-To: <1502708678.10983095.1465385308094.JavaMail.zimbra@ulg.ac.be>
References:  <CA%2BBi_YhqCnt5pQ_hC5zWdBp24=Zn3Rcj29AwtMrguPhSoJZSdQ@mail.gmail.com> <CA%2BhQ2%2BjcT_E4osrTB00%2Bf0gwSCoG_Zy%2BVdU8LXndqsjnmxPQ3Q@mail.gmail.com> <CAFMmRNy=PEFOxM4tGM7TQqpMnhTba17ACiaOcfuG8fkDET0RZw@mail.gmail.com> <CA%2BBi_YiqcOTw7T_dDzjis8yFu7oGd8G-av2BEaStXFiU7ovUCw@mail.gmail.com> <5756C17D.1090409@yandex.ru> <CA%2BhQ2%2Bjtd9FGuaJfJ6N1yt2%2BjSkez8Bj1usjpO%2BBCt-3Yvx2ww@mail.gmail.com> <1502708678.10983095.1465385308094.JavaMail.zimbra@ulg.ac.be>

next in thread | previous in thread | raw e-mail | index | archive | help
About week ago I've patched if_ix.c, just returned back code fragment of
max_frame_size determination from 2.8.3 version of ixgbe driver:

        /*
        ** Determine the correct mbuf pool
        ** for doing jumbo frames
        */

        if (adapter->max_frame_size <= 2048)
                adapter->rx_mbuf_sz = MCLBYTES;
        else if (adapter->max_frame_size <= 4096)
                adapter->rx_mbuf_sz = MJUMPAGESIZE;
        else if (adapter->max_frame_size <= 9216)
                adapter->rx_mbuf_sz = MJUM9BYTES;
        else
                adapter->rx_mbuf_sz = MJUM16BYTES;

After week of heavy testing everything is ok.

This solution is acceptable for me for now, because I use eight interfaces
in netmap mode only.
In future I want to make support something like dev.ix.N.jumbo_mbuf_enable
variable, since one of ix interfaces will be used for generic kernel stack
with jumbo frame support.

Doing with fragmented packet in netmap ring is also possible way, but need
more user cpu cycles for processing, I guess.
In any case I can test it when this  patch will be merged for netmap.

--
Andrew

2016-06-08 14:28 GMT+03:00 <tom.barbette@ulg.ac.be>:
>
> Support for fragmented packets with ixgbe was recently added on the linux
version of Netmap :
>
>
https://github.com/luigirizzo/netmap/commit/fc1e77560a8a8ea93cc3594de5fae94334debcd3
>
> I think the change for freebsd would be quite the same looking at
https://github.com/freebsd/freebsd/blob/master/sys/dev/netmap/ixgbe_netmap.h#L396
>
> After that, your userspace application simply have to check for the
NS_MOREFRAG flag in the receive ring, and if it's set he knows the end of
the packet will follow in the next buf.
>
> Tom



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BBi_YgvO%2Bptw6aN8-iPbMsb%2B3yMMZsdEdBDkLewSa=nQRLPFw>