net/mlx4_en: Adjust RX frag strides to frag sizes
This patch improves memory utilization and therefore the packets rate for special MTU's. Instead of setting the frag_stride to the maximal hard coded frag_size, use the actual frag_size that is set according to the MTU, when setting the stride of the last frag. So, for example, for MTU 1600, where the frag_size of the 2nd frag is 86, the frag_size is set to 128 instead of 4096. See below: Before: frag:0 - size:1536 prefix:0 stride:1536 frag:1 - size:86 prefix:1536 stride:4096 frag 0 allocator: - size:32768 frags:21 frag 1 allocator: - size:32768 frags:8 After: frag:0 - size:1536 prefix:0 stride:1536 frag:1 - size:86 prefix:1536 stride:128 frag 0 allocator: - size:32768 frags:21 frag 1 allocator: - size:32768 frags:256 Signed-off-by: Ido Shamay <idos@mellanox.com> Signed-off-by: Amir Vadai <amirv@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b110d2ce49
commit
e8e7f018f1
|
@ -1063,8 +1063,9 @@ void mlx4_en_calc_rx_buf(struct net_device *dev)
|
|||
(eff_mtu > buf_size + frag_sizes[i]) ?
|
||||
frag_sizes[i] : eff_mtu - buf_size;
|
||||
priv->frag_info[i].frag_prefix_size = buf_size;
|
||||
priv->frag_info[i].frag_stride = ALIGN(frag_sizes[i],
|
||||
SMP_CACHE_BYTES);
|
||||
priv->frag_info[i].frag_stride =
|
||||
ALIGN(priv->frag_info[i].frag_size,
|
||||
SMP_CACHE_BYTES);
|
||||
buf_size += priv->frag_info[i].frag_size;
|
||||
i++;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue