mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-12 01:20:14 +00:00
idpf: cap maximum Rx buffer size
The HW only supports a maximum Rx buffer size of 16K-128. On systems
using large pages, the libeth logic can configure the buffer size to be
larger than this. The upper bound is PAGE_SIZE while the lower bound is
MTU rounded up to the nearest power of 2. For example, ARM systems with
a 64K page size and an mtu of 9000 will set the Rx buffer size to 16K,
which will cause the config Rx queues message to fail.
Initialize the bufq/fill queue buf_len field to the maximum supported
size. This will trigger the libeth logic to cap the maximum Rx buffer
size by reducing the upper bound.
Fixes: 74d1412ac8f37 ("idpf: use libeth Rx buffer management for payload buffer")
Signed-off-by: Joshua Hay <joshua.a.hay@intel.com>
Acked-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Reviewed-by: Madhu Chittim <madhu.chittim@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: David Decotigny <ddecotig@google.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
87b8ee6468
commit
086efe0a1e
@ -695,9 +695,10 @@ err:
|
||||
static int idpf_rx_bufs_init_singleq(struct idpf_rx_queue *rxq)
|
||||
{
|
||||
struct libeth_fq fq = {
|
||||
.count = rxq->desc_count,
|
||||
.type = LIBETH_FQE_MTU,
|
||||
.nid = idpf_q_vector_to_mem(rxq->q_vector),
|
||||
.count = rxq->desc_count,
|
||||
.type = LIBETH_FQE_MTU,
|
||||
.buf_len = IDPF_RX_MAX_BUF_SZ,
|
||||
.nid = idpf_q_vector_to_mem(rxq->q_vector),
|
||||
};
|
||||
int ret;
|
||||
|
||||
@ -754,6 +755,7 @@ static int idpf_rx_bufs_init(struct idpf_buf_queue *bufq,
|
||||
.truesize = bufq->truesize,
|
||||
.count = bufq->desc_count,
|
||||
.type = type,
|
||||
.buf_len = IDPF_RX_MAX_BUF_SZ,
|
||||
.hsplit = idpf_queue_has(HSPLIT_EN, bufq),
|
||||
.xdp = idpf_xdp_enabled(bufq->q_vector->vport),
|
||||
.nid = idpf_q_vector_to_mem(bufq->q_vector),
|
||||
|
||||
@ -101,6 +101,7 @@ do { \
|
||||
idx = 0; \
|
||||
} while (0)
|
||||
|
||||
#define IDPF_RX_MAX_BUF_SZ (16384 - 128)
|
||||
#define IDPF_RX_BUF_STRIDE 32
|
||||
#define IDPF_RX_BUF_POST_STRIDE 16
|
||||
#define IDPF_LOW_WATERMARK 64
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user