From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:38603) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNG4u-00089T-BU for qemu-devel@nongnu.org; Wed, 03 Apr 2013 01:17:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UNG4t-00023h-FK for qemu-devel@nongnu.org; Wed, 03 Apr 2013 01:17:44 -0400 Received: from mail-pa0-f51.google.com ([209.85.220.51]:54236) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNG4t-00023Y-94 for qemu-devel@nongnu.org; Wed, 03 Apr 2013 01:17:43 -0400 Received: by mail-pa0-f51.google.com with SMTP id jh10so691392pab.38 for ; Tue, 02 Apr 2013 22:17:42 -0700 (PDT) Sender: Peter Crosthwaite From: Peter Crosthwaite Date: Wed, 3 Apr 2013 15:17:00 +1000 Message-Id: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v5 00/16] Stream Patches List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, edgar.iglesias@gmail.com Cc: Peter Crosthwaite Hi all. The Xilinx AXIEnet and DMA devices have two AXI stream connections (control and data), only one of which is currently modelled (data). AXI stream is modelled using the stream QOM interface described in stream.h. Unfortunately, interfaces have no nice way of modelling multiple connections of the same type. So to overcome this I created a secondary object which acts as a proxy for the stream connection. Multiple connections can be implemented using multiple proxies and stream masters link to the relevant proxy, rather than the ethernet device itself. This Series changes AXI Enet and DMA to be connected as such. Also changed the stream interface to implement flow control handshaking. This is needed for the AXIEnet to be be able to implement the net can_receive() flow control. Patches 1-10 are low-impact cleanup of axienet/dma as per the current QOM styling guidelines and can be cherry-picked off the front. changed from v4: resynchronized control flow stream API reordered series for better consistency. Folded patch 17 in 16 (app array length fix) Fixed DMA tx path halted bit changed from v3: Changed from asynchronous flow control to synchronous (Edgar review) changed from v2: Reordered patches (from low impact -> high impact) Added styling refactoring of AXIDMA Added asynchronous patches Removed dummy second stream connection patch (former patch 8) Added (functional) second stream connection changed from v1: Removed former P1&2 (already merged) Address Andreas review Refactor axienet to be more QOM friendly. Peter Crosthwaite (16): xilinx_axienet: typedef XilinxAXIEnet struct xilinx_axienet: Defined and use type cast macro xilinx_axienet: Register reset properly xilinx_axienet: converted init->realize xilinx_axidma: typedef XilinxAXIDMA struct xilinx_axidma: Defined and use type cast macro xilinx_axidma: Register reset properly xilinx_axidma: converted init->realize petalogix_ml605_mmu: Fix machine node attachment petalogix_ml605_mmu: Attach ethernet to machine xilinx_axienet: Create Proxy object for stream xilinx_axidma: Create Proxy object for stream xilinx_axidma: Fix rx/tx halted bit. stream: Add flow control API xilinx_axienet/dma: Implement rx path flow control stream: Remove app argument hack hw/microblaze/petalogix_ml605_mmu.c | 28 +++- hw/stream.c | 15 ++- hw/stream.h | 36 ++++- hw/xilinx.h | 21 ++- hw/xilinx_axidma.c | 261 +++++++++++++++++++++++++++-------- hw/xilinx_axienet.c | 255 +++++++++++++++++++++++++++------- 6 files changed, 483 insertions(+), 133 deletions(-)