Rev 5524 | Rev 5842 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5524 | Rev 5528 | ||
---|---|---|---|
Line 19... | Line 19... | ||
19 | ;; GNU GENERAL PUBLIC LICENSE ;; |
19 | ;; GNU GENERAL PUBLIC LICENSE ;; |
20 | ;; Version 2, June 1991 ;; |
20 | ;; Version 2, June 1991 ;; |
21 | ;; ;; |
21 | ;; ;; |
22 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
22 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 23... | Line 23... | ||
23 | 23 | ||
Line 24... | Line 24... | ||
24 | $Revision: 5524 $ |
24 | $Revision: 5528 $ |
25 | 25 | ||
26 | uglobal |
26 | uglobal |
27 | net_10ms dd ? |
27 | net_10ms dd ? |
Line 28... | Line 28... | ||
28 | net_tmr_count dw ? |
28 | net_tmr_count dw ? |
29 | endg |
29 | endg |
Line 30... | Line 30... | ||
30 | 30 | ||
- | 31 | DEBUG_NETWORK_ERROR = 1 |
|
- | 32 | DEBUG_NETWORK_VERBOSE = 0 |
|
31 | DEBUG_NETWORK_ERROR = 1 |
33 | |
Line 32... | Line 34... | ||
32 | DEBUG_NETWORK_VERBOSE = 0 |
34 | NET_DEVICES_MAX = 16 |
33 | 35 | NET_BUFFERS = 512 |
|
34 | NET_DEVICES_MAX = 16 |
36 | NET_BUFFER_SIZE = 2048 |
Line 144... | Line 146... | ||
144 | NET_DEVICE_LOOPBACK = 0 |
146 | NET_DEVICE_LOOPBACK = 0 |
145 | NET_DEVICE_ETH = 1 |
147 | NET_DEVICE_ETH = 1 |
146 | NET_DEVICE_SLIP = 2 |
148 | NET_DEVICE_SLIP = 2 |
Line 147... | Line 149... | ||
147 | 149 | ||
148 | ; Network link types (link protocols) |
150 | ; Network link types (link protocols) |
149 | NET_LINK_LOOPBACK = 0 ;;; Really a link type? |
151 | NET_LINK_LOOPBACK = 0 |
150 | NET_LINK_MAC = 1 ; Media access control (ethernet, isdn, ...) |
152 | NET_LINK_MAC = 1 ; Media access control (ethernet, isdn, ...) |
151 | NET_LINK_PPP = 2 ; Point to Point Protocol (PPPoE, ...) |
153 | NET_LINK_PPP = 2 ; Point to Point Protocol (PPPoE, ...) |
Line 152... | Line 154... | ||
152 | NET_LINK_IEEE802.11 = 3 ; IEEE 802.11 (WiFi) |
154 | NET_LINK_IEEE802.11 = 3 ; IEEE 802.11 (WiFi) |
Line 243... | Line 245... | ||
243 | align 4 |
245 | align 4 |
Line 244... | Line 246... | ||
244 | 246 | ||
245 | NET_RUNNING dd ? |
247 | NET_RUNNING dd ? |
Line -... | Line 248... | ||
- | 248 | NET_DRV_LIST rd NET_DEVICES_MAX |
|
- | 249 | ||
- | 250 | NET_BUFFS_FREE rd NET_BUFFERS |
|
246 | NET_DRV_LIST rd NET_DEVICES_MAX |
251 | .current dd ? |
Line 247... | Line 252... | ||
247 | 252 | ||
248 | endg |
253 | endg |
Line 259... | Line 264... | ||
259 | ; |
264 | ; |
260 | ;----------------------------------------------------------------- |
265 | ;----------------------------------------------------------------- |
261 | align 4 |
266 | align 4 |
262 | stack_init: |
267 | stack_init: |
Line -... | Line 268... | ||
- | 268 | ||
- | 269 | ; allocate network buffers |
|
- | 270 | stdcall kernel_alloc, NET_BUFFER_SIZE*NET_BUFFERS |
|
- | 271 | test eax, eax |
|
- | 272 | jz .fail |
|
- | 273 | ||
- | 274 | mov edi, NET_BUFFS_FREE |
|
- | 275 | mov ecx, NET_BUFFERS |
|
- | 276 | cld |
|
- | 277 | .loop: |
|
- | 278 | stosd |
|
- | 279 | add eax, NET_BUFFER_SIZE |
|
- | 280 | dec ecx |
|
- | 281 | jnz .loop |
|
- | 282 | ||
- | 283 | mov eax, NET_BUFFS_FREE |
|
- | 284 | stosd |
|
263 | 285 | ||
264 | ; Init the network drivers list |
286 | ; Init the network drivers list |
265 | xor eax, eax |
287 | xor eax, eax |
266 | mov edi, NET_RUNNING |
288 | mov edi, NET_RUNNING |
267 | mov ecx, (NET_DEVICES_MAX + 1) |
289 | mov ecx, (NET_DEVICES_MAX + 1) |
Line 282... | Line 304... | ||
282 | SOCKET_init |
304 | SOCKET_init |
Line 283... | Line 305... | ||
283 | 305 | ||
Line 284... | Line 306... | ||
284 | LOOP_init |
306 | LOOP_init |
- | 307 | ||
Line -... | Line 308... | ||
- | 308 | mov [net_tmr_count], 0 |
|
- | 309 | ret |
|
285 | 310 | ||
Line 286... | Line 311... | ||
286 | mov [net_tmr_count], 0 |
311 | .fail: |
Line 341... | Line 366... | ||
341 | .exit: |
366 | .exit: |
342 | ret |
367 | ret |
Line 343... | Line 368... | ||
343 | 368 | ||
344 | 369 | ||
- | 370 | align 4 |
|
345 | align 4 |
371 | proc NET_BUFF_alloc stdcall, buffersize |
- | 372 | cmp [buffersize], NET_BUFFER_SIZE |
|
- | 373 | ja .too_large |
|
- | 374 | ||
- | 375 | spin_lock_irqsave |
|
- | 376 | ||
- | 377 | mov eax, [NET_BUFFS_FREE.current] |
|
- | 378 | cmp eax, NET_BUFFS_FREE+NET_BUFFERS*4 |
|
- | 379 | jae .out_of_mem |
|
- | 380 | mov eax, [eax] |
|
- | 381 | add [NET_BUFFS_FREE.current], 4 |
|
- | 382 | ||
- | 383 | spin_unlock_irqrestore |
|
- | 384 | ||
- | 385 | DEBUGF 1, "net alloc: 0x%x\n", eax |
|
- | 386 | ret |
|
- | 387 | ||
- | 388 | .out_of_mem: |
|
- | 389 | spin_unlock_irqrestore |
|
- | 390 | ||
- | 391 | xor eax, eax |
|
- | 392 | DEBUGF DEBUG_NETWORK_ERROR, "NET_BUFF_alloc: out of mem!\n" |
|
- | 393 | ret |
|
- | 394 | ||
- | 395 | .too_large: |
|
- | 396 | xor eax, eax |
|
- | 397 | DEBUGF DEBUG_NETWORK_ERROR, "NET_BUFF_alloc: too large!\n" |
|
Line 346... | Line 398... | ||
346 | NET_BUFF_alloc: |
398 | ret |
347 | jmp kernel_alloc |
399 | endp |
- | 400 | ||
- | 401 | ||
- | 402 | align 4 |
|
- | 403 | proc NET_BUFF_free stdcall, buffer |
|
- | 404 | ||
- | 405 | DEBUGF 1, "net free: 0x%x\n", [buffer] |
|
- | 406 | ||
- | 407 | spin_lock_irqsave |
|
348 | 408 | ||
- | 409 | sub [NET_BUFFS_FREE.current], 4 |
|
- | 410 | mov eax, [NET_BUFFS_FREE.current] |
|
- | 411 | push [buffer] |
|
- | 412 | pop dword[eax] |
|
- | 413 | ||
Line 349... | Line 414... | ||
349 | 414 | spin_unlock_irqrestore |
|
350 | align 4 |
415 |