Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2433 → Rev 2434

/kernel/branches/Kolibri-acpi/network/eth_drv/arp.inc
67,7 → 67,8
endg
 
iglobal
NumARP: dd ARP_TABLE_ENTRIES
NumARP:
dd ARP_TABLE_ENTRIES
ARPTable_ptr dd ARPTable ;pointer to ARPTable
endg
 
/kernel/branches/Kolibri-acpi/network/eth_drv/drivers/3c59x.inc
344,42 → 344,68
e3c59x_upd_buff = e3c59x_dpd_buff+(E3C59X_DPD_SIZE*E3C59X_NUM_TX_DESC)
 
uglobal
e3c59x_curr_upd: dd 0
e3c59x_prev_dpd: dd 0
e3c59x_prev_tx_frame: dd 0
e3c59x_transmit_function: dd 0
e3c59x_receive_function: dd 0
e3c59x_curr_upd:
dd 0
e3c59x_prev_dpd:
dd 0
e3c59x_prev_tx_frame:
dd 0
e3c59x_transmit_function:
dd 0
e3c59x_receive_function:
dd 0
endg
 
iglobal
e3c59x_ver_id: db 17
e3c59x_ver_id:
db 17
endg
 
uglobal
e3c59x_full_bus_master: db 0
e3c59x_has_hwcksm: db 0
e3c59x_preamble: db 0
e3c59x_dn_list_ptr_cleared: db 0
e3c59x_self_directed_packet: rb 6
e3c59x_full_bus_master:
db 0
e3c59x_has_hwcksm:
db 0
e3c59x_preamble:
db 0
e3c59x_dn_list_ptr_cleared:
db 0
e3c59x_self_directed_packet:
rb 6
endg
 
if defined E3C59X_DEBUG
e3c59x_hw_type_str: db "Detected hardware type : ", 0
e3c59x_device_str: db "Device ID : 0x"
e3c59x_device_id_str: db "ffff", 13, 10, 0
e3c59x_vendor_str: db "Vendor ID : 0x"
e3c59x_vendor_id_str: db "ffff", 13, 10, 0
e3c59x_io_info_str: db "IO address : 0x"
e3c59x_io_addr_str: db "ffff", 13, 10, 0
e3c59x_mac_info_str: db "MAC address : "
e3c59x_mac_addr_str: db "ff:ff:ff:ff:ff:ff", 13, 10, 0
e3c59x_boomerang_str: db " (boomerang)", 13, 10, 0
e3c59x_vortex_str: db " (vortex)", 13, 10, 0
e3c59x_link_type_str: db "Established link type : ", 0
e3c59x_new_line_str: db 13, 10, 0
e3c59x_link_type: dd 0
e3c59x_hw_type_str:
db "Detected hardware type : ", 0
e3c59x_device_str:
db "Device ID : 0x"
e3c59x_device_id_str:
db "ffff", 13, 10, 0
e3c59x_vendor_str:
db "Vendor ID : 0x"
e3c59x_vendor_id_str:
db "ffff", 13, 10, 0
e3c59x_io_info_str:
db "IO address : 0x"
e3c59x_io_addr_str:
db "ffff", 13, 10, 0
e3c59x_mac_info_str:
db "MAC address : "
e3c59x_mac_addr_str:
db "ff:ff:ff:ff:ff:ff", 13, 10, 0
e3c59x_boomerang_str:
db " (boomerang)", 13, 10, 0
e3c59x_vortex_str:
db " (vortex)", 13, 10, 0
e3c59x_link_type_str:
db "Established link type : ", 0
e3c59x_new_line_str:
db 13, 10, 0
e3c59x_link_type:
dd 0
 
e3c59x_charset: db '0123456789abcdef'
e3c59x_charset:
db '0123456789abcdef'
 
