test: use SPDX tags in 6WIND copyrighted files
[dpdk.git] / drivers / net / octeontx / octeontx_ethdev.c
index 94af880..06aa0a2 100644 (file)
@@ -1,34 +1,7 @@
-/*
- *   BSD LICENSE
- *
- *   Copyright (C) Cavium Inc. 2017. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in
- *       the documentation and/or other materials provided with the
- *       distribution.
- *     * Neither the name of Cavium networks nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2017 Cavium, Inc
  */
+
 #include <stdio.h>
 #include <stdarg.h>
 #include <stdbool.h>
@@ -44,7 +17,7 @@
 #include <rte_kvargs.h>
 #include <rte_malloc.h>
 #include <rte_prefetch.h>
-#include <rte_vdev.h>
+#include <rte_bus_vdev.h>
 
 #include "octeontx_ethdev.h"
 #include "octeontx_rxtx.h"
@@ -54,6 +27,9 @@ struct octeontx_vdev_init_params {
        uint8_t nr_port;
 };
 
+uint16_t
+rte_octeontx_pchan_map[OCTEONTX_MAX_BGX_PORTS][OCTEONTX_MAX_LMAC_PER_BGX];
+
 enum octeontx_link_speed {
        OCTEONTX_LINK_SPEED_SGMII,
        OCTEONTX_LINK_SPEED_XAUI,
@@ -65,6 +41,27 @@ enum octeontx_link_speed {
        OCTEONTX_LINK_SPEED_RESERVE2
 };
 
+int otx_net_logtype_mbox;
+int otx_net_logtype_init;
+int otx_net_logtype_driver;
+
+RTE_INIT(otx_net_init_log);
+static void
+otx_net_init_log(void)
+{
+       otx_net_logtype_mbox = rte_log_register("pmd.net.octeontx.mbox");
+       if (otx_net_logtype_mbox >= 0)
+               rte_log_set_level(otx_net_logtype_mbox, RTE_LOG_NOTICE);
+
+       otx_net_logtype_init = rte_log_register("pmd.net.octeontx.init");
+       if (otx_net_logtype_init >= 0)
+               rte_log_set_level(otx_net_logtype_init, RTE_LOG_NOTICE);
+
+       otx_net_logtype_driver = rte_log_register("pmd.net.octeontx.driver");
+       if (otx_net_logtype_driver >= 0)
+               rte_log_set_level(otx_net_logtype_driver, RTE_LOG_NOTICE);
+}
+
 /* Parse integer from integer argument */
 static int
 parse_integer_arg(const char *key __rte_unused,
@@ -199,7 +196,7 @@ octeontx_port_promisc_set(struct octeontx_nic *nic, int en)
                        nic->port_id, en ? "set" : "unset");
 }
 
-static void
+static int
 octeontx_port_stats(struct octeontx_nic *nic, struct rte_eth_stats *stats)
 {
        octeontx_mbox_bgx_port_stats_t bgx_stats;
@@ -208,8 +205,10 @@ octeontx_port_stats(struct octeontx_nic *nic, struct rte_eth_stats *stats)
        PMD_INIT_FUNC_TRACE();
 
        res = octeontx_bgx_port_stats(nic->port_id, &bgx_stats);
-       if (res < 0)
+       if (res < 0) {
                octeontx_log_err("failed to get port stats %d", nic->port_id);
+               return res;
+       }
 
        stats->ipackets = bgx_stats.rx_packets;
        stats->ibytes = bgx_stats.rx_bytes;
@@ -221,6 +220,8 @@ octeontx_port_stats(struct octeontx_nic *nic, struct rte_eth_stats *stats)
 
        octeontx_log_dbg("port%d stats inpkts=%" PRIx64 " outpkts=%" PRIx64 "",
                        nic->port_id, stats->ipackets, stats->opackets);
+
+       return 0;
 }
 
 static void
@@ -568,19 +569,19 @@ octeontx_dev_link_update(struct rte_eth_dev *dev,
                break;
        }
 
-       link.link_duplex = ETH_LINK_AUTONEG;
-       link.link_autoneg = ETH_LINK_SPEED_AUTONEG;
+       link.link_duplex = ETH_LINK_FULL_DUPLEX;
+       link.link_autoneg = ETH_LINK_AUTONEG;
 
        return octeontx_atomic_write_link_status(dev, &link);
 }
 
-static void
+static int
 octeontx_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 {
        struct octeontx_nic *nic = octeontx_pmd_priv(dev);
 
        PMD_INIT_FUNC_TRACE();
-       octeontx_port_stats(nic, stats);
+       return octeontx_port_stats(nic, stats);
 }
 
 static void
@@ -926,6 +927,7 @@ octeontx_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qidx,
                        pki_hash.tag_slc = 1;
                        pki_hash.tag_dlf = 1;
                        pki_hash.tag_slf = 1;
+                       pki_hash.tag_prt = 1;
                        octeontx_pki_port_hash_config(port, &pki_hash);
                }
 
@@ -937,7 +939,7 @@ octeontx_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qidx,
                pki_qos.qpg_qos = PKI_QPG_QOS_NONE;
                pki_qos.num_entry = 1;
                pki_qos.drop_policy = 0;
-               pki_qos.tag_type = 2L;
+               pki_qos.tag_type = 0L;
                pki_qos.qos_entry[0].port_add = 0;
                pki_qos.qos_entry[0].gaura = gaura;
                pki_qos.qos_entry[0].ggrp_ok = ev_queues;
@@ -993,6 +995,17 @@ octeontx_dev_supported_ptypes_get(struct rte_eth_dev *dev)
        return NULL;
 }
 
+static int
+octeontx_pool_ops(struct rte_eth_dev *dev, const char *pool)
+{
+       RTE_SET_USED(dev);
+
+       if (!strcmp(pool, "octeontx_fpavf"))
+               return 0;
+
+       return -ENOTSUP;
+}
+
 /* Initialize and register driver with DPDK Application */
 static const struct eth_dev_ops octeontx_dev_ops = {
        .dev_configure           = octeontx_dev_configure,
@@ -1013,6 +1026,7 @@ static const struct eth_dev_ops octeontx_dev_ops = {
        .rx_queue_setup          = octeontx_dev_rx_queue_setup,
        .rx_queue_release        = octeontx_dev_rx_queue_release,
        .dev_supported_ptypes_get = octeontx_dev_supported_ptypes_get,
+       .pool_ops_supported      = octeontx_pool_ops,
 };
 
 /* Create Ethdev interface per BGX LMAC ports */
@@ -1128,6 +1142,9 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev,
                                nic->num_tx_queues);
        PMD_INIT_LOG(DEBUG, "speed %d mtu %d", nic->speed, nic->mtu);
 
+       rte_octeontx_pchan_map[(nic->base_ochan >> 8) & 0x7]
+               [(nic->base_ochan >> 4) & 0xF] = data->port_id;
+
        return data->port_id;
 
 err: