net/qede: fix incorrect queue id for 100G
[dpdk.git] / drivers / net / qede / qede_rxtx.c
index 665a07b..a232d20 100644 (file)
@@ -82,6 +82,7 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
        rxq->nb_rx_desc = nb_desc;
        rxq->queue_id = queue_idx;
        rxq->port_id = dev->data->port_id;
+
        max_rx_pkt_len = (uint16_t)rxmode->max_rx_pkt_len;
        qdev->mtu = max_rx_pkt_len;
 
@@ -94,6 +95,7 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                        dev->data->scattered_rx = 1;
                }
        }
+
        if (dev->data->scattered_rx)
                rxq->rx_buf_size = bufsz + QEDE_ETH_OVERHEAD;
        else
@@ -109,9 +111,8 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
        rxq->sw_rx_ring = rte_zmalloc_socket("sw_rx_ring", size,
                                             RTE_CACHE_LINE_SIZE, socket_id);
        if (!rxq->sw_rx_ring) {
-               DP_NOTICE(edev, false,
-                         "Unable to alloc memory for sw_rx_ring on socket %u\n",
-                         socket_id);
+               DP_ERR(edev, "Memory allocation fails for sw_rx_ring on"
+                      " socket %u\n", socket_id);
                rte_free(rxq);
                return -ENOMEM;
        }
@@ -127,9 +128,8 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                                            NULL);
 
        if (rc != ECORE_SUCCESS) {
-               DP_NOTICE(edev, false,
-                         "Unable to alloc memory for rxbd ring on socket %u\n",
-                         socket_id);
+               DP_ERR(edev, "Memory allocation fails for RX BD ring"
+                      " on socket %u\n", socket_id);
                rte_free(rxq->sw_rx_ring);
                rte_free(rxq);
                return -ENOMEM;
@@ -146,9 +146,8 @@ qede_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                                            NULL);
 
        if (rc != ECORE_SUCCESS) {
-               DP_NOTICE(edev, false,
-                         "Unable to alloc memory for cqe ring on socket %u\n",
-                         socket_id);
+               DP_ERR(edev, "Memory allocation fails for RX CQE ring"
+                      " on socket %u\n", socket_id);
                qdev->ops->common->chain_free(edev, &rxq->rx_bd_ring);
                rte_free(rxq->sw_rx_ring);
                rte_free(rxq);
@@ -553,8 +552,9 @@ qede_rx_queue_start(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id)
                ecore_sb_ack(fp->sb_info, IGU_INT_DISABLE, 0);
                /* Prepare ramrod */
                memset(&params, 0, sizeof(params));
-               params.queue_id = rx_queue_id;
+               params.queue_id = rx_queue_id / edev->num_hwfns;
                params.vport_id = 0;
+               params.stats_id = params.vport_id;
                params.sb = fp->sb_info->igu_sb_id;
                DP_INFO(edev, "rxq %u igu_sb_id 0x%x\n",
                                fp->rxq->queue_id, fp->sb_info->igu_sb_id);
@@ -611,8 +611,9 @@ qede_tx_queue_start(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id)
                txq = eth_dev->data->tx_queues[tx_queue_id];
                fp = &qdev->fp_array[tx_queue_id];
                memset(&params, 0, sizeof(params));
-               params.queue_id = tx_queue_id;
+               params.queue_id = tx_queue_id / edev->num_hwfns;
                params.vport_id = 0;
+               params.stats_id = params.vport_id;
                params.sb = fp->sb_info->igu_sb_id;
                DP_INFO(edev, "txq %u igu_sb_id 0x%x\n",
                                fp->txq->queue_id, fp->sb_info->igu_sb_id);
@@ -704,7 +705,6 @@ qede_process_tx_compl(__rte_unused struct ecore_dev *edev,
                qede_free_tx_pkt(txq);
 }
 
-
 static int qede_drain_txq(struct qede_dev *qdev,
                          struct qede_tx_queue *txq, bool allow_drain)
 {
@@ -740,7 +740,6 @@ static int qede_drain_txq(struct qede_dev *qdev,
        return 0;
 }
 
-
 /* Stops a given TX queue in the HW */
 static int qede_tx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id)
 {
@@ -1083,7 +1082,7 @@ qede_process_sg_pkts(void *p_rxq,  struct rte_mbuf *rx_mb,
                                                        pkt_len;
                if (unlikely(!cur_size)) {
                        PMD_RX_LOG(ERR, rxq, "Length is 0 while %u BDs"
-                                  " left for mapping jumbo", num_segs);
+                                  " left for mapping jumbo\n", num_segs);
                        qede_recycle_rx_bd_ring(rxq, qdev, num_segs);
                        return -EINVAL;
                }