strtbl e3c59x_link_str, \
"No valid link type detected", \
/kernel/branches/Kolibri-acpi/network/eth_drv/drivers/forcedeth.inc
819,7 → 819,8
jz @f
and eax, PCI_BASE_ADDRESS_IO_MASK
jmp .next
@@: push eax
@@:
push eax
and eax, PCI_BASE_ADDRESS_MEM_TYPE_MASK
cmp eax, PCI_BASE_ADDRESS_MEM_TYPE_64
jne .not64
878,7 → 879,8
jz @f
and eax, PCI_BASE_ADDRESS_IO_MASK
jmp .next2
@@: and eax, PCI_BASE_ADDRESS_MEM_MASK
@@:
and eax, PCI_BASE_ADDRESS_MEM_MASK
.next2:
; Find the lowest bit set
mov ecx, eax
913,7 → 915,8
je .ver1
mov dword [forcedeth_desc_ver], DESC_VER_2
jmp @f
.ver1: mov dword [forcedeth_desc_ver], DESC_VER_1
.ver1:
mov dword [forcedeth_desc_ver], DESC_VER_1
@@:
; read the mac address
; map memory
981,7 → 984,8
jne @f
or dword [forcedeth_txflags], NV_TX_LASTPACKET1
jmp .end_switch
@@: or dword [forcedeth_txflags], NV_TX2_LASTPACKET1
@@:
or dword [forcedeth_txflags], NV_TX2_LASTPACKET1
jmp .end_switch
 
.next_0x0086:
/kernel/branches/Kolibri-acpi/network/eth_drv/drivers/i8255x.inc
50,39 → 50,61
 
 
uglobal
eeprom_data: times 16 dd 0
eeprom_data:
times 16 dd 0
 
align 4
 
lstats:
tx_good_frames: dd 0
tx_coll16_errs: dd 0
tx_late_colls: dd 0
tx_underruns: dd 0
tx_lost_carrier: dd 0
tx_deferred: dd 0
tx_one_colls: dd 0
tx_multi_colls: dd 0
tx_total_colls: dd 0
rx_good_frames: dd 0
rx_crc_errs: dd 0
rx_align_errs: dd 0
rx_resource_errs: dd 0
rx_overrun_errs: dd 0
rx_colls_errs: dd 0
rx_runt_errs: dd 0
done_marker: dd 0
tx_good_frames:
dd 0
tx_coll16_errs:
dd 0
tx_late_colls:
dd 0
tx_underruns:
dd 0
tx_lost_carrier:
dd 0
tx_deferred:
dd 0
tx_one_colls:
dd 0
tx_multi_colls:
dd 0
tx_total_colls:
dd 0
rx_good_frames:
dd 0
rx_crc_errs:
dd 0
rx_align_errs:
dd 0
rx_resource_errs:
dd 0
rx_overrun_errs:
dd 0
rx_colls_errs:
dd 0
rx_runt_errs:
dd 0
done_marker:
dd 0
 
align 4
 
confcmd:
confcmd_status: dw 0
confcmd_command: dw 0
confcmd_link: dd 0
confcmd_status:
dw 0
confcmd_command:
dw 0
confcmd_link:
dd 0
endg
 
iglobal
confcmd_data: db 22, 0x08, 0, 0, 0, 0x80, 0x32, 0x03, 1
confcmd_data:
db 22, 0x08, 0, 0, 0, 0x80, 0x32, 0x03, 1
db 0, 0x2e, 0, 0x60, 0, 0xf2, 0x48, 0, 0x40, 0xf2
db 0x80, 0x3f, 0x05
endg
91,22 → 113,34
align 4
 
txfd:
txfd_status: dw 0
txfd_command: dw 0
txfd_link: dd 0
txfd_tx_desc_addr: dd 0
txfd_count: dd 0
txfd_tx_buf_addr0: dd 0
txfd_tx_buf_size0: dd 0
txfd_tx_buf_addr1: dd 0
txfd_tx_buf_size1: dd 0
txfd_status:
dw 0
txfd_command:
dw 0
txfd_link:
dd 0
txfd_tx_desc_addr:
dd 0
txfd_count:
dd 0
txfd_tx_buf_addr0:
dd 0
txfd_tx_buf_size0:
dd 0
txfd_tx_buf_addr1:
dd 0
txfd_tx_buf_size1:
dd 0
 
