major restructuring, prepare for smp
This commit is contained in:
1 parent
b3569a2b90
commit
6bff37746d
229 files changed
+1617
-1489
No files matched your search
@@ -0,0 +1,57 @@
|
||||
#pragma once
|
||||
// net_device.h - kernel network-device registry.
|
||||
//
|
||||
// NIC drivers register NET_DEVICE objects here and feed complete Ethernet
|
||||
// frames into NetReceiveFrame(). Protocol ownership belongs to whichever
|
||||
// network stack driver registered through net_stack.h.
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <ntlite/status.h>
|
||||
|
||||
#define NET_DEVICE_NAME_MAX 16u
|
||||
#define NET_HWADDR_MAX 16u
|
||||
#define NET_MTU_ETHERNET 1500u
|
||||
#define NET_ETHERNET_ADDRESS_LENGTH 6u
|
||||
#define NET_ETHERNET_HEADER_LENGTH 14u
|
||||
#define NET_ETHERNET_MIN_FRAME 60u
|
||||
#define NET_ETHERNET_MAX_FRAME (NET_ETHERNET_HEADER_LENGTH + NET_MTU_ETHERNET)
|
||||
|
||||
struct NET_DEVICE;
|
||||
typedef struct NET_DEVICE NET_DEVICE;
|
||||
|
||||
typedef KSTATUS (*NET_SEND_FRAME)(NET_DEVICE* device,
|
||||
const void* frame,
|
||||
size_t length);
|
||||
|
||||
typedef struct NET_DEVICE_STATS {
|
||||
uint64_t TxPackets;
|
||||
uint64_t TxBytes;
|
||||
uint64_t TxErrors;
|
||||
uint64_t RxPackets;
|
||||
uint64_t RxBytes;
|
||||
uint64_t RxDrops;
|
||||
} NET_DEVICE_STATS;
|
||||
|
||||
struct NET_DEVICE {
|
||||
char Name[NET_DEVICE_NAME_MAX];
|
||||
uint32_t Index;
|
||||
uint32_t Mtu;
|
||||
uint8_t HardwareAddressLength;
|
||||
uint8_t HardwareAddress[NET_HWADDR_MAX];
|
||||
void* DriverContext;
|
||||
NET_SEND_FRAME SendFrame;
|
||||
NET_DEVICE_STATS Stats;
|
||||
};
|
||||
|
||||
__declspec(dllexport) KSTATUS NetRegisterDevice(NET_DEVICE* device);
|
||||
__declspec(dllexport) uint32_t NetGetDeviceCount(void);
|
||||
__declspec(dllexport) NET_DEVICE* NetGetDevice(uint32_t index);
|
||||
__declspec(dllexport) KSTATUS NetGetDeviceStats(uint32_t index,
|
||||
NET_DEVICE_STATS* stats);
|
||||
__declspec(dllexport) KSTATUS NetSendFrame(uint32_t index,
|
||||
const void* frame,
|
||||
size_t length);
|
||||
__declspec(dllexport) void NetReceiveFrame(NET_DEVICE* device,
|
||||
const void* frame,
|
||||
size_t length);
|
||||
Reference in new issue
Block a user