On Tue, Mar 05, 2024 at 11:46:00AM +0100, Julien Panis wrote:
On 3/1/24 17:38, Andrew Lunn wrote:
On Fri, Mar 01, 2024 at 04:02:53PM +0100, Julien Panis wrote:
This patch adds XDP (eXpress Data Path) support to TI AM65 CPSW Ethernet driver. The following features are implemented:
- NETDEV_XDP_ACT_BASIC (XDP_PASS, XDP_TX, XDP_DROP, XDP_ABORTED)
- NETDEV_XDP_ACT_REDIRECT (XDP_REDIRECT)
- NETDEV_XDP_ACT_NDO_XMIT (ndo_xdp_xmit callback)
The page pool memory model is used to get better performance.
Do you have any benchmark numbers? It should help with none XDP traffic as well. So maybe iperf numbers before and after?
Andrew
Argh...Houston, we have a problem. I checked my v3, which is ready for submission, with iperf3:
- Before = without page pool -> 500 MBits/sec
- After = with page pool -> 442 MBits/sec
-> ~ 10% worse with page pool here.
Unless the difference is not due to page pool. Maybe there's something else which is not good in my patch. I'm going to send the v3 which uses page pool, hopefully someone will find out something suspicious. Meanwhile, I'll carry on investigating: I'll check the results with my patch, by removing only the using of page pool.
You can also go the other way. First add page pool support. For the FEC, that improved its performance. Then add XDP, which i think decreased the performance a little. It is extra processing in the hot path, so a little loss is not unsurprising.
What tends to be expensive with ARM is cache invalidation and flush. So make sure you have the lengths correct. You don't want to operate on more memory than necessary. No point flushing the full MTU for a 64 byte TCP ACK, etc.
Andrew