align 4
 
hdr:
hdr_dst_addr: times 6 db 0
hdr_src_addr: times 6 db 0
hdr_type: dw 0
hdr_dst_addr:
times 6 db 0
hdr_src_addr:
times 6 db 0
hdr_type:
dw 0
endg
 
 
757,4 → 791,4
mov edx, [io_addr]
in ax, dx
 
ret
ret
/kernel/branches/Kolibri-acpi/network/eth_drv/drivers/rtl8029.inc
143,29 → 143,46
ISA_MAX_ADDR equ 0x400
 
uglobal
eth_flags: db 0
eth_vendor: db 0
eth_nic_base: dw 0
eth_asic_base: dw 0
eth_memsize: db 0
eth_rx_start: db 0
eth_tx_start: db 0
eth_bmem: dd 0
eth_rmem: dd 0
romdata: db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
eth_flags:
db 0
eth_vendor:
db 0
eth_nic_base:
dw 0
eth_asic_base:
dw 0
eth_memsize:
db 0
eth_rx_start:
db 0
eth_tx_start:
db 0
eth_bmem:
dd 0
eth_rmem:
dd 0
romdata:
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
endg
 
iglobal
test_data: db 'NE*000 memory',0
test_buffer: db ' ',0
test_data:
db 'NE*000 memory',0
test_buffer:
db ' ',0
endg
 
uglobal
eth_type: dw 0
pkthdr: db 0,0,0,0 ; status, next, (short) len
pktoff: dw 0
eth_rx_data_ptr: dd 0
eth_tmp_len: dw 0
eth_type:
dw 0
pkthdr:
db 0,0,0,0 ; status, next, (short) len
pktoff:
dw 0
eth_rx_data_ptr:
dd 0
eth_tmp_len:
dw 0
endg
 
 
/kernel/branches/Kolibri-acpi/network/eth_drv/drivers/rtl8139.inc
183,18 → 183,21
 
uglobal
align 4
rtl8139_rx_buff_offset: dd 0
rtl8139_rx_buff_offset:
dd 0
curr_tx_desc dd 0
endg
 
iglobal
hw_ver_array: db VER_RTL8139, VER_RTL8139A, VER_RTL8139B, VER_RTL8139C
hw_ver_array:
db VER_RTL8139, VER_RTL8139A, VER_RTL8139B, VER_RTL8139C
db VER_RTL8100, VER_RTL8139D, VER_RTL8139CP, VER_RTL8101
HW_VER_ARRAY_SIZE = $-hw_ver_array
endg
 
uglobal
hw_ver_id: db 0
hw_ver_id:
db 0
endg
 
;***************************************************************************
/kernel/branches/Kolibri-acpi/network/eth_drv/drivers/rtl8169.inc
550,7 → 550,8
jz @f
and eax,PCI_BASE_ADDRESS_IO_MASK
jmp .exit
@@: push eax
@@:
push eax
and eax,PCI_BASE_ADDRESS_MEM_TYPE_MASK
cmp eax,PCI_BASE_ADDRESS_MEM_TYPE_64
jne .not64
583,7 → 584,8
 
