mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-15 19:06:50 +07:00
iwlwifi: treat iwl_parse_nvm_data() MAC addr as little endian
The MAC address parameters passed to iwl_parse_nvm_data() are passed on to iwl_set_hw_address_family_8000() which treats them as little endian. Annotate them as such, and add the missing byte-swapping in mvm. While at it, add the MAC address to the error to make debugging issues with it easier. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
81f02ba3db
commit
c257d5fb52
@ -539,7 +539,7 @@ static void iwl_set_hw_address_family_8000(struct device *dev,
|
|||||||
struct iwl_nvm_data *data,
|
struct iwl_nvm_data *data,
|
||||||
const __le16 *mac_override,
|
const __le16 *mac_override,
|
||||||
const __le16 *nvm_hw,
|
const __le16 *nvm_hw,
|
||||||
u32 mac_addr0, u32 mac_addr1)
|
__le32 mac_addr0, __le32 mac_addr1)
|
||||||
{
|
{
|
||||||
const u8 *hw_addr;
|
const u8 *hw_addr;
|
||||||
|
|
||||||
@ -583,7 +583,8 @@ static void iwl_set_hw_address_family_8000(struct device *dev,
|
|||||||
|
|
||||||
if (!is_valid_ether_addr(data->hw_addr))
|
if (!is_valid_ether_addr(data->hw_addr))
|
||||||
IWL_ERR_DEV(dev,
|
IWL_ERR_DEV(dev,
|
||||||
"mac address from hw section is not valid\n");
|
"mac address (%pM) from hw section is not valid\n",
|
||||||
|
data->hw_addr);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -597,7 +598,7 @@ iwl_parse_nvm_data(struct device *dev, const struct iwl_cfg *cfg,
|
|||||||
const __le16 *nvm_calib, const __le16 *regulatory,
|
const __le16 *nvm_calib, const __le16 *regulatory,
|
||||||
const __le16 *mac_override, const __le16 *phy_sku,
|
const __le16 *mac_override, const __le16 *phy_sku,
|
||||||
u8 tx_chains, u8 rx_chains, bool lar_fw_supported,
|
u8 tx_chains, u8 rx_chains, bool lar_fw_supported,
|
||||||
u32 mac_addr0, u32 mac_addr1)
|
__le32 mac_addr0, __le32 mac_addr1)
|
||||||
{
|
{
|
||||||
struct iwl_nvm_data *data;
|
struct iwl_nvm_data *data;
|
||||||
u32 sku;
|
u32 sku;
|
||||||
|
@ -79,7 +79,7 @@ iwl_parse_nvm_data(struct device *dev, const struct iwl_cfg *cfg,
|
|||||||
const __le16 *nvm_calib, const __le16 *regulatory,
|
const __le16 *nvm_calib, const __le16 *regulatory,
|
||||||
const __le16 *mac_override, const __le16 *phy_sku,
|
const __le16 *mac_override, const __le16 *phy_sku,
|
||||||
u8 tx_chains, u8 rx_chains, bool lar_fw_supported,
|
u8 tx_chains, u8 rx_chains, bool lar_fw_supported,
|
||||||
u32 mac_addr0, u32 mac_addr1);
|
__le32 mac_addr0, __le32 mac_addr1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* iwl_parse_mcc_info - parse MCC (mobile country code) info coming from FW
|
* iwl_parse_mcc_info - parse MCC (mobile country code) info coming from FW
|
||||||
|
@ -300,7 +300,7 @@ iwl_parse_nvm_sections(struct iwl_mvm *mvm)
|
|||||||
struct iwl_nvm_section *sections = mvm->nvm_sections;
|
struct iwl_nvm_section *sections = mvm->nvm_sections;
|
||||||
const __le16 *hw, *sw, *calib, *regulatory, *mac_override, *phy_sku;
|
const __le16 *hw, *sw, *calib, *regulatory, *mac_override, *phy_sku;
|
||||||
bool lar_enabled;
|
bool lar_enabled;
|
||||||
u32 mac_addr0, mac_addr1;
|
__le32 mac_addr0, mac_addr1;
|
||||||
|
|
||||||
/* Checking for required sections */
|
/* Checking for required sections */
|
||||||
if (mvm->trans->cfg->device_family != IWL_DEVICE_FAMILY_8000) {
|
if (mvm->trans->cfg->device_family != IWL_DEVICE_FAMILY_8000) {
|
||||||
@ -337,8 +337,10 @@ iwl_parse_nvm_sections(struct iwl_mvm *mvm)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* read the mac address from WFMP registers */
|
/* read the mac address from WFMP registers */
|
||||||
mac_addr0 = iwl_trans_read_prph(mvm->trans, WFMP_MAC_ADDR_0);
|
mac_addr0 = cpu_to_le32(iwl_trans_read_prph(mvm->trans,
|
||||||
mac_addr1 = iwl_trans_read_prph(mvm->trans, WFMP_MAC_ADDR_1);
|
WFMP_MAC_ADDR_0));
|
||||||
|
mac_addr1 = cpu_to_le32(iwl_trans_read_prph(mvm->trans,
|
||||||
|
WFMP_MAC_ADDR_1));
|
||||||
|
|
||||||
hw = (const __le16 *)sections[mvm->cfg->nvm_hw_section_num].data;
|
hw = (const __le16 *)sections[mvm->cfg->nvm_hw_section_num].data;
|
||||||
sw = (const __le16 *)sections[NVM_SECTION_TYPE_SW].data;
|
sw = (const __le16 *)sections[NVM_SECTION_TYPE_SW].data;
|
||||||
|
Loading…
Reference in New Issue
Block a user