23#include "pedigree/kernel/Spinlock.h"
24#include "pedigree/kernel/compiler.h"
25#include "pedigree/kernel/machine/IrqHandler.h"
26#include "pedigree/kernel/machine/Network.h"
27#include "pedigree/kernel/machine/types.h"
28#include "pedigree/kernel/process/Mutex.h"
29#include "pedigree/kernel/process/OwnedThread.h"
30#include "pedigree/kernel/process/Semaphore.h"
31#include "pedigree/kernel/processor/types.h"
32#include "pedigree/kernel/utilities/List.h"
33#include "pedigree/kernel/utilities/String.h"
34#include "pedigree/kernel/utilities/new"
38#define NE2K_VENDOR_ID 0x10ec
39#define NE2K_DEVICE_ID 0x8029
48 str.assign(
"ne2k", 5);
51 virtual bool send(
size_t nBytes, uintptr_t buffer);
63 bool isValid()
const {
64 return m_IrqId != 0 && m_NetworkRegistered;
69 bool waitForRemoteDma();
70 bool resetController();
71 bool recoverReceiveOverflow(uint8_t irqStatus);
72 void advanceReceiveBoundary(uint8_t nextPacket);
74 static int trampoline(
void* p);
92 bool m_NetworkRegistered;
96 void operator=(
const Ne2k&);
Abstrace base class for hardware I/O capabilities.
virtual const StationInfo & getStationInfo()
virtual bool send(size_t nBytes, uintptr_t buffer)
virtual IrqDisposition irq(irq_id_t number)
virtual bool setStationInfo(const StationInfo &info)
virtual void getName(String &str)