; Check that the chip has finished the reset
mov ecx,1000
@@: RTL_R8 RTL8169_REG_ChipCmd
@@:
RTL_R8 RTL8169_REG_ChipCmd
test al,RTL8169_CMD_Reset
jz @f
stdcall udelay,10
594,7 → 596,8
and eax,0x7c800000
; DEBUGF 1,"K : rtl8169_init_board: TxConfig & 0x7c800000 = 0x%x\n",eax
mov esi,mac_info-8
@@: add esi,8
@@:
add esi, 8
mov ecx,eax
and ecx,[esi]
cmp ecx,[esi]
609,7 → 612,8
jnz @f
mov [rtl8169_tpc.pcfg],PCFG_METHOD_1
jmp .pconf
@@: dec al
@@:
dec al
jnz .pconf
mov [rtl8169_tpc.pcfg],PCFG_METHOD_2
.pconf:
617,7 → 621,8
; identify chip attached to board
mov ecx,10
mov eax,[rtl8169_tpc.mcfg]
@@: dec ecx
@@:
dec ecx
js @f
cmp eax,[rtl_chip_info+ecx*8]
jne @b
661,7 → 666,8
je @f
cmp [rtl8169_tpc.mcfg],MCFG_METHOD_03
jne .not_2_or_3
@@: stdcall RTL8169_WRITE_GMII_REG,0x1F,0x0001
@@:
stdcall RTL8169_WRITE_GMII_REG, 0x1F, 0x0001
stdcall RTL8169_WRITE_GMII_REG,0x15,0x1000
stdcall RTL8169_WRITE_GMII_REG,0x18,0x65C7
stdcall RTL8169_WRITE_GMII_REG,0x04,0x0000
727,7 → 733,8
 
mov ecx,2000
; Check if the RTL8169 has completed writing to the specified MII register
@@: RTL_R32 RTL8169_REG_PHYAR
@@:
RTL_R32 RTL8169_REG_PHYAR
test eax,0x80000000
jz .exit
stdcall udelay,1 ;;;100
749,7 → 756,8
 
mov ecx,2000
; Check if the RTL8169 has completed retrieving data from the specified MII register
@@: RTL_R32 RTL8169_REG_PHYAR
@@:
RTL_R32 RTL8169_REG_PHYAR
test eax,0x80000000
jnz .exit
stdcall udelay,1 ;;;100
802,7 → 810,8
mov edi,rtl8169_tpc.Tx_skbuff
mov eax,rtl8169_txb
mov ecx,NUM_TX_DESC
@@: stosd
@@:
stosd
inc eax ; add eax,RX_BUF_SIZE ???
loop @b
 
818,7 → 827,8
mov edi,[rtl8169_tpc.RxDescArray]
mov eax,rtl8169_rxb
mov ecx,NUM_RX_DESC
@@: mov [esi],eax
@@:
mov [esi], eax
mov [edi+rtl8169_RxDesc.buf_addr],eax
sub [edi+rtl8169_RxDesc.buf_addr],OS_BASE ; shurf 28.09.2008
mov [edi+rtl8169_RxDesc.status],RTL8169_DSB_OWNbit or RX_BUF_SIZE
840,7 → 850,8
RTL_W8 RTL8169_REG_ChipCmd,RTL8169_CMD_Reset
; Check that the chip has finished the reset
mov ecx,1000
@@: RTL_R8 RTL8169_REG_ChipCmd
@@:
RTL_R8 RTL8169_REG_ChipCmd
and al,RTL8169_CMD_Reset
jz @f
stdcall udelay,10
872,7 → 883,8
; DEBUGF 1,"K : Set MAC Reg C+CR Offset 0xE0: bit-3 and bit-14\n"
jmp .set
@@:;DEBUGF 1,"K : Set MAC Reg C+CR Offset 0xE0: bit-3\n"
.set: RTL_W16 RTL8169_REG_CPlusCmd,ax
.set:
RTL_W16 RTL8169_REG_CPlusCmd,ax
 
