projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'scsi-queue/drivers-for-3.19' into for-linus
[cascardo/linux.git]
/
drivers
/
net
/
wireless
/
iwlwifi
/
iwl-drv.c
diff --git
a/drivers/net/wireless/iwlwifi/iwl-drv.c
b/drivers/net/wireless/iwlwifi/iwl-drv.c
index
a53b534
..
38de151
100644
(file)
--- a/
drivers/net/wireless/iwlwifi/iwl-drv.c
+++ b/
drivers/net/wireless/iwlwifi/iwl-drv.c
@@
-591,6
+591,8
@@
static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
char buildstr[25];
u32 build;
int num_of_cpus;
char buildstr[25];
u32 build;
int num_of_cpus;
+ bool usniffer_images = false;
+ bool usniffer_req = false;
if (len < sizeof(*ucode)) {
IWL_ERR(drv, "uCode has invalid length: %zd\n", len);
if (len < sizeof(*ucode)) {
IWL_ERR(drv, "uCode has invalid length: %zd\n", len);
@@
-908,6
+910,9
@@
static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
break;
}
break;
}
+ if (conf->usniffer)
+ usniffer_req = true;
+
IWL_INFO(drv, "Found debug configuration: %d\n",
conf->id);
IWL_INFO(drv, "Found debug configuration: %d\n",
conf->id);
@@
-915,12
+920,24
@@
static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
pieces->dbg_conf_tlv_len[conf->id] = tlv_len;
break;
}
pieces->dbg_conf_tlv_len[conf->id] = tlv_len;
break;
}
+ case IWL_UCODE_TLV_SEC_RT_USNIFFER:
+ usniffer_images = true;
+ iwl_store_ucode_sec(pieces, tlv_data,
+ IWL_UCODE_REGULAR_USNIFFER,
+ tlv_len);
+ break;
default:
IWL_DEBUG_INFO(drv, "unknown TLV: %d\n", tlv_type);
break;
}
}
default:
IWL_DEBUG_INFO(drv, "unknown TLV: %d\n", tlv_type);
break;
}
}
+ if (usniffer_req && !usniffer_images) {
+ IWL_ERR(drv,
+ "user selected to work with usniffer but usniffer image isn't available in ucode package\n");
+ return -EINVAL;
+ }
+
if (len) {
IWL_ERR(drv, "invalid TLV after parsing: %zd\n", len);
iwl_print_hex_dump(drv, IWL_DL_FW, (u8 *)data, len);
if (len) {
IWL_ERR(drv, "invalid TLV after parsing: %zd\n", len);
iwl_print_hex_dump(drv, IWL_DL_FW, (u8 *)data, len);