For instance, if I run ethtool -g eth0
on my system, I get the following output:
Ring parameters for eth0:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Is 4096 the buffer size in bytes allocated for one frame, there being multiple number of such buffers or is it the number of buffers?
Tx/Rx buffers are memory spaces allocated by a network adapter to handle traffic bursts. Buffering takes place when the traffic exceeds physical capacity of network adapter. Increasing the buffer size would help to avoid packet loss when adapter is overloaded.
I found this article which helps to illustrate the function that the ring buffer aka. (driver queue) serves, which may help in understanding its purpose/function. The article is titled, Queueing in the Linux Network Stack.
This section is the one that's of interest:
This diagram shows where the ring buffer fits in architecturally:
According to this article, the size of the ring buffer controls the number of SKBs (socket kernel buffers) descriptors. You can read more about SKBs at the links provided, they show the C data structures which make up an SKB.
Looking through that documentation, it does not appear that the ring buffer is simply frame buffers related, but rather pointers to a much more complex kernel data structure related to the packet.