; RTL_W16 0xE2,0x1517
; RTL_W16 0xE2,0x152a
929,7 → 941,8
add edx,RTL8169_REG_MAC0
xor ebx,ebx
; Get MAC address. FIXME: read EEPROM
@@: RTL_R8 dx
@@:
RTL_R8 dx
mov [node_addr+ebx],al
inc edx
inc ebx
969,7 → 982,8
stdcall udelay,100
mov ecx,10000
; wait for auto-negotiation process
@@: dec ecx
@@:
dec ecx
jz @f
stdcall RTL8169_READ_GMII_REG,RTL8169_PHY_STAT_REG
stdcall udelay,100
1081,12 → 1095,14
and ecx,0x0FFF
xor al,al
add edi,ecx
@@: cmp ecx,ETH_ZLEN
@@:
cmp ecx, ETH_ZLEN
jae @f
stosb
inc ecx
jmp @b
@@: pop eax
@@:
pop eax
 
mov ebx,eax
mov eax,sizeof.rtl8169_TxDesc
1100,11 → 1116,13
cmp eax,ETH_ZLEN
jae @f
mov eax,ETH_ZLEN
@@: or eax,RTL8169_DSB_OWNbit or RTL8169_DSB_FSbit or RTL8169_DSB_LSbit
@@:
or eax, RTL8169_DSB_OWNbit or RTL8169_DSB_FSbit or RTL8169_DSB_LSbit
cmp [rtl8169_tpc.cur_tx],NUM_TX_DESC - 1
jne @f
or eax,RTL8169_DSB_EORbit
@@: mov [ebx + rtl8169_TxDesc.status],eax
@@:
mov [ebx + rtl8169_TxDesc.status], eax
 
RTL_W8 RTL8169_REG_TxPoll,0x40 ; set polling bit
 
1114,7 → 1132,8
;!!! to = currticks() + TX_TIMEOUT;
;!!! while ((tpc->TxDescArray[entry].status & OWNbit) && (currticks() < to)); /* wait */
mov ecx,TX_TIMEOUT / 10
@@: test [ebx + rtl8169_TxDesc.status],RTL8169_DSB_OWNbit
@@:
test [ebx + rtl8169_TxDesc.status], RTL8169_DSB_OWNbit
jnz @f
stdcall udelay,10
loop @b
1195,7 → 1214,8
cmp [rtl8169_tpc.cur_rx],NUM_RX_DESC - 1
jne @f
or eax,RTL8169_DSB_EORbit
@@: mov [ebx + rtl8169_RxDesc.status],eax
@@:
mov [ebx + rtl8169_RxDesc.status], eax
 
mov [ebx + rtl8169_RxDesc.buf_addr],edx
sub [ebx + rtl8169_RxDesc.buf_addr],OS_BASE ; shurf 28.09.2008
/kernel/branches/Kolibri-acpi/network/eth_drv/drivers/sis900.inc
80,8 → 80,10
 
uglobal
align 4
txd: times (3 * NUM_TX_DESC) dd 0
rxd: times (3 * NUM_RX_DESC) dd 0
txd:
times (3 * NUM_TX_DESC) dd 0
rxd:
times (3 * NUM_RX_DESC) dd 0
endg
 
txb equ eth_data_start
218,7 → 220,8
SIS900_EEDONE equ 0x00000200
SIS900_EEGNT equ 0x00000100
;General Varibles
SIS900_pci_revision: db 0
SIS900_pci_revision:
db 0
SIS900_Status dd 0x03000000
sis900_specific_table:
; dd SIS630A_900_REV,Get_Mac_SIS630A_900_REV,0
230,9 → 233,12
dd SIS900_960_REV,SIS960_get_mac_addr,0
dd SIS900B_900_REV,SIS900_get_mac_addr,0
dd 0,0,0,0 ; end of list
sis900_get_mac_func: dd 0
sis900_special_func: dd 0
sis900_table_entries: db 8
sis900_get_mac_func:
dd 0
sis900_special_func:
dd 0
sis900_table_entries:
db 8
 
