Changes between Version 5 and Version 6 of mnc_driver
- Timestamp:
- Dec 5, 2016, 7:35:31 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
mnc_driver
v5 v6 8 8 9 9 This component has a DMA capability, to access the memory mapped RX and TX ethernet packets queues. 10 These queues are implemented by a chained buffers structure, called NIC_CHBUF, and implemented by the ''nic_chbuf_t'' structure.10 These queues are implemented as the chained buffers structure ''nic_chbuf_t'', defined [source:soft/giet_vm/giet_drivers/mnc_driver.h here] . 11 11 12 It can exist only one ethernet network controller in the architecture, but to improve the throughput, it supports up to 4 channels (i.e. 4 TX and 4 RX queues), indexed by a key depending on the source IP address for the RX packets, and depending on the destination IP address for the TX packets. All channels use the same source MAC address.12 It can exist only one Ethernet network controller in the architecture, but to improve the throughput, it supports up to 4 channels (i.e. 4 TX and 4 RX queues), indexed by a key depending on the source IP address for the RX packets, and depending on the destination IP address for the TX packets. All channels use the same source MAC address. 13 13 14 The Ethernet packet length can have any value, between64 to 1538 bytes.14 The Ethernet packet length can have any value, from 64 to 1538 bytes. 15 15 The data transfer unit between software and the NIC is a 4 Kbytes "container", containing an integer number of variable size packets. The max number of packets in a container is 66 packets. 16 16 The first 34 words of a container are the container header : … … 59 59 * return a non-zero value if packet can be read / return zero if queue is empty. 60 60 61 === 4) void '''_mnc_write'''( unsigned int channel , void* buffer , unsigned int length ) ===61 === 4) void '''_mnc_write'''( unsigned int channel , char * buffer , unsigned int length ) === 62 62 This function writes an Ethernet packet in the TX queue defined by the channel argument. It should be called after the _mnc_writable() function. 63 63 * '''channel''' : channel index … … 65 65 * '''length''' : Ethernet packet length (bytes) 66 66 67 === 5) void '''_mnc_read'''( unsigned int channel , void* buffer ) ===67 === 5) void '''_mnc_read'''( unsigned int channel , char * buffer ) === 68 68 This function read an Ethernet packet from the RX queue defined by the channel argument. It should be called after the _mnc_readable() function. 69 69 * '''channel''' : channel index