diff options
author | David S. Miller <davem@davemloft.net> | 2012-12-07 12:32:47 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-12-07 12:33:53 -0500 |
commit | 1d9c5a04d5208c6bc53364a513508ffcab1bc338 (patch) | |
tree | 708f9dd953d1117baa2cfa8334d0629cc4139a4f | |
parent | 8caaf7b608ae27f7e7d5f5df6f87039db556d4bb (diff) | |
parent | 6699938bde8cf9bc3e118077e84484b7587b8533 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
Jeff Kirsher says:
====================
This series contains updates to igb and ixgbe.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 55 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 26 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_common.h | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 7 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 11 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 2 |
7 files changed, 42 insertions, 62 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index de4ebb306530..06513d9e9fb7 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c | |||
@@ -60,8 +60,8 @@ | |||
60 | #include "igb.h" | 60 | #include "igb.h" |
61 | 61 | ||
62 | #define MAJ 4 | 62 | #define MAJ 4 |
63 | #define MIN 0 | 63 | #define MIN 1 |
64 | #define BUILD 17 | 64 | #define BUILD 2 |
65 | #define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \ | 65 | #define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \ |
66 | __stringify(BUILD) "-k" | 66 | __stringify(BUILD) "-k" |
67 | char igb_driver_name[] = "igb"; | 67 | char igb_driver_name[] = "igb"; |
@@ -122,6 +122,7 @@ static void igb_remove(struct pci_dev *pdev); | |||
122 | static int igb_sw_init(struct igb_adapter *); | 122 | static int igb_sw_init(struct igb_adapter *); |
123 | static int igb_open(struct net_device *); | 123 | static int igb_open(struct net_device *); |
124 | static int igb_close(struct net_device *); | 124 | static int igb_close(struct net_device *); |
125 | static void igb_configure(struct igb_adapter *); | ||
125 | static void igb_configure_tx(struct igb_adapter *); | 126 | static void igb_configure_tx(struct igb_adapter *); |
126 | static void igb_configure_rx(struct igb_adapter *); | 127 | static void igb_configure_rx(struct igb_adapter *); |
127 | static void igb_clean_all_tx_rings(struct igb_adapter *); | 128 | static void igb_clean_all_tx_rings(struct igb_adapter *); |
@@ -831,17 +832,18 @@ static int igb_request_msix(struct igb_adapter *adapter) | |||
831 | { | 832 | { |
832 | struct net_device *netdev = adapter->netdev; | 833 | struct net_device *netdev = adapter->netdev; |
833 | struct e1000_hw *hw = &adapter->hw; | 834 | struct e1000_hw *hw = &adapter->hw; |
834 | int i, err = 0, vector = 0; | 835 | int i, err = 0, vector = 0, free_vector = 0; |
835 | 836 | ||
836 | err = request_irq(adapter->msix_entries[vector].vector, | 837 | err = request_irq(adapter->msix_entries[vector].vector, |
837 | igb_msix_other, 0, netdev->name, adapter); | 838 | igb_msix_other, 0, netdev->name, adapter); |
838 | if (err) | 839 | if (err) |
839 | goto out; | 840 | goto err_out; |
840 | vector++; | ||
841 | 841 | ||
842 | for (i = 0; i < adapter->num_q_vectors; i++) { | 842 | for (i = 0; i < adapter->num_q_vectors; i++) { |
843 | struct igb_q_vector *q_vector = adapter->q_vector[i]; | 843 | struct igb_q_vector *q_vector = adapter->q_vector[i]; |
844 | 844 | ||
845 | vector++; | ||
846 | |||
845 | q_vector->itr_register = hw->hw_addr + E1000_EITR(vector); | 847 | q_vector->itr_register = hw->hw_addr + E1000_EITR(vector); |
846 | 848 | ||
847 | if (q_vector->rx.ring && q_vector->tx.ring) | 849 | if (q_vector->rx.ring && q_vector->tx.ring) |
@@ -860,13 +862,22 @@ static int igb_request_msix(struct igb_adapter *adapter) | |||
860 | igb_msix_ring, 0, q_vector->name, | 862 | igb_msix_ring, 0, q_vector->name, |
861 | q_vector); | 863 | q_vector); |
862 | if (err) | 864 | if (err) |
863 | goto out; | 865 | goto err_free; |
864 | vector++; | ||
865 | } | 866 | } |
866 | 867 | ||
867 | igb_configure_msix(adapter); | 868 | igb_configure_msix(adapter); |
868 | return 0; | 869 | return 0; |
869 | out: | 870 | |
871 | err_free: | ||
872 | /* free already assigned IRQs */ | ||
873 | free_irq(adapter->msix_entries[free_vector++].vector, adapter); | ||
874 | |||
875 | vector--; | ||
876 | for (i = 0; i < vector; i++) { | ||
877 | free_irq(adapter->msix_entries[free_vector++].vector, | ||
878 | adapter->q_vector[i]); | ||
879 | } | ||
880 | err_out: | ||
870 | return err; | 881 | return err; |
871 | } | 882 | } |
872 | 883 | ||
@@ -948,11 +959,14 @@ static void igb_clear_interrupt_scheme(struct igb_adapter *adapter) | |||
948 | * Attempt to configure interrupts using the best available | 959 | * Attempt to configure interrupts using the best available |
949 | * capabilities of the hardware and kernel. | 960 | * capabilities of the hardware and kernel. |
950 | **/ | 961 | **/ |
951 | static void igb_set_interrupt_capability(struct igb_adapter *adapter) | 962 | static void igb_set_interrupt_capability(struct igb_adapter *adapter, bool msix) |
952 | { | 963 | { |
953 | int err; | 964 | int err; |
954 | int numvecs, i; | 965 | int numvecs, i; |
955 | 966 | ||
967 | if (!msix) | ||
968 | goto msi_only; | ||
969 | |||
956 | /* Number of supported queues. */ | 970 | /* Number of supported queues. */ |
957 | adapter->num_rx_queues = adapter->rss_queues; | 971 | adapter->num_rx_queues = adapter->rss_queues; |
958 | if (adapter->vfs_allocated_count) | 972 | if (adapter->vfs_allocated_count) |
@@ -1199,12 +1213,12 @@ err_out: | |||
1199 | * | 1213 | * |
1200 | * This function initializes the interrupts and allocates all of the queues. | 1214 | * This function initializes the interrupts and allocates all of the queues. |
1201 | **/ | 1215 | **/ |
1202 | static int igb_init_interrupt_scheme(struct igb_adapter *adapter) | 1216 | static int igb_init_interrupt_scheme(struct igb_adapter *adapter, bool msix) |
1203 | { | 1217 | { |
1204 | struct pci_dev *pdev = adapter->pdev; | 1218 | struct pci_dev *pdev = adapter->pdev; |
1205 | int err; | 1219 | int err; |
1206 | 1220 | ||
1207 | igb_set_interrupt_capability(adapter); | 1221 | igb_set_interrupt_capability(adapter, msix); |
1208 | 1222 | ||
1209 | err = igb_alloc_q_vectors(adapter); | 1223 | err = igb_alloc_q_vectors(adapter); |
1210 | if (err) { | 1224 | if (err) { |
@@ -1240,20 +1254,15 @@ static int igb_request_irq(struct igb_adapter *adapter) | |||
1240 | /* fall back to MSI */ | 1254 | /* fall back to MSI */ |
1241 | igb_free_all_tx_resources(adapter); | 1255 | igb_free_all_tx_resources(adapter); |
1242 | igb_free_all_rx_resources(adapter); | 1256 | igb_free_all_rx_resources(adapter); |
1257 | |||
1243 | igb_clear_interrupt_scheme(adapter); | 1258 | igb_clear_interrupt_scheme(adapter); |
1244 | if (!pci_enable_msi(pdev)) | 1259 | err = igb_init_interrupt_scheme(adapter, false); |
1245 | adapter->flags |= IGB_FLAG_HAS_MSI; | 1260 | if (err) |
1246 | adapter->num_tx_queues = 1; | ||
1247 | adapter->num_rx_queues = 1; | ||
1248 | adapter->num_q_vectors = 1; | ||
1249 | err = igb_alloc_q_vectors(adapter); | ||
1250 | if (err) { | ||
1251 | dev_err(&pdev->dev, | ||
1252 | "Unable to allocate memory for vectors\n"); | ||
1253 | goto request_done; | 1261 | goto request_done; |
1254 | } | 1262 | |
1255 | igb_setup_all_tx_resources(adapter); | 1263 | igb_setup_all_tx_resources(adapter); |
1256 | igb_setup_all_rx_resources(adapter); | 1264 | igb_setup_all_rx_resources(adapter); |
1265 | igb_configure(adapter); | ||
1257 | } | 1266 | } |
1258 | 1267 | ||
1259 | igb_assign_vector(adapter->q_vector[0], 0); | 1268 | igb_assign_vector(adapter->q_vector[0], 0); |
@@ -2444,7 +2453,7 @@ static int igb_sw_init(struct igb_adapter *adapter) | |||
2444 | GFP_ATOMIC); | 2453 | GFP_ATOMIC); |
2445 | 2454 | ||
2446 | /* This call may decrease the number of queues */ | 2455 | /* This call may decrease the number of queues */ |
2447 | if (igb_init_interrupt_scheme(adapter)) { | 2456 | if (igb_init_interrupt_scheme(adapter, true)) { |
2448 | dev_err(&pdev->dev, "Unable to allocate memory for queues\n"); | 2457 | dev_err(&pdev->dev, "Unable to allocate memory for queues\n"); |
2449 | return -ENOMEM; | 2458 | return -ENOMEM; |
2450 | } | 2459 | } |
@@ -6818,7 +6827,7 @@ static int igb_resume(struct device *dev) | |||
6818 | pci_enable_wake(pdev, PCI_D3hot, 0); | 6827 | pci_enable_wake(pdev, PCI_D3hot, 0); |
6819 | pci_enable_wake(pdev, PCI_D3cold, 0); | 6828 | pci_enable_wake(pdev, PCI_D3cold, 0); |
6820 | 6829 | ||
6821 | if (igb_init_interrupt_scheme(adapter)) { | 6830 | if (igb_init_interrupt_scheme(adapter, true)) { |
6822 | dev_err(&pdev->dev, "Unable to allocate memory for queues\n"); | 6831 | dev_err(&pdev->dev, "Unable to allocate memory for queues\n"); |
6823 | return -ENOMEM; | 6832 | return -ENOMEM; |
6824 | } | 6833 | } |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c index e75f5a4a2a6d..1073aea5da40 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | |||
@@ -1078,7 +1078,7 @@ mac_reset_top: | |||
1078 | hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr); | 1078 | hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr); |
1079 | 1079 | ||
1080 | /* Add the SAN MAC address to the RAR only if it's a valid address */ | 1080 | /* Add the SAN MAC address to the RAR only if it's a valid address */ |
1081 | if (ixgbe_validate_mac_addr(hw->mac.san_addr) == 0) { | 1081 | if (is_valid_ether_addr(hw->mac.san_addr)) { |
1082 | hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1, | 1082 | hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1, |
1083 | hw->mac.san_addr, 0, IXGBE_RAH_AV); | 1083 | hw->mac.san_addr, 0, IXGBE_RAH_AV); |
1084 | 1084 | ||
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c index 5af1eebc32f1..5e68afdd502a 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | |||
@@ -1783,29 +1783,6 @@ s32 ixgbe_update_eeprom_checksum_generic(struct ixgbe_hw *hw) | |||
1783 | } | 1783 | } |
1784 | 1784 | ||
1785 | /** | 1785 | /** |
1786 | * ixgbe_validate_mac_addr - Validate MAC address | ||
1787 | * @mac_addr: pointer to MAC address. | ||
1788 | * | ||
1789 | * Tests a MAC address to ensure it is a valid Individual Address | ||
1790 | **/ | ||
1791 | s32 ixgbe_validate_mac_addr(u8 *mac_addr) | ||
1792 | { | ||
1793 | s32 status = 0; | ||
1794 | |||
1795 | /* Make sure it is not a multicast address */ | ||
1796 | if (IXGBE_IS_MULTICAST(mac_addr)) | ||
1797 | status = IXGBE_ERR_INVALID_MAC_ADDR; | ||
1798 | /* Not a broadcast address */ | ||
1799 | else if (IXGBE_IS_BROADCAST(mac_addr)) | ||
1800 | status = IXGBE_ERR_INVALID_MAC_ADDR; | ||
1801 | /* Reject the zero address */ | ||
1802 | else if (is_zero_ether_addr(mac_addr)) | ||
1803 | status = IXGBE_ERR_INVALID_MAC_ADDR; | ||
1804 | |||
1805 | return status; | ||
1806 | } | ||
1807 | |||
1808 | /** | ||
1809 | * ixgbe_set_rar_generic - Set Rx address register | 1786 | * ixgbe_set_rar_generic - Set Rx address register |
1810 | * @hw: pointer to hardware structure | 1787 | * @hw: pointer to hardware structure |
1811 | * @index: Receive address register to write | 1788 | * @index: Receive address register to write |
@@ -1909,8 +1886,7 @@ s32 ixgbe_init_rx_addrs_generic(struct ixgbe_hw *hw) | |||
1909 | * to the permanent address. | 1886 | * to the permanent address. |
1910 | * Otherwise, use the permanent address from the eeprom. | 1887 | * Otherwise, use the permanent address from the eeprom. |
1911 | */ | 1888 | */ |
1912 | if (ixgbe_validate_mac_addr(hw->mac.addr) == | 1889 | if (!is_valid_ether_addr(hw->mac.addr)) { |
1913 | IXGBE_ERR_INVALID_MAC_ADDR) { | ||
1914 | /* Get the MAC address from the RAR0 for later reference */ | 1890 | /* Get the MAC address from the RAR0 for later reference */ |
1915 | hw->mac.ops.get_mac_addr(hw, hw->mac.addr); | 1891 | hw->mac.ops.get_mac_addr(hw, hw->mac.addr); |
1916 | 1892 | ||
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h index 1b65b6cc07bf..f7a0970a251c 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.h | |||
@@ -81,7 +81,6 @@ s32 ixgbe_fc_enable_generic(struct ixgbe_hw *hw); | |||
81 | s32 ixgbe_device_supports_autoneg_fc(struct ixgbe_hw *hw); | 81 | s32 ixgbe_device_supports_autoneg_fc(struct ixgbe_hw *hw); |
82 | void ixgbe_fc_autoneg(struct ixgbe_hw *hw); | 82 | void ixgbe_fc_autoneg(struct ixgbe_hw *hw); |
83 | 83 | ||
84 | s32 ixgbe_validate_mac_addr(u8 *mac_addr); | ||
85 | s32 ixgbe_acquire_swfw_sync(struct ixgbe_hw *hw, u16 mask); | 84 | s32 ixgbe_acquire_swfw_sync(struct ixgbe_hw *hw, u16 mask); |
86 | void ixgbe_release_swfw_sync(struct ixgbe_hw *hw, u16 mask); | 85 | void ixgbe_release_swfw_sync(struct ixgbe_hw *hw, u16 mask); |
87 | s32 ixgbe_get_san_mac_addr_generic(struct ixgbe_hw *hw, u8 *san_mac_addr); | 86 | s32 ixgbe_get_san_mac_addr_generic(struct ixgbe_hw *hw, u8 *san_mac_addr); |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 2fa16de46786..fb165b6ffada 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -4467,6 +4467,7 @@ static int ixgbe_sw_init(struct ixgbe_adapter *adapter) | |||
4467 | struct ixgbe_hw *hw = &adapter->hw; | 4467 | struct ixgbe_hw *hw = &adapter->hw; |
4468 | struct pci_dev *pdev = adapter->pdev; | 4468 | struct pci_dev *pdev = adapter->pdev; |
4469 | unsigned int rss; | 4469 | unsigned int rss; |
4470 | u32 fwsm; | ||
4470 | #ifdef CONFIG_IXGBE_DCB | 4471 | #ifdef CONFIG_IXGBE_DCB |
4471 | int j; | 4472 | int j; |
4472 | struct tc_configuration *tc; | 4473 | struct tc_configuration *tc; |
@@ -4490,7 +4491,9 @@ static int ixgbe_sw_init(struct ixgbe_adapter *adapter) | |||
4490 | adapter->max_q_vectors = MAX_Q_VECTORS_82598; | 4491 | adapter->max_q_vectors = MAX_Q_VECTORS_82598; |
4491 | break; | 4492 | break; |
4492 | case ixgbe_mac_X540: | 4493 | case ixgbe_mac_X540: |
4493 | adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE; | 4494 | fwsm = IXGBE_READ_REG(hw, IXGBE_FWSM); |
4495 | if (fwsm & IXGBE_FWSM_TS_ENABLED) | ||
4496 | adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE; | ||
4494 | case ixgbe_mac_82599EB: | 4497 | case ixgbe_mac_82599EB: |
4495 | adapter->max_q_vectors = MAX_Q_VECTORS_82599; | 4498 | adapter->max_q_vectors = MAX_Q_VECTORS_82599; |
4496 | adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE; | 4499 | adapter->flags2 |= IXGBE_FLAG2_RSC_CAPABLE; |
@@ -7444,7 +7447,7 @@ static int ixgbe_probe(struct pci_dev *pdev, | |||
7444 | memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len); | 7447 | memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len); |
7445 | memcpy(netdev->perm_addr, hw->mac.perm_addr, netdev->addr_len); | 7448 | memcpy(netdev->perm_addr, hw->mac.perm_addr, netdev->addr_len); |
7446 | 7449 | ||
7447 | if (ixgbe_validate_mac_addr(netdev->perm_addr)) { | 7450 | if (!is_valid_ether_addr(netdev->perm_addr)) { |
7448 | e_dev_err("invalid MAC address\n"); | 7451 | e_dev_err("invalid MAC address\n"); |
7449 | err = -EIO; | 7452 | err = -EIO; |
7450 | goto err_sw_init; | 7453 | goto err_sw_init; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h index 21915e20399a..9cd8a13711d3 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | |||
@@ -1834,15 +1834,6 @@ enum { | |||
1834 | /* Number of 100 microseconds we wait for PCI Express master disable */ | 1834 | /* Number of 100 microseconds we wait for PCI Express master disable */ |
1835 | #define IXGBE_PCI_MASTER_DISABLE_TIMEOUT 800 | 1835 | #define IXGBE_PCI_MASTER_DISABLE_TIMEOUT 800 |
1836 | 1836 | ||
1837 | /* Check whether address is multicast. This is little-endian specific check.*/ | ||
1838 | #define IXGBE_IS_MULTICAST(Address) \ | ||
1839 | (bool)(((u8 *)(Address))[0] & ((u8)0x01)) | ||
1840 | |||
1841 | /* Check whether an address is broadcast. */ | ||
1842 | #define IXGBE_IS_BROADCAST(Address) \ | ||
1843 | ((((u8 *)(Address))[0] == ((u8)0xff)) && \ | ||
1844 | (((u8 *)(Address))[1] == ((u8)0xff))) | ||
1845 | |||
1846 | /* RAH */ | 1837 | /* RAH */ |
1847 | #define IXGBE_RAH_VIND_MASK 0x003C0000 | 1838 | #define IXGBE_RAH_VIND_MASK 0x003C0000 |
1848 | #define IXGBE_RAH_VIND_SHIFT 18 | 1839 | #define IXGBE_RAH_VIND_SHIFT 18 |
@@ -1963,6 +1954,8 @@ enum { | |||
1963 | #define IXGBE_MRQC_RSS_FIELD_IPV6_EX_UDP 0x01000000 | 1954 | #define IXGBE_MRQC_RSS_FIELD_IPV6_EX_UDP 0x01000000 |
1964 | #define IXGBE_MRQC_L3L4TXSWEN 0x00008000 | 1955 | #define IXGBE_MRQC_L3L4TXSWEN 0x00008000 |
1965 | 1956 | ||
1957 | #define IXGBE_FWSM_TS_ENABLED 0x1 | ||
1958 | |||
1966 | /* Queue Drop Enable */ | 1959 | /* Queue Drop Enable */ |
1967 | #define IXGBE_QDE_ENABLE 0x00000001 | 1960 | #define IXGBE_QDE_ENABLE 0x00000001 |
1968 | #define IXGBE_QDE_IDX_MASK 0x00007F00 | 1961 | #define IXGBE_QDE_IDX_MASK 0x00007F00 |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c index de4da5219b71..c73b92993391 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | |||
@@ -152,7 +152,7 @@ mac_reset_top: | |||
152 | hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr); | 152 | hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr); |
153 | 153 | ||
154 | /* Add the SAN MAC address to the RAR only if it's a valid address */ | 154 | /* Add the SAN MAC address to the RAR only if it's a valid address */ |
155 | if (ixgbe_validate_mac_addr(hw->mac.san_addr) == 0) { | 155 | if (is_valid_ether_addr(hw->mac.san_addr)) { |
156 | hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1, | 156 | hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1, |
157 | hw->mac.san_addr, 0, IXGBE_RAH_AV); | 157 | hw->mac.san_addr, 0, IXGBE_RAH_AV); |
158 | 158 | ||