More work towards getting the appservers combined
[akaros.git] / kern / arch / i686 / ne2k.h
1 #ifndef ROS_INC_NE2K_H
2 #define ROS_INC_NE2K_H
3
4 #include <ros/common.h>
5 #include <trap.h>
6 #include <pmap.h>
7 #include <arch/nic_common.h>
8
9 #define ne2k_debug(...)  //cprintf(__VA_ARGS__)  
10 #define ne2k_interrupt_debug(...) //cprintf(__VA_ARGS__)  
11 #define ne2k_frame_debug(...) //cprintf(__VA_ARGS__)  
12
13 #define NIC_IRQ_CPU                     5
14
15 // Macro for formatting PCI Configuration Address queries
16 #define MK_CONFIG_ADDR(BUS, DEV, FUNC, REG) (unsigned long)( (BUS << 16) | (DEV << 11) | \
17                                                              (FUNC << 8) | REG  | \
18                                                              ((uint32_t)0x80000000))
19 #define NE2K_VENDOR_ID 0x10EC
20 #define NE2K_DEV_ID 0x8029
21
22 void ne2k_init();
23 int ne2k_scan_pci();
24 void ne2k_configure_nic();
25 void ne2k_setup_interrupts();
26 void ne2k_interrupt_handler(trapframe_t *tf, void* data);
27 void ne2k_mem_alloc();
28 void ne2k_read_mac();
29 void ne2k_test_interrupts();
30 void ne2k_handle_rx_packet();
31 int ne2k_send_frame(const char *CT(len) data, size_t len);
32 char *CT(PACKET_HEADER_SIZE + len) ne2k_packet_wrap(const char *CT(len) data, size_t len);
33
34 #endif /* !ROS_INC_NE2K_H */