Innovation... driven by intelligence and logic

Project.022: Ethernet Device Driver Development


Ethernet is a protocol identified by Institute of Electrical and Electronics Engineers (IEEE) Standard 802.3. It is the most common protocol used in Local Area Networks. It was originally developed by Xerox in the 1970s. The main goal of designing of ethernet was to interconnect office equipment such as computers and printers. Due to its wide availability, high bandwidth and low cost, made it appealing enough to be considered for use in other application domains too.


Ethernet is a connectionless architecture and can be identified as a “best-effort” delivery system. Ethernet operates in full-duplex mode, which means data flows in both directions. Ethernet operates at Layer 1 and low-level of Layer 2 of the Open System Interconnection (OSI) model. Ethernet comes in multiple types (Fast Ethernet, Gigabit Ethernet and 10 Gigabit Ethernet).

Speaking of Network devices they have no representation in the device file system /dev/, which means that they cannot be addressed by simple read-write operations. This is not possible because network devices works on packet basis. There are no such network devices like /dev/eth0. Network devices are configured separately by the ifconfig tool on the application level. More recently, another tool available is ip, which can be used for extensive configuration of most network functions.

The net_device structure forms the basis of each network device in the Linux kernel. It contains information about the network adapter hardware and configuration data of the network device with regard to the higher network protocols. The net_device structure represents a general interface between higher protocol instances and the hardware used.

Methods for a network device.

  • init() used to search and initialize network devices.

  • uninit() is called when a network device is unregistered.

  • open() opens (activates) a named network device.

  • stop() terminates the activity of a network adapter and frees the system resources it has used.

  • hard_start_xmit() uses a packet (in the form of a socket buffer) over the network device.

  • get_stats() gets statistics and information about the network device and its activities.


The interest in Ethernet and its use to support real-time communication continues to grow; in the industrial domain, in embedded systems and even LANs that support QoS sensitive distributed applications (e.g. video conferencing, VoIP). This growing interest also motivates a substantial research effort towards solving current limitations and improving real-time performance of Ethernet-based communication systems.

Training Objective:





  • The Duration of Training is:


  • The course is split into Seven modules:




Training Topics in Brief:

  • Identify the device connected

  • Enable the device

  • Bus-independent device access

  • Initializing net_device structure

  • Device's transmission mechanism

  • Device's receiving mechanism

  • Making the device ready to transmit packets

  • Making the device ready to receive packets


Go to Top ^