• Shenwei Wang's avatar
    net: fec: using page pool to manage RX buffers · 95698ff6
    Shenwei Wang authored
    This patch optimizes the RX buffer management by using the page
    pool. The purpose for this change is to prepare for the following
    XDP support. The current driver uses one frame per page for easy
    management.
    
    Added __maybe_unused attribute to the following functions to avoid
    the compiling warning. Those functions will be removed by a separate
    patch once this page pool solution is accepted.
     - fec_enet_new_rxbdp
     - fec_enet_copybreak
    
    The following are the comparing result between page pool implementation
    and the original implementation (non page pool).
    
     --- small packet (64 bytes) testing are almost the same
     --- no matter what the implementation is
     --- on both i.MX8 and i.MX6SX platforms.
    
    shenwei@5810:~/pktgen$ iperf -c 10.81.16.245 -w 2m -i 1 -l 64
    ------------------------------------------------------------
    Client connecting to 10.81.16.245, TCP port 5001
    TCP window size:  416 KByte (WARNING: requested 1.91 MByte)
    ------------------------------------------------------------
    [  1] local 10.81.17.20 port 39728 connected with 10.81.16.245 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  1] 0.0000-1.0000 sec  37.0 MBytes   311 Mbits/sec
    [  1] 1.0000-2.0000 sec  36.6 MBytes   307 Mbits/sec
    [  1] 2.0000-3.0000 sec  37.2 MBytes   312 Mbits/sec
    [  1] 3.0000-4.0000 sec  37.1 MBytes   312 Mbits/sec
    [  1] 4.0000-5.0000 sec  37.2 MBytes   312 Mbits/sec
    [  1] 5.0000-6.0000 sec  37.2 MBytes   312 Mbits/sec
    [  1] 6.0000-7.0000 sec  37.2 MBytes   312 Mbits/sec
    [  1] 7.0000-8.0000 sec  37.2 MBytes   312 Mbits/sec
    [  1] 0.0000-8.0943 sec   299 MBytes   310 Mbits/sec
    
     --- Page Pool implementation on i.MX8 ----
    
    shenwei@5810:~$ iperf -c 10.81.16.245 -w 2m -i 1
    ------------------------------------------------------------
    Client connecting to 10.81.16.245, TCP port 5001
    TCP window size:  416 KByte (WARNING: requested 1.91 MByte)
    ------------------------------------------------------------
    [  1] local 10.81.17.20 port 43204 connected with 10.81.16.245 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  1] 0.0000-1.0000 sec   111 MBytes   933 Mbits/sec
    [  1] 1.0000-2.0000 sec   111 MBytes   934 Mbits/sec
    [  1] 2.0000-3.0000 sec   112 MBytes   935 Mbits/sec
    [  1] 3.0000-4.0000 sec   111 MBytes   933 Mbits/sec
    [  1] 4.0000-5.0000 sec   111 MBytes   934 Mbits/sec
    [  1] 5.0000-6.0000 sec   111 MBytes   933 Mbits/sec
    [  1] 6.0000-7.0000 sec   111 MBytes   931 Mbits/sec
    [  1] 7.0000-8.0000 sec   112 MBytes   935 Mbits/sec
    [  1] 8.0000-9.0000 sec   111 MBytes   933 Mbits/sec
    [  1] 9.0000-10.0000 sec   112 MBytes   935 Mbits/sec
    [  1] 0.0000-10.0077 sec  1.09 GBytes   933 Mbits/sec
    
     --- Non Page Pool implementation on i.MX8 ----
    
    shenwei@5810:~$ iperf -c 10.81.16.245 -w 2m -i 1
    ------------------------------------------------------------
    Client connecting to 10.81.16.245, TCP port 5001
    TCP window size:  416 KByte (WARNING: requested 1.91 MByte)
    ------------------------------------------------------------
    [  1] local 10.81.17.20 port 49154 connected with 10.81.16.245 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  1] 0.0000-1.0000 sec   104 MBytes   868 Mbits/sec
    [  1] 1.0000-2.0000 sec   105 MBytes   878 Mbits/sec
    [  1] 2.0000-3.0000 sec   105 MBytes   881 Mbits/sec
    [  1] 3.0000-4.0000 sec   105 MBytes   879 Mbits/sec
    [  1] 4.0000-5.0000 sec   105 MBytes   878 Mbits/sec
    [  1] 5.0000-6.0000 sec   105 MBytes   878 Mbits/sec
    [  1] 6.0000-7.0000 sec   104 MBytes   875 Mbits/sec
    [  1] 7.0000-8.0000 sec   104 MBytes   875 Mbits/sec
    [  1] 8.0000-9.0000 sec   104 MBytes   873 Mbits/sec
    [  1] 9.0000-10.0000 sec   104 MBytes   875 Mbits/sec
    [  1] 0.0000-10.0073 sec  1.02 GBytes   875 Mbits/sec
    
     --- Page Pool implementation on i.MX6SX ----
    
    shenwei@5810:~/pktgen$ iperf -c 10.81.16.245 -w 2m -i 1
    ------------------------------------------------------------
    Client connecting to 10.81.16.245, TCP port 5001
    TCP window size:  416 KByte (WARNING: requested 1.91 MByte)
    ------------------------------------------------------------
    [  1] local 10.81.17.20 port 57288 connected with 10.81.16.245 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  1] 0.0000-1.0000 sec  78.8 MBytes   661 Mbits/sec
    [  1] 1.0000-2.0000 sec  82.5 MBytes   692 Mbits/sec
    [  1] 2.0000-3.0000 sec  82.4 MBytes   691 Mbits/sec
    [  1] 3.0000-4.0000 sec  82.4 MBytes   691 Mbits/sec
    [  1] 4.0000-5.0000 sec  82.5 MBytes   692 Mbits/sec
    [  1] 5.0000-6.0000 sec  82.4 MBytes   691 Mbits/sec
    [  1] 6.0000-7.0000 sec  82.5 MBytes   692 Mbits/sec
    [  1] 7.0000-8.0000 sec  82.4 MBytes   691 Mbits/sec
    [  1] 8.0000-9.0000 sec  82.4 MBytes   691 Mbits/sec
    [  1] 9.0000-9.5506 sec  45.0 MBytes   686 Mbits/sec
    [  1] 0.0000-9.5506 sec   783 MBytes   688 Mbits/sec
    
     --- Non Page Pool implementation on i.MX6SX ----
    
    shenwei@5810:~/pktgen$ iperf -c 10.81.16.245 -w 2m -i 1
    ------------------------------------------------------------
    Client connecting to 10.81.16.245, TCP port 5001
    TCP window size:  416 KByte (WARNING: requested 1.91 MByte)
    ------------------------------------------------------------
    [  1] local 10.81.17.20 port 36486 connected with 10.81.16.245 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  1] 0.0000-1.0000 sec  70.5 MBytes   591 Mbits/sec
    [  1] 1.0000-2.0000 sec  64.5 MBytes   541 Mbits/sec
    [  1] 2.0000-3.0000 sec  73.6 MBytes   618 Mbits/sec
    [  1] 3.0000-4.0000 sec  73.6 MBytes   618 Mbits/sec
    [  1] 4.0000-5.0000 sec  72.9 MBytes   611 Mbits/sec
    [  1] 5.0000-6.0000 sec  73.4 MBytes   616 Mbits/sec
    [  1] 6.0000-7.0000 sec  73.5 MBytes   617 Mbits/sec
    [  1] 7.0000-8.0000 sec  73.4 MBytes   616 Mbits/sec
    [  1] 8.0000-9.0000 sec  73.4 MBytes   616 Mbits/sec
    [  1] 9.0000-10.0000 sec  73.9 MBytes   620 Mbits/sec
    [  1] 0.0000-10.0174 sec   723 MBytes   605 Mbits/sec
    Signed-off-by: default avatarShenwei Wang <shenwei.wang@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    95698ff6
fec_main.c 111 KB