be2net: fix vfs enumeration
[cascardo/linux.git] / drivers / net / ethernet / emulex / benet / be_main.c
index 966d9af..8dd42b3 100644 (file)
@@ -241,9 +241,8 @@ static int be_mac_addr_set(struct net_device *netdev, void *p)
        if (!is_valid_ether_addr(addr->sa_data))
                return -EADDRNOTAVAIL;
 
-       status = be_cmd_mac_addr_query(adapter, current_mac,
-                               MAC_ADDRESS_TYPE_NETWORK, false,
-                               adapter->if_handle, 0);
+       status = be_cmd_mac_addr_query(adapter, current_mac, false,
+                                      adapter->if_handle, 0);
        if (status)
                goto err;
 
@@ -1087,7 +1086,7 @@ static int be_find_vfs(struct be_adapter *adapter, int vf_state)
 
        dev = pci_get_device(pdev->vendor, PCI_ANY_ID, NULL);
        while (dev) {
-               if (dev->is_virtfn && dev->physfn == pdev) {
+               if (dev->is_virtfn && pci_physfn(dev) == pdev) {
                        vfs++;
                        if (dev->dev_flags & PCI_DEV_FLAGS_ASSIGNED)
                                assigned_vfs++;
@@ -1895,6 +1894,8 @@ static int be_tx_qs_create(struct be_adapter *adapter)
                        return status;
        }
 
+       dev_info(&adapter->pdev->dev, "created %d TX queue(s)\n",
+                adapter->num_tx_qs);
        return 0;
 }
 
@@ -1945,10 +1946,9 @@ static int be_rx_cqs_create(struct be_adapter *adapter)
                        return rc;
        }
 
-       if (adapter->num_rx_qs != MAX_RX_QS)
-               dev_info(&adapter->pdev->dev,
-                       "Created only %d receive queues\n", adapter->num_rx_qs);
-
+       dev_info(&adapter->pdev->dev,
+                "created %d RSS queue(s) and 1 default RX queue\n",
+                adapter->num_rx_qs - 1);
        return 0;
 }
 
@@ -2186,6 +2186,7 @@ static void be_msix_enable(struct be_adapter *adapter)
 {
 #define BE_MIN_MSIX_VECTORS            1
        int i, status, num_vec, num_roce_vec = 0;
+       struct device *dev = &adapter->pdev->dev;
 
        /* If RSS queues are not used, need a vec for default RX Q */
        num_vec = min(be_num_rss_want(adapter), num_online_cpus());
@@ -2210,6 +2211,8 @@ static void be_msix_enable(struct be_adapter *adapter)
                                num_vec) == 0)
                        goto done;
        }
+
+       dev_warn(dev, "MSIx enable failed\n");
        return;
 done:
        if (be_roce_supported(adapter)) {
@@ -2223,6 +2226,7 @@ done:
                }
        } else
                adapter->num_msix_vec = num_vec;
+       dev_info(dev, "enabled %d MSI-x vector(s)\n", adapter->num_msix_vec);
        return;
 }
 
@@ -2439,8 +2443,7 @@ static int be_open(struct net_device *netdev)
                be_eq_notify(adapter, eqo->q.id, true, false, 0);
        }
 
-       status = be_cmd_link_status_query(adapter, NULL, NULL,
-                                         &link_status, 0);
+       status = be_cmd_link_status_query(adapter, NULL, &link_status, 0);
        if (!status)
                be_link_status_update(adapter, link_status);
 
@@ -2669,7 +2672,6 @@ static void be_setup_init(struct be_adapter *adapter)
        adapter->be3_native = false;
        adapter->promiscuous = false;
        adapter->eq_next_idx = 0;
-       adapter->phy.forced_port_speed = -1;
 }
 
 static int be_get_mac_addr(struct be_adapter *adapter, u8 *mac, u32 if_handle,
@@ -2691,21 +2693,16 @@ static int be_get_mac_addr(struct be_adapter *adapter, u8 *mac, u32 if_handle,
                status = be_cmd_get_mac_from_list(adapter, mac,
                                                  active_mac, pmac_id, 0);
                if (*active_mac) {
-                       status = be_cmd_mac_addr_query(adapter, mac,
-                                                      MAC_ADDRESS_TYPE_NETWORK,
-                                                      false, if_handle,
-                                                      *pmac_id);
+                       status = be_cmd_mac_addr_query(adapter, mac, false,
+                                                      if_handle, *pmac_id);
                }
        } else if (be_physfn(adapter)) {
                /* For BE3, for PF get permanent MAC */
-               status = be_cmd_mac_addr_query(adapter, mac,
-                                              MAC_ADDRESS_TYPE_NETWORK, true,
-                                              0, 0);
+               status = be_cmd_mac_addr_query(adapter, mac, true, 0, 0);
                *active_mac = false;
        } else {
                /* For BE3, for VF get soft MAC assigned by PF*/
-               status = be_cmd_mac_addr_query(adapter, mac,
-                                              MAC_ADDRESS_TYPE_NETWORK, false,
+               status = be_cmd_mac_addr_query(adapter, mac, false,
                                               if_handle, 0);
                *active_mac = true;
        }
@@ -3803,6 +3800,23 @@ static bool be_reset_required(struct be_adapter *adapter)
        return be_find_vfs(adapter, ENABLED) > 0 ? false : true;
 }
 
+static char *mc_name(struct be_adapter *adapter)
+{
+       if (adapter->function_mode & FLEX10_MODE)
+               return "FLEX10";
+       else if (adapter->function_mode & VNIC_MODE)
+               return "vNIC";
+       else if (adapter->function_mode & UMC_ENABLED)
+               return "UMC";
+       else
+               return "";
+}
+
+static inline char *func_name(struct be_adapter *adapter)
+{
+       return be_physfn(adapter) ? "PF" : "VF";
+}
+
 static int __devinit be_probe(struct pci_dev *pdev,
                        const struct pci_device_id *pdev_id)
 {
@@ -3893,7 +3907,7 @@ static int __devinit be_probe(struct pci_dev *pdev,
 
        status = be_setup(adapter);
        if (status)
-               goto msix_disable;
+               goto stats_clean;
 
        be_netdev_init(netdev);
        status = register_netdev(netdev);
@@ -3907,15 +3921,13 @@ static int __devinit be_probe(struct pci_dev *pdev,
 
        be_cmd_query_port_name(adapter, &port_name);
 
-       dev_info(&pdev->dev, "%s: %s port %c\n", netdev->name, nic_name(pdev),
-                port_name);
+       dev_info(&pdev->dev, "%s: %s %s port %c\n", nic_name(pdev),
+                func_name(adapter), mc_name(adapter), port_name);
 
        return 0;
 
 unsetup:
        be_clear(adapter);
-msix_disable:
-       be_msix_disable(adapter);
 stats_clean:
        be_stats_cleanup(adapter);
 ctrl_clean: