What "packet" does NE2000 actually use?

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Post Reply
mariuszp
Member
Member
Posts: 587
Joined: Sat Oct 16, 2010 3:38 pm

What "packet" does NE2000 actually use?

Post 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?)
User avatar
iansjack
Member
Member
Posts: 4685
Joined: Sat Mar 31, 2012 3:07 am
Location: Chichester, UK

Re: What "packet" does NE2000 actually use?

Post by iansjack »

Just create the ethernet frame and its contents. The rest is handled by the NIC.
User avatar
Brendan
Member
Member
Posts: 8561
Joined: Sat Jan 15, 2005 12:00 am
Location: At his keyboard!
Contact:

Re: What "packet" does NE2000 actually use?

Post 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
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Post Reply