瀏覽代碼

iwlwifi: nvm: force mac from otp in case nvm mac is reserved

Take the MAC address from the OTP even if one is present in
the NVM, if that MAC address happens to be a reserved one.

Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Liad Kaufman 10 年之前
父節點
當前提交
18f84673fb
共有 1 個文件被更改,包括 10 次插入1 次删除
  1. 10 1
      drivers/net/wireless/iwlwifi/iwl-nvm-parse.c

+ 10 - 1
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c

@@ -533,6 +533,10 @@ static void iwl_set_hw_address_family_8000(struct device *dev,
 	const u8 *hw_addr;
 	const u8 *hw_addr;
 
 
 	if (mac_override) {
 	if (mac_override) {
+		static const u8 reserved_mac[] = {
+			0x02, 0xcc, 0xaa, 0xff, 0xee, 0x00
+		};
+
 		hw_addr = (const u8 *)(mac_override +
 		hw_addr = (const u8 *)(mac_override +
 				 MAC_ADDRESS_OVERRIDE_FAMILY_8000);
 				 MAC_ADDRESS_OVERRIDE_FAMILY_8000);
 
 
@@ -544,7 +548,12 @@ static void iwl_set_hw_address_family_8000(struct device *dev,
 		data->hw_addr[4] = hw_addr[5];
 		data->hw_addr[4] = hw_addr[5];
 		data->hw_addr[5] = hw_addr[4];
 		data->hw_addr[5] = hw_addr[4];
 
 
-		if (is_valid_ether_addr(data->hw_addr))
+		/*
+		 * Force the use of the OTP MAC address in case of reserved MAC
+		 * address in the NVM, or if address is given but invalid.
+		 */
+		if (is_valid_ether_addr(data->hw_addr) &&
+		    memcmp(reserved_mac, hw_addr, ETH_ALEN) != 0)
 			return;
 			return;
 
 
 		IWL_ERR_DEV(dev,
 		IWL_ERR_DEV(dev,