sfc: Use ether_addr_copy and eth_broadcast_addr
[deliverable/linux.git] / drivers / net / ethernet / sfc / efx.c
index 83d4643470213b7f2380b2fcaadb8404f6d08dc4..52589f6a8beb8d787185a708a050b9d1e28460c0 100644 (file)
@@ -503,8 +503,6 @@ static int efx_probe_channel(struct efx_channel *channel)
                        goto fail;
        }
 
-       channel->n_rx_frm_trunc = 0;
-
        return 0;
 
 fail:
@@ -1014,7 +1012,7 @@ static int efx_probe_port(struct efx_nic *efx)
                return rc;
 
        /* Initialise MAC address to permanent address */
-       memcpy(efx->net_dev->dev_addr, efx->net_dev->perm_addr, ETH_ALEN);
+       ether_addr_copy(efx->net_dev->dev_addr, efx->net_dev->perm_addr);
 
        return 0;
 }
@@ -1346,20 +1344,23 @@ static int efx_probe_interrupts(struct efx_nic *efx)
 
                for (i = 0; i < n_channels; i++)
                        xentries[i].entry = i;
-               rc = pci_enable_msix(efx->pci_dev, xentries, n_channels);
-               if (rc > 0) {
+               rc = pci_enable_msix_range(efx->pci_dev,
+                                          xentries, 1, n_channels);
+               if (rc < 0) {
+                       /* Fall back to single channel MSI */
+                       efx->interrupt_mode = EFX_INT_MODE_MSI;
+                       netif_err(efx, drv, efx->net_dev,
+                                 "could not enable MSI-X\n");
+               } else if (rc < n_channels) {
                        netif_err(efx, drv, efx->net_dev,
                                  "WARNING: Insufficient MSI-X vectors"
                                  " available (%d < %u).\n", rc, n_channels);
                        netif_err(efx, drv, efx->net_dev,
                                  "WARNING: Performance may be reduced.\n");
-                       EFX_BUG_ON_PARANOID(rc >= n_channels);
                        n_channels = rc;
-                       rc = pci_enable_msix(efx->pci_dev, xentries,
-                                            n_channels);
                }
 
-               if (rc == 0) {
+               if (rc > 0) {
                        efx->n_channels = n_channels;
                        if (n_channels > extra_channels)
                                n_channels -= extra_channels;
@@ -1375,11 +1376,6 @@ static int efx_probe_interrupts(struct efx_nic *efx)
                        for (i = 0; i < efx->n_channels; i++)
                                efx_get_channel(efx, i)->irq =
                                        xentries[i].vector;
-               } else {
-                       /* Fall back to single channel MSI */
-                       efx->interrupt_mode = EFX_INT_MODE_MSI;
-                       netif_err(efx, drv, efx->net_dev,
-                                 "could not enable MSI-X\n");
                }
        }
 
@@ -2115,7 +2111,7 @@ static int efx_set_mac_address(struct net_device *net_dev, void *data)
 {
        struct efx_nic *efx = netdev_priv(net_dev);
        struct sockaddr *addr = data;
-       char *new_addr = addr->sa_data;
+       u8 *new_addr = addr->sa_data;
 
        if (!is_valid_ether_addr(new_addr)) {
                netif_err(efx, drv, efx->net_dev,
@@ -2124,7 +2120,7 @@ static int efx_set_mac_address(struct net_device *net_dev, void *data)
                return -EADDRNOTAVAIL;
        }
 
-       memcpy(net_dev->dev_addr, new_addr, net_dev->addr_len);
+       ether_addr_copy(net_dev->dev_addr, new_addr);
        efx_sriov_mac_address_changed(efx);
 
        /* Reconfigure the MAC */
@@ -3273,6 +3269,6 @@ module_exit(efx_exit_module);
 
 MODULE_AUTHOR("Solarflare Communications and "
              "Michael Brown <mbrown@fensystems.co.uk>");
-MODULE_DESCRIPTION("Solarflare Communications network driver");
+MODULE_DESCRIPTION("Solarflare network driver");
 MODULE_LICENSE("GPL");
 MODULE_DEVICE_TABLE(pci, efx_pci_table);
This page took 0.028427 seconds and 5 git commands to generate.