Page 1 of 1

What "packet" does NE2000 actually use?

Posted: Wed Sep 30, 2015 6:07 am
by mariuszp
Yes, I know that the NE2000 sends and receives ethernet packets. However, loooking at wikipedia ( https://en.wikipedia.org/wiki/Ethernet_frame ) it talks about a specific format of an ethernet frame, which start with a preamable etc. However, looking at Linux code, I could only find one structure relating to Ethernet packets: this structure contains only the source MAC address, destination MAC address, and the EtherType.

This is where my confusion arises. Should an NE2000 driver pass payload within this header structure that Linux defines, or should it create a full Ethernet frame as given on that wikipedia article? (And, I assume, the format of received packets is exactly the same as the format of sent packets?)

Re: What "packet" does NE2000 actually use?

Posted: Wed Sep 30, 2015 7:30 am
by iansjack
Just create the ethernet frame and its contents. The rest is handled by the NIC.

Re: What "packet" does NE2000 actually use?

Posted: Wed Sep 30, 2015 8:16 am
by Brendan
Hi,
mariuszp wrote:Yes, I know that the NE2000 sends and receives ethernet packets. However, loooking at wikipedia ( https://en.wikipedia.org/wiki/Ethernet_frame ) it talks about a specific format of an ethernet frame, which start with a preamable etc.
This is what you'd see if you connected some sort of measuring device (e.g. an oscilloscope) to the wire/s in the network cable. The ethernet card's hardware is responsible for the preamble, start of frame delimiter and interpacket gap.

The network card driver would need to provide source and destination MAC addresses, optional tag, ethertype/length, payload and CRC. The driver can calculate the CRC itself, so normal software doesn't/wouldn't provide that; although some ethernet cards (not NE2000) have hardware to calculate the CRC for the driver.

Normal software would only need to provide source and destination MAC addresses, optional tag, ethertype/length and payload.


Cheers,

Brendan