• Matteo Croce's avatar
    mvpp2: prefetch page · 2f128eb3
    Matteo Croce authored
    Most of the time during the RX is caused by the compound_head() call
    done at the end of the RX loop:
    
           │     build_skb():
           [...]
           │     static inline struct page *compound_head(struct page *page)
           │     {
           │     unsigned long head = READ_ONCE(page->compound_head);
     65.23 │       ldr  x2, [x1, #8]
    
    Prefetch the page struct as soon as possible, to speedup the RX path
    noticeabily by a ~3-4% packet rate in a drop test.
    
           │     build_skb():
           [...]
           │     static inline struct page *compound_head(struct page *page)
           │     {
           │     unsigned long head = READ_ONCE(page->compound_head);
     17.92 │       ldr  x2, [x1, #8]
    Signed-off-by: default avatarMatteo Croce <mcroce@microsoft.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2f128eb3
mvpp2_main.c 206 KB