From: Lance Richardson Date: Wed, 29 May 2019 21:02:22 +0000 (-0400) Subject: net/bnxt: compute and store scattered Rx status X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=ff9031492c43ecacb58988cf91cae21be8510056;p=dpdk.git net/bnxt: compute and store scattered Rx status In preparation for a bnxt vector-mode driver, compute and store scattered_rx status for the device when started. Signed-off-by: Lance Richardson Reviewed-by: Ajit Khaparde Reviewed-by: Maxime Coquelin --- diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 6d2a6721a5..43722601cb 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -624,6 +624,26 @@ static int bnxt_dev_lsc_intr_setup(struct rte_eth_dev *eth_dev) return 0; } +/* + * Determine whether the current configuration requires support for scattered + * receive; return 1 if scattered receive is required and 0 if not. + */ +static int bnxt_scattered_rx(struct rte_eth_dev *eth_dev) +{ + uint16_t buf_size; + int i; + + for (i = 0; i < eth_dev->data->nb_rx_queues; i++) { + struct bnxt_rx_queue *rxq = eth_dev->data->rx_queues[i]; + + buf_size = (uint16_t)(rte_pktmbuf_data_room_size(rxq->mb_pool) - + RTE_PKTMBUF_HEADROOM); + if (eth_dev->data->dev_conf.rxmode.max_rx_pkt_len > buf_size) + return 1; + } + return 0; +} + static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private; @@ -642,6 +662,8 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) if (rc) goto error; + eth_dev->data->scattered_rx = bnxt_scattered_rx(eth_dev); + bnxt_link_update_op(eth_dev, 1); if (rx_offloads & DEV_RX_OFFLOAD_VLAN_FILTER)