;***************************************************************************
; Function
567,7 → 573,8
;* 0x00600000 = 128 bytes
;* 0x00700000 = 256 bytes
;***************************************************************************
SIS900_mc_filter: times 16 dw 0
SIS900_mc_filter:
times 16 dw 0
SIS900_set_rx_mode:
mov ebp,[io_addr]
;**************update Multicast Hash Table in Receive Filter
1081,7 → 1088,8
 
SIS900_Char_String db '0','1','2','3','4','5','6','7','8','9'
db 'A','B','C','D','E','F'
Mac_str_build: times 20 db 0
Mac_str_build:
times 20 db 0
Create_Mac_String:
pusha
xor ecx, ecx
/kernel/branches/Kolibri-acpi/network/eth_drv/ethernet.inc
126,28 → 126,29
dd 0x12298086, I8255x_probe, I8255x_reset, I8255x_poll, I8255x_transmit, 0
dd 0x10308086, I8255x_probe, I8255x_reset, I8255x_poll, I8255x_transmit, 0
dd 0x24498086, I8255x_probe, I8255x_reset, I8255x_poll, I8255x_transmit, 0
dd 0x10688086, I8255x_probe, I8255x_reset, I8255x_poll, I8255x_transmit, 0
 
dd 0x802910ec, rtl8029_probe, rtl8029_reset, rtl8029_poll, rtl8029_transmit, 0
 
;dd 0x813910ec, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x813810ec, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x12111113, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x13601500, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x13604033, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x13001186, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x13401186, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0xab0613d1, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0xa1171259, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0xa11e1259, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0xab0614ea, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0xab0714ea, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x123411db, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x91301432, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x101202ac, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x0106018a, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x1211126c, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x81391743, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
;dd 0x8139021b, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x813910ec, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x813810ec, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x12111113, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x13601500, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x13604033, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x13001186, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x13401186, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0xab0613d1, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0xa1171259, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0xa11e1259, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0xab0614ea, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0xab0714ea, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x123411db, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x91301432, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x101202ac, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x0106018a, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x1211126c, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x81391743, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
dd 0x8139021b, rtl8139_probe, rtl8139_reset, rtl8139_poll, rtl8139_transmit, rtl8139_cable
 
dd 0x816810ec, rtl8169_probe, rtl8169_reset, rtl8169_poll, rtl8169_transmit, 0
dd 0x816910ec, rtl8169_probe, rtl8169_reset, rtl8169_poll, rtl8169_transmit, 0
243,31 → 244,49
 
uglobal
;Net-stack's interface's settings
node_addr: db 0,0,0,0,0,0
gateway_ip: dd 0
dns_ip: dd 0
node_addr:
db 0,0,0,0,0,0
gateway_ip:
dd 0
dns_ip:
dd 0
 
eth_rx_data_len: dw 0
eth_status: dd 0
io_addr: dd 0
hdrtype: db 0
vendor_device: dd 0
pci_data: dd 0
pci_dev: dd 0
pci_bus: dd 0
eth_rx_data_len:
dw 0
eth_status:
dd 0
io_addr:
dd 0
hdrtype:
db 0
vendor_device:
dd 0
pci_data:
dd 0
pci_dev:
dd 0
pci_bus:
dd 0
 
; These will hold pointers to the selected driver functions
drvr_probe: dd 0
drvr_reset: dd 0
drvr_poll: dd 0
drvr_transmit: dd 0
drvr_cable: dd 0
drvr_probe:
dd 0
drvr_reset:
dd 0
drvr_poll:
dd 0
drvr_transmit:
dd 0
drvr_cable:
dd 0
 
endg
 
iglobal
broadcast_add: db 0xff,0xff,0xff,0xff,0xff,0xff
subnet_mask: dd 0x00ffffff ; 255.255.255.0
broadcast_add:
db 0xff,0xff,0xff,0xff,0xff,0xff
subnet_mask:
dd 0x00ffffff ; 255.255.255.0
endg
 
include "arp.inc" ;arp-protocol functions
/kernel/branches/Kolibri-acpi/network/eth_drv/pci.inc
348,4 → 348,4
mov [io_addr], eax
 
