iwlwifi: mvm: send all the NVM sections to the NIC
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 5 Jan 2014 13:09:44 +0000 (15:09 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Mon, 13 Jan 2014 20:17:15 +0000 (22:17 +0200)
Some NIC comes with more than the 4 NVM (non volative
memory) sections described in the nvm_to_read array.
These NICs usually get their NVM from an external file
fetched from userland during init.
We already parsed the file, but sent to the NIC only 4 NVM
sections whereas there could be more sections in the file.
Fix this.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/mvm/nvm.c

index c6beb0f..9affd43 100644 (file)
@@ -393,16 +393,15 @@ out:
 int iwl_mvm_load_nvm_to_nic(struct iwl_mvm *mvm)
 {
        int i, ret;
-       u16 section_id;
        struct iwl_nvm_section *sections = mvm->nvm_sections;
 
        IWL_DEBUG_EEPROM(mvm->trans->dev, "'Write to NVM\n");
 
-       for (i = 0; i < ARRAY_SIZE(nvm_to_read); i++) {
-               section_id = nvm_to_read[i];
-               ret = iwl_nvm_write_section(mvm, section_id,
-                                           sections[section_id].data,
-                                           sections[section_id].length);
+       for (i = 0; i < ARRAY_SIZE(mvm->nvm_sections); i++) {
+               if (!mvm->nvm_sections[i].data || !mvm->nvm_sections[i].length)
+                       continue;
+               ret = iwl_nvm_write_section(mvm, i, sections[i].data,
+                                           sections[i].length);
                if (ret < 0) {
                        IWL_ERR(mvm, "iwl_mvm_send_cmd failed: %d\n", ret);
                        break;