Handling scatter-gather list for specified protocol

Hello,

I’m developing a kernel module that should handle Etherent layer 2.
Each etherent packet starts with the following struct :

struct eth_addr {
UINT8 dest[6];
UINT8 src[6]
UINT16 type;
}eth_addr ;

The rate of the data is up to 10Gb/sec.
The card should handle only Jumbo frames (9,216 bytes).

My concern is the scatter-gather list.
Should I contain descriptors each ready for 9216 bytes ?
Should I receive interrupt upon each descriptor ?

Can you please tell how an Intel NIC handles this ?

Thank you,
Zvika

based on our questions, I infer that you have a lot to learn. You might start with some documentation

https://learn.microsoft.com/en-us/windows-hardware/drivers/network/roadmap-for-developing-ndis-miniport-drivers

Intel NIC drivers are complex and it is not a matter of a simple forum post to explain all that they do - even if we were at liberty. Think about hybrid polling to improve throughput under heavy load by eliding interrupts, receive side scaling to spread diverse streams of packets to different cores and hardware offloads for common protocols like TCP and UDP at a minimum. Then think about virtual machine queues. Then think about NUMA

I think you will need a more specific question to get any useful help here

In my experience, writing great high-performing NIC drivers requires a wonderful mix of deep device knowledge, expert OS insight, significant hard-earned experience, and artistic ability. I have never written a driver for a more demanding device type.

I think Mr. Bond put it nicely: “I think you will need a more specific question to get any useful help here” – Yes, indeed.