Messages in this thread | | | Date | Mon, 9 Oct 2023 13:20:36 -0700 | Subject | Re: [PATCH net-next v7 3/3] net: axienet: Introduce dmaengine support | From | Florian Fainelli <> |
| |
On 9/27/23 12:32, Radhey Shyam Pandey wrote: > Add dmaengine framework to communicate with the xilinx DMAengine > driver(AXIDMA). > > Axi ethernet driver uses separate channels for transmit and receive. > Add support for these channels to handle TX and RX with skb and > appropriate callbacks. Also add axi ethernet core interrupt for > dmaengine framework support. > > The dmaengine framework was extended for metadata API support. > However it still needs further enhancements to make it well suited for > ethernet usecases. The ethernet features i.e ethtool set/get of DMA IP > properties, ndo_poll_controller,(mentioned in TODO) are not supported > and it requires follow-up discussions. > > dmaengine support has a dependency on xilinx_dma as it uses > xilinx_vdma_channel_set_config() API to reset the DMA IP > which internally reset MAC prior to accessing MDIO. > > Benchmark with netperf: > > xilinx-zcu102-20232:~$ netperf -H 192.168.10.20 -t TCP_STREAM > MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET > to 192.168.10.20 () port 0 AF_INET > Recv Send Send > Socket Socket Message Elapsed > Size Size Size Time Throughput > bytes bytes bytes secs. 10^6bits/sec > > 131072 16384 16384 10.03 915.55 > > xilinx-zcu102-20232:~$ netperf -H 192.168.10.20 -t UDP_STREAM > MIGRATED UDP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET > to 192.168.10.20 () port 0 AF_INET > Socket Message Elapsed Messages > Size Size Time Okay Errors Throughput > bytes bytes secs # # 10^6bits/sec > > 212992 65507 10.00 18192 0 953.35 > 212992 10.00 18192 953.35 > > Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com> > --- [snip] > /** > * axienet_tx_poll - Invoked once a transmit is completed by the > * Axi DMA Tx channel. > @@ -911,7 +1036,43 @@ axienet_start_xmit(struct sk_buff *skb, struct net_device *ndev) > if (!lp->use_dmaengine) > return axienet_start_xmit_legacy(skb, ndev); > else > - return NETDEV_TX_BUSY; > + return axienet_start_xmit_dmaengine(skb, ndev);
Did not notice this before, but should consider using a separate set of net_device_ops with a different ndo_start_xmit() implementation, rather than add another layer of indirection here. -- Florian
| |