From: Jakub Kicinski Now that the rx_buf_len is stored and validated per queue allow it being set differently for different queues. Instead of copying the device setting for each queue ask the core for the config via netdev_queue_config(). Signed-off-by: Jakub Kicinski Signed-off-by: Pavel Begunkov --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index b02205f1f010..5490f956f577 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -4313,6 +4313,7 @@ static void bnxt_init_ring_struct(struct bnxt *bp) for (i = 0; i < bp->cp_nr_rings; i++) { struct bnxt_napi *bnapi = bp->bnapi[i]; + struct netdev_queue_config qcfg; struct bnxt_ring_mem_info *rmem; struct bnxt_cp_ring_info *cpr; struct bnxt_rx_ring_info *rxr; @@ -4335,7 +4336,8 @@ static void bnxt_init_ring_struct(struct bnxt *bp) if (!rxr) goto skip_rx; - rxr->rx_page_size = bp->rx_page_size; + netdev_queue_config(bp->dev, i, &qcfg); + rxr->rx_page_size = qcfg.rx_buf_len; ring = &rxr->rx_ring_struct; rmem = &ring->ring_mem; @@ -15870,6 +15872,7 @@ static int bnxt_queue_mem_alloc(struct net_device *dev, clone->rx_agg_prod = 0; clone->rx_sw_agg_prod = 0; clone->rx_next_cons = 0; + clone->rx_page_size = qcfg->rx_buf_len; clone->need_head_pool = false; rc = bnxt_alloc_rx_page_pool(bp, clone, rxr->page_pool->p.nid); @@ -15976,6 +15979,8 @@ static void bnxt_copy_rx_ring(struct bnxt *bp, src_ring = &src->rx_ring_struct; src_rmem = &src_ring->ring_mem; + dst->rx_page_size = src->rx_page_size; + WARN_ON(dst_rmem->nr_pages != src_rmem->nr_pages); WARN_ON(dst_rmem->page_size != src_rmem->page_size); WARN_ON(dst_rmem->flags != src_rmem->flags); @@ -16183,6 +16188,7 @@ bnxt_queue_cfg_defaults(struct net_device *dev, int idx, } static const struct netdev_queue_mgmt_ops bnxt_queue_mgmt_ops = { + .supported_ring_params = ETHTOOL_RING_USE_RX_BUF_LEN, .ndo_queue_mem_size = sizeof(struct bnxt_rx_ring_info), .ndo_queue_cfg_defaults = bnxt_queue_cfg_defaults, -- 2.49.0