sb_exit2:
ret
ret
/kernel/branches/Kolibri-acpi/network/socket.inc
31,31 → 31,31
 
; socket data structure
struct SOCKET
.PrevPtr dd ? ; pointer to previous socket in list
.NextPtr dd ? ; pointer to next socket in list
.Number dd ? ; socket number (unique within single process)
.PID dd ? ; application process id
.LocalIP dd ? ; local IP address
.LocalPort dw ? ; local port
.RemoteIP dd ? ; remote IP address
.RemotePort dw ? ; remote port
.OrigRemoteIP dd ? ; original remote IP address (used to reset to LISTEN state)
.OrigRemotePort dw ? ; original remote port (used to reset to LISTEN state)
.rxDataCount dd ? ; rx data count
.TCBState dd ? ; TCB state
.TCBTimer dd ? ; TCB timer (seconds)
.ISS dd ? ; initial send sequence
.IRS dd ? ; initial receive sequence
.SND_UNA dd ? ; sequence number of unack'ed sent packets
.SND_NXT dd ? ; bext send sequence number to use
.SND_WND dd ? ; send window
.RCV_NXT dd ? ; next receive sequence number to use
.RCV_WND dd ? ; receive window
.SEG_LEN dd ? ; segment length
.SEG_WND dd ? ; segment window
.wndsizeTimer dd ? ; window size timer
.lock MUTEX ; lock mutex
.rxData dd ? ; receive data buffer here
PrevPtr dd ? ; pointer to previous socket in list
NextPtr dd ? ; pointer to next socket in list
Number dd ? ; socket number (unique within single process)
PID dd ? ; application process id
LocalIP dd ? ; local IP address
LocalPort dw ? ; local port
RemoteIP dd ? ; remote IP address
RemotePort dw ? ; remote port
OrigRemoteIP dd ? ; original remote IP address (used to reset to LISTEN state)
OrigRemotePort dw ? ; original remote port (used to reset to LISTEN state)
rxDataCount dd ? ; rx data count
TCBState dd ? ; TCB state
TCBTimer dd ? ; TCB timer (seconds)
ISS dd ? ; initial send sequence
IRS dd ? ; initial receive sequence
SND_UNA dd ? ; sequence number of unack'ed sent packets
SND_NXT dd ? ; bext send sequence number to use
SND_WND dd ? ; send window
RCV_NXT dd ? ; next receive sequence number to use
RCV_WND dd ? ; receive window
SEG_LEN dd ? ; segment length
SEG_WND dd ? ; segment window
wndsizeTimer dd ? ; window size timer
mutex MUTEX ; lock mutex
rxData dd ? ; receive data buffer here
ends
 
; TCP opening modes
100,7 → 100,7
pop eax
 
mov ebx, eax
lea ecx, [eax+SOCKET.lock]
lea ecx, [eax+SOCKET.mutex]
call mutex_init
mov eax, ebx
 
473,7 → 473,8
cmp esi, SOCKET_PASSIVE
je @f
mov ebx, TCB_SYN_SENT
@@: mov [eax + SOCKET.TCBState], ebx ; Indicate the state of the TCB
@@:
mov [eax + SOCKET.TCBState], ebx ; Indicate the state of the TCB
 
cmp ebx, TCB_LISTEN
je .exit
570,7 → 571,8
add esi, 8
jmp .next_resendq
 
@@: mov dword[esi + 4], 0
@@:
mov dword[esi + 4], 0
inc ecx
add esi, 8
jmp .next_resendq
709,7 → 711,7
jz .error
 
mov ebx, eax
lea ecx, [eax + SOCKET.lock]
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
 
mov eax, [ebx + SOCKET.rxDataCount] ; get count of bytes
732,7 → 734,7
and ecx, 3
rep movsb
 
