git-svn-id: https://spexeah.com:8443/svn/Asuro@722 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
parent
b8ebad8d42
commit
5dee385248
BIN
bin/kernel.bin
BIN
bin/kernel.bin
Binary file not shown.
Binary file not shown.
BIN
lib/E1000.ppu
BIN
lib/E1000.ppu
Binary file not shown.
BIN
lib/arp.ppu
BIN
lib/arp.ppu
Binary file not shown.
BIN
lib/asuro.ppu
BIN
lib/asuro.ppu
Binary file not shown.
BIN
lib/eth2.ppu
BIN
lib/eth2.ppu
Binary file not shown.
BIN
lib/ipv4.ppu
BIN
lib/ipv4.ppu
Binary file not shown.
BIN
lib/kernel.ppu
BIN
lib/kernel.ppu
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
lib/libpsystem.a
BIN
lib/libpsystem.a
Binary file not shown.
BIN
lib/net.ppu
BIN
lib/net.ppu
Binary file not shown.
BIN
lib/nettypes.ppu
BIN
lib/nettypes.ppu
Binary file not shown.
BIN
lib/netutils.ppu
BIN
lib/netutils.ppu
Binary file not shown.
BIN
lib/shell.ppu
BIN
lib/shell.ppu
Binary file not shown.
BIN
lib/terminal.ppu
BIN
lib/terminal.ppu
Binary file not shown.
@ -77,7 +77,7 @@ type
|
||||
total_len_Lo : uint8;
|
||||
identifier_Hi : uint8;
|
||||
identifier_Lo : uint8;
|
||||
Flags : ubit3;
|
||||
Flags : ubit3;
|
||||
Fragment_Off : ubit13;
|
||||
TTL : uint8;
|
||||
Protocol : uint8;
|
||||
@ -89,6 +89,11 @@ type
|
||||
Padding : uint8;
|
||||
end;
|
||||
|
||||
PIPv4AsWORDs = ^TIPv4AsWORDs;
|
||||
TIPv4AsWORDs = bitpacked record
|
||||
WORDS : Array[0..11] of uint16;
|
||||
end;
|
||||
|
||||
TTCPFlags = record
|
||||
RS : Boolean;
|
||||
DF : Boolean;
|
||||
|
@ -21,7 +21,7 @@ procedure writeToLogLn(str : pchar);
|
||||
implementation
|
||||
|
||||
uses
|
||||
ipv4, arp, eth2;
|
||||
ipv4, arp, eth2, e1000, terminal;
|
||||
|
||||
var
|
||||
CBSend : TNetSendCallback = nil;
|
||||
@ -108,12 +108,18 @@ begin
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure terminal_command_e1000status(Params : PParamList);
|
||||
begin
|
||||
console.writeHexLnWND(e1000.readStatus, getTerminalHWND);
|
||||
end;
|
||||
|
||||
procedure init;
|
||||
begin
|
||||
push_trace('net.init');
|
||||
eth2.register;
|
||||
arp.register;
|
||||
ipv4.register;
|
||||
terminal.registerCommand('e1000status', @terminal_command_e1000status, 'e1000 status');
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
|
@ -67,6 +67,18 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function findCacheRecord(ip : puint8) : PARPCacheRecord;
|
||||
var
|
||||
CacheRecord : PARPCacheRecord;
|
||||
|
||||
begin
|
||||
CacheRecord:= findCacheRecordByIP(ip);
|
||||
if CacheRecord = nil then begin
|
||||
|
||||
end;
|
||||
findCacheRecord:= CacheRecord;
|
||||
end;
|
||||
|
||||
procedure send(hType : uint16; pType : uint16; op : uint16; p_context : PPacketContext);
|
||||
var
|
||||
buf : void;
|
||||
@ -124,6 +136,24 @@ begin
|
||||
freePacketContext(context);
|
||||
end;
|
||||
|
||||
procedure sendRequestGateway(ip : puint8);
|
||||
var
|
||||
context : PPacketContext;
|
||||
CacheRecord : PARPCacheRecord;
|
||||
|
||||
begin
|
||||
context:= newPacketContext;
|
||||
CacheRecord:= findCacheRecordByIP(@getIPv4Config^.Gateway[0]);
|
||||
if CacheRecord <> nil then begin
|
||||
CopyMAC(@CacheRecord^.MAC[0], @context^.MAC.Destination[0]);
|
||||
CopyIPv4(ip, @context^.IP.Destination[0]);
|
||||
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]);
|
||||
CopyMAC(GetMAC, @context^.MAC.Source[0]);
|
||||
arp.send($1, $0800, $1, context);
|
||||
end;
|
||||
freePacketContext(context);
|
||||
end;
|
||||
|
||||
procedure sendRequest(ip : puint8);
|
||||
var
|
||||
context : PPacketContext;
|
||||
@ -135,10 +165,10 @@ begin
|
||||
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]);
|
||||
CopyMAC(GetMAC, @context^.MAC.Source[0]);
|
||||
CacheRecord:= findCacheRecordByIP(@getIPv4Config^.Gateway[0]);
|
||||
if CacheRecord <> nil then CopyMAC(@CacheRecord^.MAC[0], @context^.MAC.Destination[0])
|
||||
else CopyMAC(@NULL_MAC[0], @context^.MAC.Destination[0]);
|
||||
CopyMAC(@NULL_MAC[0], @context^.MAC.Destination[0]);
|
||||
arp.send($1, $0800, $1, context);
|
||||
freePacketContext(context);
|
||||
sendRequestGateway(ip);
|
||||
end;
|
||||
|
||||
procedure recv(p_data : void; p_len : uint16; p_context : PPacketContext);
|
||||
|
@ -135,6 +135,7 @@ type
|
||||
procedure init();
|
||||
function getMACAddress : puint8;
|
||||
function sendPacket(p_data : void; p_len : uint16) : sint32;
|
||||
function readStatus : uint32;
|
||||
|
||||
implementation
|
||||
|
||||
@ -186,6 +187,11 @@ begin
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
function readStatus : uint32;
|
||||
begin
|
||||
readStatus:= readCommand(REG_STATUS);
|
||||
end;
|
||||
|
||||
function detectEEPROM() : boolean;
|
||||
var
|
||||
val, i : uint32;
|
||||
@ -305,7 +311,7 @@ begin
|
||||
writeCommand(REG_RXDESCLO, uint32(outptr));
|
||||
writeCommand(REG_RXDESCHI, 0);
|
||||
|
||||
writeCommand(REG_RXDESCLEN, E1000_NUM_RX_DESC * 16);
|
||||
writeCommand(REG_RXDESCLEN, E1000_NUM_RX_DESC * sizeof(TE1000_rx_desc));
|
||||
|
||||
writeCommand(REG_RXDESCHEAD, 0);
|
||||
writeCommand(REG_RXDESCTAIL, E1000_NUM_RX_DESC-1);
|
||||
@ -343,7 +349,7 @@ begin
|
||||
writeCommand(REG_TXDESCHI, 0);
|
||||
writeCommand(REG_TXDESCLO, uint32(outptr));
|
||||
|
||||
writeCommand(REG_TXDESCLEN, E1000_NUM_TX_DESC * 16);
|
||||
writeCommand(REG_TXDESCLEN, E1000_NUM_TX_DESC * sizeof(TE1000_tx_desc));
|
||||
|
||||
writeCommand( REG_TXDESCHEAD, 0 );
|
||||
writeCommand( REG_TXDESCTAIL, 0 );
|
||||
|
@ -9,14 +9,14 @@ const
|
||||
VERSION_SUB = '1';
|
||||
REVISION = '677';
|
||||
RELEASE = 'ia';
|
||||
LINE_COUNT = 28049;
|
||||
LINE_COUNT = 28096;
|
||||
FILE_COUNT = 90;
|
||||
DRIVER_COUNT = 32;
|
||||
FPC_VERSION = '2.6.4';
|
||||
NASM_VERSION = '2.10.09';
|
||||
MAKE_VERSION = '3.81';
|
||||
COMPILE_DATE = '11/05/18';
|
||||
COMPILE_TIME = '10:15:31';
|
||||
COMPILE_DATE = '12/05/18';
|
||||
COMPILE_TIME = '10:20:16';
|
||||
|
||||
implementation
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user