net/pfe: add MTU and MAC address set
[dpdk.git] / drivers / net / bnxt / bnxt_rxq.c
index 667d048..9439fcd 100644 (file)
@@ -64,6 +64,7 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
                        rc = -ENOMEM;
                        goto err_out;
                }
+               filter->flags |= HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_OUTERMOST;
                STAILQ_INSERT_TAIL(&vnic->filter, filter, next);
                goto out;
        }
@@ -75,6 +76,7 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
                switch (dev_conf->rxmode.mq_mode) {
                case ETH_MQ_RX_VMDQ_RSS:
                case ETH_MQ_RX_VMDQ_ONLY:
+               case ETH_MQ_RX_VMDQ_DCB_RSS:
                        /* FALLTHROUGH */
                        /* ETH_8/64_POOLs */
                        pools = conf->nb_queue_pools;
@@ -90,7 +92,7 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
                                pools = max_pools;
                        break;
                case ETH_MQ_RX_RSS:
-                       pools = 1;
+                       pools = bp->rx_cosq_cnt ? bp->rx_cosq_cnt : 1;
                        break;
                default:
                        PMD_DRV_LOG(ERR, "Unsupported mq_mod %d\n",
@@ -145,6 +147,7 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
                        rc = -ENOMEM;
                        goto err_out;
                }
+               filter->flags |= HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_OUTERMOST;
                /*
                 * TODO: Configure & associate CFA rule for
                 * each VNIC for each VMDq with MACVLAN, MACVLAN+TC
@@ -225,7 +228,9 @@ void bnxt_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq)
        /* Free up mbufs in TPA */
        tpa_info = rxq->rx_ring->tpa_info;
        if (tpa_info) {
-               for (i = 0; i < BNXT_TPA_MAX; i++) {
+               int max_aggs = BNXT_TPA_MAX_AGGS(rxq->bp);
+
+               for (i = 0; i < max_aggs; i++) {
                        if (tpa_info[i].mbuf) {
                                rte_pktmbuf_free_seg(tpa_info[i].mbuf);
                                tpa_info[i].mbuf = NULL;
@@ -336,8 +341,8 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev,
 
        eth_dev->data->rx_queues[queue_idx] = rxq;
        /* Allocate RX ring hardware descriptors */
-       if (bnxt_alloc_rings(bp, queue_idx, NULL, rxq, rxq->cp_ring,
-                       rxq->nq_ring, "rxr")) {
+       if (bnxt_alloc_rings(bp, queue_idx, NULL, rxq, rxq->cp_ring, NULL,
+                            "rxr")) {
                PMD_DRV_LOG(ERR,
                        "ring_dma_zone_reserve for rx_ring failed!\n");
                bnxt_rx_queue_release_op(rxq);