baseport/src/cedar/generic/base/syborg/ethernet/pdd/ethernet_device.h
changeset 2 d55eb581a87c
parent 1 2fb8b9db1c86
child 3 c2946f91d81f
--- a/baseport/src/cedar/generic/base/syborg/ethernet/pdd/ethernet_device.h	Fri Jul 31 15:01:17 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Register definitions and base classes for Ethernet Virtio. 
-*
-*/
-
-#ifndef __QEMUETHERNET_
-#define __QEMUETHERNET_
-
-#include <ethernet.h>
-#include <system.h>
-
-#define SVPDBG
-#ifdef SVPDBG
-#define DP(format...) Kern::Printf(format)
-#else
-#define DP(format...)
-#endif
-
-#define ETHERNET_PAYLOAD_SIZE 1500
-
-#define VIRTIO_CONFIG_S_ACKNOWLEDGE     1
-#define VIRTIO_CONFIG_S_DRIVER          2
-#define VIRTIO_CONFIG_S_DRIVER_OK       4
-#define VIRTIO_CONFIG_S_FAILED          0x80
-
-/* This marks a buffer as continuing via the next field. */
-#define VRING_DESC_F_NEXT       1
-/* This marks a buffer as write-only (otherwise read-only). */
-#define VRING_DESC_F_WRITE      2
-
-#define TX_QUEUE 1
-#define RX_QUEUE 0
-
-#define VNET_MAC ((volatile TUint8 *)(0xc600c000 + 0x100))
-#define VNET ((volatile TUint32 *)0xc600c000)
-
-enum {
-    VIRTIO_ID             = 0,
-    VIRTIO_DEVTYPE        = 1,
-    VIRTIO_HOST_FEATURES  = 2,
-    VIRTIO_GUEST_FEATURES = 3,
-    VIRTIO_QUEUE_BASE     = 4,
-    VIRTIO_QUEUE_NUM      = 5,
-    VIRTIO_QUEUE_SEL      = 6,
-    VIRTIO_QUEUE_NOTIFY   = 7,
-    VIRTIO_STATUS	  	  = 8,
-    VIRTIO_INT_ENABLE     = 9,
-    VIRTIO_INT_STATUS     = 10
-};
-
-typedef struct
-{
-#define VIRTIO_NET_HDR_F_NEEDS_CSUM     1       // Use csum_start, csum_offset
- TUint8 flags;
-#define VIRTIO_NET_HDR_GSO_NONE         0       // Not a GSO frame
-#define VIRTIO_NET_HDR_GSO_TCPV4        1       // GSO frame, IPv4 TCP (TSO)
-#define VIRTIO_NET_HDR_GSO_UDP          3       // GSO frame, IPv4 UDP (UFO)
-#define VIRTIO_NET_HDR_GSO_TCPV6        4       // GSO frame, IPv6 TCP
-#define VIRTIO_NET_HDR_GSO_ECN          0x80    // TCP has ECN set
-  TUint8 gso_type;
-  TUint16 hdr_len;
-  TUint16 gso_size;
-  TUint16 csum_start;
-  TUint16 csum_offset;
-} virtio_net_hdr;
-
-typedef struct
-{
-  TUint64 addr;
-  TUint32 len;
-  TUint16 flags;
-  TUint16 next;
-} vring_desc;
-
-typedef struct
-{
-  TUint16 flags;
-  TUint16 idx;
-  TUint16 ring[16];
-
-} vring_avail;
-
-typedef struct
-{
-  TUint16 flags;
-  TUint16 idx;
-  struct {
-  	TUint32 id;
-  	TUint32 len;
-  } ring[16];
-} vring_used;
-
-
-//
-// Class to identify the device as ethernet device for Symbian
-//
-class EthernetDevice : public DEthernet
-{
-public:
-	EthernetDevice();
-	~EthernetDevice();
-	TInt DoCreate(TInt aUnit, const TDesC8* anInfo);
-	static void Isr(TAny* aPtr);
-	
-	//
-	// Functions that we must implement as we are inheriting from abstract base class
-	//
-	virtual TInt Start();
-	virtual void Stop(TStopMode aMode);
-	virtual void GetConfig(TEthernetConfigV01 &aConfig) const;
-	virtual TInt ValidateConfig(const TEthernetConfigV01 &aConfig) const;
-	virtual void CheckConfig(TEthernetConfigV01 &aConfig);
-	virtual TInt Configure(TEthernetConfigV01 &aConfig);
-	virtual void MacConfigure(TEthernetConfigV01 &aConfig);
-	virtual void Caps(TDes8 &aCaps) const;
-	virtual TInt DisableIrqs();
-	virtual void RestoreIrqs(TInt aIrq);
-	virtual TDfcQue* DfcQ(TInt aUnit);
-	virtual TInt Send(TBuf8<KMaxEthernetPacket+32> &aBuffer);
-	virtual TInt ReceiveFrame(TBuf8<KMaxEthernetPacket+32> &aBuffer, TBool okToUse);
-							  						  
-private:
-
-   TEthernetConfigV01   iDefaultConfig;
-	TInt  			   	iInterruptId;
-	TDfc				      iRxDfc;
-	TUint32				   iCreated;
-	TUint32				   iStarted;
-	
-	//Virtio structs for transmitting data to QEMU.
-	volatile vring_desc  *iTxDesc;
-	volatile vring_avail *iTxAvail;
-	volatile vring_used  *iTxUsed;
-   //Ring size hardcoded in QEMU.    
-	TUint tx_ring_size;
-	
-   //Virtio structs for receiving data from QEMU. 
-	volatile vring_desc  *iRxDesc;
-	volatile vring_avail *iRxAvail;
-	volatile vring_used  *iRxUsed;
-	
-	TUint rx_ring_size;
-   TUint rx_last_used;
-
-   //Virtio packet header definitions. 
-	virtio_net_hdr rx_header;
-	virtio_net_hdr tx_header;
-	
-	//Buffers for Rx/Tx transmission.
-	TBuf8<KMaxEthernetPacket+32> iTxBuffer;
-	TBuf8<KMaxEthernetPacket+32> iRxBuffer;
-		
-	static void RxDfc(TAny* aPtr);
-	
-	//QEMU specific member functions
-	void AllocRings();
-	void* AllocAligned(TUint16 size);
-	void AddRx();
-	void SetMacAddress(void);
-};
-
-#endif // __QEMUETHERNET_