lea ecx, [ebx + SOCKET.lock]
lea ecx, [ebx + SOCKET.mutex]
mov ebx, eax
call mutex_unlock
mov eax, ebx
739,7 → 741,7
ret
 
.error_release:
lea ecx, [ebx + SOCKET.lock]
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
.error:
xor ebx, ebx
767,7 → 769,7
mov ebx, eax
 
push ecx edx
lea ecx, [eax + SOCKET.lock]
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
pop edx ecx
 
800,7 → 802,7
rep movsb ; copy remaining bytes
 
.exit:
lea ecx, [ebx + SOCKET.lock]
lea ecx, [ebx + SOCKET.mutex]
mov ebx,eax
call mutex_unlock
mov eax,ebx
814,7 → 816,7
xor esi, esi
mov [ebx + SOCKET.rxDataCount], esi ; store new count (zero)
call .start_copy
lea ecx, [ebx + SOCKET.lock]
lea ecx, [ebx + SOCKET.mutex]
mov ebx,eax
call mutex_unlock
mov eax,ebx
961,7 → 963,8
jnz @f
mov ax, 0xffff
 
@@: xchg al, ah
@@:
xchg al, ah
mov [edx + 20 + UDP_PACKET.Checksum], ax
 
; Fill in the IP header checksum
1079,7 → 1082,8
add esi, 8
jmp .next_resendq
 
@@: push ebx
@@:
push ebx
 
; OK, we have a buffer descriptor ptr in esi.
; resend entry # in ecx
1098,7 → 1102,8
; Now get buffer location, and copy buffer across. argh! more copying,,
mov edi, resendBuffer - IPBUFFSIZE
 
@@: add edi, IPBUFFSIZE
@@:
add edi, IPBUFFSIZE
loop @b
 
; we have dest buffer location in edi
/kernel/branches/Kolibri-acpi/network/stack.inc
36,10 → 36,14
uglobal
StackCounters:
dumped_rx_count dd 0
arp_tx_count: dd 0
arp_rx_count: dd 0
ip_rx_count: dd 0
ip_tx_count: dd 0
arp_tx_count:
dd 0
arp_rx_count:
dd 0
ip_rx_count:
dd 0
ip_tx_count:
dd 0
endg
 
; socket buffers
/kernel/branches/Kolibri-acpi/network/tcp.inc
669,7 → 669,8
add esi, 8
jmp .next_resendq
 
@@: mov dword[esi + 4], 0
@@:
mov dword[esi + 4], 0
inc ecx
add esi, 8
jmp .next_resendq
911,7 → 912,8
add esi, 8
jmp .next_resendq
 
@@: mov dword[esi + 4], 0
@@:
mov dword[esi + 4], 0
inc ecx
add esi, 8
jmp .next_resendq
965,7 → 967,7
.data:
push ecx
push ecx edx
lea ecx, [ebx+SOCKET.lock]
lea ecx, [ebx+SOCKET.mutex]
call mutex_lock
pop edx ecx
 
987,7 → 989,7
cld
rep movsb ; copy the data across
 
lea ecx,[ebx + SOCKET.lock]
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
 
; flag an event to the application
1033,7 → 1035,7
.overflow:
; no place in buffer
; so simply restore stack and exit
lea ecx, [ebx + SOCKET.lock]
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
pop eax ecx
ret
1052,12 → 1054,14
mov [ebx + SOCKET.TCBState], TCB_FIN_WAIT_2
jmp .exit
 
@@: mov [ebx + SOCKET.TCBState], TCB_CLOSING
@@:
mov [ebx + SOCKET.TCBState], TCB_CLOSING
cmp al, TH_FIN
je @f
mov [ebx + SOCKET.TCBState], TCB_TIMED_WAIT
 
@@: lea esi, [ebx + SOCKET.RCV_NXT]
@@:
lea esi, [ebx + SOCKET.RCV_NXT]
call inc_inet_esi
 
; Send an ACK