net/mlx5: fix probe failure report
[dpdk.git] / drivers / net / mlx5 / mlx5.c
index bfcff70..d7968f5 100644 (file)
@@ -579,8 +579,10 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
                DEBUG("using port %u (%08" PRIx32 ")", port, test);
 
                ctx = ibv_open_device(ibv_dev);
-               if (ctx == NULL)
+               if (ctx == NULL) {
+                       err = ENODEV;
                        goto port_error;
+               }
 
                /* Check port status. */
                err = ibv_query_port(ctx, port, &port_attr);
@@ -592,6 +594,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
                if (port_attr.link_layer != IBV_LINK_LAYER_ETHERNET) {
                        ERROR("port %d is not configured in Ethernet mode",
                              port);
+                       err = EINVAL;
                        goto port_error;
                }
 
@@ -640,6 +643,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
                mlx5_args_assign(priv, &args);
                if (ibv_exp_query_device(ctx, &exp_device_attr)) {
                        ERROR("ibv_exp_query_device() failed");
+                       err = ENODEV;
                        goto port_error;
                }
 
@@ -728,6 +732,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
                if (priv_get_mac(priv, &mac.addr_bytes)) {
                        ERROR("cannot get MAC address, is mlx5_en loaded?"
                              " (errno: %s)", strerror(errno));
+                       err = ENODEV;
                        goto port_error;
                }
                INFO("port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x",
@@ -771,37 +776,8 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
                        err = ENOMEM;
                        goto port_error;
                }
-
-               /* Secondary processes have to use local storage for their
-                * private data as well as a copy of eth_dev->data, but this
-                * pointer must not be modified before burst functions are
-                * actually called. */
-               if (mlx5_is_secondary()) {
-                       struct mlx5_secondary_data *sd =
-                               &mlx5_secondary_data[eth_dev->data->port_id];
-                       sd->primary_priv = eth_dev->data->dev_private;
-                       if (sd->primary_priv == NULL) {
-                               ERROR("no private data for port %u",
-                                               eth_dev->data->port_id);
-                               err = EINVAL;
-                               goto port_error;
-                       }
-                       sd->shared_dev_data = eth_dev->data;
-                       rte_spinlock_init(&sd->lock);
-                       memcpy(sd->data.name, sd->shared_dev_data->name,
-                                  sizeof(sd->data.name));
-                       sd->data.dev_private = priv;
-                       sd->data.rx_mbuf_alloc_failed = 0;
-                       sd->data.mtu = ETHER_MTU;
-                       sd->data.port_id = sd->shared_dev_data->port_id;
-                       sd->data.mac_addrs = priv->mac;
-                       eth_dev->tx_pkt_burst = mlx5_tx_burst_secondary_setup;
-                       eth_dev->rx_pkt_burst = mlx5_rx_burst_secondary_setup;
-               } else {
-                       eth_dev->data->dev_private = priv;
-                       eth_dev->data->mac_addrs = priv->mac;
-               }
-
+               eth_dev->data->dev_private = priv;
+               eth_dev->data->mac_addrs = priv->mac;
                eth_dev->device = &pci_dev->device;
                rte_eth_copy_pci_info(eth_dev, pci_dev);
                eth_dev->data->dev_flags |= RTE_ETH_DEV_DETACHABLE;
@@ -913,6 +889,8 @@ rte_mlx5_pmd_init(void)
         * using this PMD, which is not supported in forked processes.
         */
        setenv("RDMAV_HUGEPAGES_SAFE", "1", 1);
+       /* Don't map UAR to WC if BlueFlame is not used.*/
+       setenv("MLX5_SHUT_UP_BF", "1", 1);
        ibv_fork_init();
        rte_pci_register(&mlx5_driver);
 }