PF_RING single runmode and PF_RING off-by-one fix.
On a fully loaded frame PF_RING recv code suffers from an off-by-one error. PF_RING does bounds checking on the buffer it is copying into and truncates to length. PF_RING single thread runmode i.e. all processing contained in a single thread seems to perform significantly better on networks where there is an even distribution of traffic, and worse on networks where there are one or two top talkers.
Updated by Will Metcalf about 10 years ago
GET_PKT_DIRECT_MAX_SIZE() is defined as..
#define GET_PKT_DIRECT_MAX_SIZE(p) default_packet_size - 1
PF_RING does bounds checking when copying into a user specified buffer. If the dest buffer is larger than the segment the packet is truncated. So we only copy 1513 bytes of a fully loaded 1514 byte frame. This check appears to be broken though right? Why not?
#define GET_PKT_DIRECT_MAX_SIZE(p) default_packet_size