Skip to content

Commit e2841ea

Browse files
author
Kalle Valo
committed
Merge tag 'iwlwifi-for-kalle-2016-04-12_2' of https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
* add new device IDs for 8265 * fix a NULL pointer dereference when paging firmware asserts * remove a WARNING on gscan capabilities * fix MODULE_FIRMWARE for 8260
2 parents de478a6 + f742aaf commit e2841ea

File tree

5 files changed

+27
-19
lines changed

5 files changed

+27
-19
lines changed

drivers/net/wireless/intel/iwlwifi/iwl-8000.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
#define IWL8260_SMEM_OFFSET 0x400000
9494
#define IWL8260_SMEM_LEN 0x68000
9595

96-
#define IWL8000_FW_PRE "iwlwifi-8000"
96+
#define IWL8000_FW_PRE "iwlwifi-8000C-"
9797
#define IWL8000_MODULE_FIRMWARE(api) \
9898
IWL8000_FW_PRE "-" __stringify(api) ".ucode"
9999

drivers/net/wireless/intel/iwlwifi/iwl-drv.c

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -238,19 +238,6 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first)
238238
snprintf(drv->firmware_name, sizeof(drv->firmware_name), "%s%s.ucode",
239239
name_pre, tag);
240240

241-
/*
242-
* Starting 8000B - FW name format has changed. This overwrites the
243-
* previous name and uses the new format.
244-
*/
245-
if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) {
246-
char rev_step = 'A' + CSR_HW_REV_STEP(drv->trans->hw_rev);
247-
248-
if (rev_step != 'A')
249-
snprintf(drv->firmware_name,
250-
sizeof(drv->firmware_name), "%s%c-%s.ucode",
251-
name_pre, rev_step, tag);
252-
}
253-
254241
IWL_DEBUG_INFO(drv, "attempting to load firmware %s'%s'\n",
255242
(drv->fw_index == UCODE_EXPERIMENTAL_INDEX)
256243
? "EXPERIMENTAL " : "",
@@ -1060,11 +1047,18 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
10601047
return -EINVAL;
10611048
}
10621049

1063-
if (WARN(fw_has_capa(capa, IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT) &&
1064-
!gscan_capa,
1065-
"GSCAN is supported but capabilities TLV is unavailable\n"))
1050+
/*
1051+
* If ucode advertises that it supports GSCAN but GSCAN
1052+
* capabilities TLV is not present, or if it has an old format,
1053+
* warn and continue without GSCAN.
1054+
*/
1055+
if (fw_has_capa(capa, IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT) &&
1056+
!gscan_capa) {
1057+
IWL_DEBUG_INFO(drv,
1058+
"GSCAN is supported but capabilities TLV is unavailable\n");
10661059
__clear_bit((__force long)IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT,
10671060
capa->_capa);
1061+
}
10681062

10691063
return 0;
10701064

drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,8 @@ void iwl_mvm_fw_error_dump(struct iwl_mvm *mvm)
526526
file_len += sizeof(*dump_data) + sizeof(*dump_mem) + sram2_len;
527527

528528
/* Make room for fw's virtual image pages, if it exists */
529-
if (mvm->fw->img[mvm->cur_ucode].paging_mem_size)
529+
if (mvm->fw->img[mvm->cur_ucode].paging_mem_size &&
530+
mvm->fw_paging_db[0].fw_paging_block)
530531
file_len += mvm->num_of_paging_blk *
531532
(sizeof(*dump_data) +
532533
sizeof(struct iwl_fw_error_dump_paging) +
@@ -643,7 +644,8 @@ void iwl_mvm_fw_error_dump(struct iwl_mvm *mvm)
643644
}
644645

645646
/* Dump fw's virtual image */
646-
if (mvm->fw->img[mvm->cur_ucode].paging_mem_size) {
647+
if (mvm->fw->img[mvm->cur_ucode].paging_mem_size &&
648+
mvm->fw_paging_db[0].fw_paging_block) {
647649
for (i = 1; i < mvm->num_of_paging_blk + 1; i++) {
648650
struct iwl_fw_error_dump_paging *paging;
649651
struct page *pages =

drivers/net/wireless/intel/iwlwifi/mvm/fw.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,11 @@ void iwl_free_fw_paging(struct iwl_mvm *mvm)
144144

145145
__free_pages(mvm->fw_paging_db[i].fw_paging_block,
146146
get_order(mvm->fw_paging_db[i].fw_paging_size));
147+
mvm->fw_paging_db[i].fw_paging_block = NULL;
147148
}
148149
kfree(mvm->trans->paging_download_buf);
149150
mvm->trans->paging_download_buf = NULL;
151+
mvm->trans->paging_db = NULL;
150152

151153
memset(mvm->fw_paging_db, 0, sizeof(mvm->fw_paging_db));
152154
}

drivers/net/wireless/intel/iwlwifi/pcie/drv.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,8 +479,18 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
479479
{IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)},
480480
{IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8265_2ac_cfg)},
481481
{IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)},
482+
{IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)},
483+
{IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)},
484+
{IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8265_2ac_cfg)},
485+
{IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8265_2ac_cfg)},
486+
{IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8265_2ac_cfg)},
487+
{IWL_PCI_DEVICE(0x24FD, 0x9010, iwl8265_2ac_cfg)},
488+
{IWL_PCI_DEVICE(0x24FD, 0x8110, iwl8265_2ac_cfg)},
489+
{IWL_PCI_DEVICE(0x24FD, 0x8050, iwl8265_2ac_cfg)},
482490
{IWL_PCI_DEVICE(0x24FD, 0x8010, iwl8265_2ac_cfg)},
483491
{IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8265_2ac_cfg)},
492+
{IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8265_2ac_cfg)},
493+
{IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8265_2ac_cfg)},
484494

485495
/* 9000 Series */
486496
{IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl5165_2ac_cfg)},

0 commit comments

Comments
 (0)