2

We have developed an Application Specific Integrated Circuit for power line communications. The chip has an ethernet interface. If the ASIC receives an ethernet frame containing TCP/IP or ARP payload (ethertypes 0x0800 IPv4, 0x0806 ARP and 0x86DD IPv6), it simply forwards the frame onto the power line and does the same in the other direction. We call such frames data frames.

If the ASIC receives an ethernet frame of a specific ethertype (we use 0x88b5 which is allocated for experimental//public use on local networks), it consumes this frame itself. These frames contain configuration settings for the ASIC. We call these configuration frames.

The chip is connected to an Ethernet LAN on one side and to power line on the other end. So it basically bridges the two network. The ASIC requires throttling of the data frames passing through it. This is due to the fact that the speeds over power line are 100 times less than the 100 Mbps Ethernet and also because the number of data frames that the ASIC can handle per second are limited.

We use raw sockets to form the configuration frames and send it via ethernet to the ASIC. Is there a way in which whenever configuration frame (0x88b5), it is queued in front of all the pending data frames (ethertypes 0x0800, 0x0806, 0x86dd) in the netdev_queue?

Can this be done via some supporting functionality implemented using hacks & hooks in a kernel module?

We came across a similar question (although improperly tagged) here: Setting up priority of packets that are being transmitted over the network

Community
  • 1
  • 1
lithiumhead
  • 861
  • 1
  • 9
  • 19
  • maybe you can use a different queue strategy for net\_dev, priority queue maybe? – Dru Sep 15 '13 at 04:45
  • or you could hack netdev so the queue always has a blank configuration frame at the head of the queue, the netdev checks the frame priority flag and if it is zero, sends packets farther back in the queue, write to the configuration frame and flip the priority bit... – Dru Sep 15 '13 at 05:18

0 Answers0