Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


added new copyright and license
[palacios.git] / palacios / include / geekos / ne2k.h
index 7b74572..e691939 100644 (file)
@@ -1,7 +1,27 @@
+/*
+ * This file is part of the Palacios Virtual Machine Monitor developed
+ * by the V3VEE Project with funding from the United States National 
+ * Science Foundation and the Department of Energy.  
+ *
+ * The V3VEE Project is a joint project between Northwestern University
+ * and the University of New Mexico.  You can find out more at 
+ * http://www.v3vee.org
+ *
+ * Copyright (c) 2008, Matt Wojcik
+ * Copyright (c) 2008, Peter Kamm
+ * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org> 
+ * All rights reserved.
+ *
+ * Author: Matt Wojcik
+ * Author: Peter Kamm
+ *
+ * This is free software.  You are permitted to use,
+ * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
+ */
+
 #ifndef GEEKOS_NE2K_H
 #define GEEKOS_NE2K_H
 
-//#include <geekos/ktypes.h>
 #include <geekos/malloc.h>
 
 #define NE2K_PAGE0     0x00
 
 #define NE2K_BASE_ADDR         0xc100          /* Starting address of the card */
 #define NE2K_CR                NE2K_BASE_ADDR  /* Command register */
+#define NE2K_DATAPORT  (NE2K_CR + 0x10)
+#define NE2K_RESET     (NE2K_CR + 0x1f)
 
 /* Page 0 register offsets */
 #define NE2K CLDA0     (NE2K_CR + 0x01)
-#define NE2K_PSTART    (NE2K_CR + 0x01)
+#define NE2K_PSTART    (NE2K_CR + 0x01)        /* Page start register */
 #define NE2K_CLDA1     (NE2K_CR + 0x02)
-#define NE2K_PSTOP     (NE2K_CR + 0x02)
-#define NE2K_BNRY      (NE2K_CR + 0x03)
+#define NE2K_PSTOP     (NE2K_CR + 0x02)        /* Page stop register */
+#define NE2K_BNRY      (NE2K_CR + 0x03)        /* Boundary register */
 #define NE2K_TSR       (NE2K_CR + 0x04)
 #define NE2K_TPSR      (NE2K_CR + 0x04)
 #define NE2K_NCR       (NE2K_CR + 0x05)
@@ -149,9 +171,17 @@ struct _RSR {  //RECEIVE STATUS REG
         uint_t dfr: 1;  //DEFERRING
 }__attribute__((__packed__)) __attribute__((__aligned__(1)));
 
+struct NE2K_Packet_Info {
+  uchar_t status;
+  uint_t size;
+  uchar_t src[6];
+  uchar_t dest[6];
+};
+
 int Init_Ne2k();
-int NE2K_Transmit(struct NE2K_REGS *);
 int NE2K_Receive();
-int NE2K_Send(struct NE2K_REGS *regs, uchar_t src[], uchar_t dest[], uint_t type, uchar_t *data, uint_t size);
+int NE2K_Transmit(uint_t size);
+int NE2K_Send_Packet(uchar_t *packet, uint_t size);
+int NE2K_Send(uchar_t src[], uchar_t dest[], uint_t type, uchar_t *data, uint_t size);
 
 #endif  /* GEEKOS_NE2K_H */