iwlwifi: receive umac and lmac error table addresses from TLVs
TLV 54 holds umac debug related addresses. TLV 55 holds lmac debug related addresses. These TLVs aim to replace the alive notification data in the future. Parse and keep error table addresses received from the TLVs for both lmac and umac and use these addresses instead of the pointer received from alive notification. The feature supports only unified image. Signed-off-by: Shahar S Matityahu <shahar.s.matityahu@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:

committed by
Luca Coelho

parent
ed714460a0
commit
22463857a1
@@ -75,6 +75,7 @@
|
||||
#include "iwl-dbg-tlv.h"
|
||||
#include "iwl-config.h"
|
||||
#include "iwl-modparams.h"
|
||||
#include "fw/api/alive.h"
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
@@ -588,6 +589,8 @@ static int iwl_parse_v1_v2_firmware(struct iwl_drv *drv,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define FW_ADDR_CACHE_CONTROL 0xC0000000
|
||||
|
||||
static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
|
||||
const struct firmware *ucode_raw,
|
||||
struct iwl_firmware_pieces *pieces,
|
||||
@@ -1085,6 +1088,38 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
|
||||
return -ENOMEM;
|
||||
break;
|
||||
}
|
||||
case IWL_UCODE_TLV_UMAC_DEBUG_ADDRS: {
|
||||
struct iwl_umac_debug_addrs *dbg_ptrs =
|
||||
(void *)tlv_data;
|
||||
|
||||
if (tlv_len != sizeof(*dbg_ptrs))
|
||||
goto invalid_tlv_len;
|
||||
if (drv->trans->cfg->device_family <
|
||||
IWL_DEVICE_FAMILY_22000)
|
||||
break;
|
||||
drv->trans->umac_error_event_table =
|
||||
le32_to_cpu(dbg_ptrs->error_info_addr) &
|
||||
~FW_ADDR_CACHE_CONTROL;
|
||||
drv->trans->error_event_table_tlv_status |=
|
||||
IWL_ERROR_EVENT_TABLE_UMAC;
|
||||
break;
|
||||
}
|
||||
case IWL_UCODE_TLV_LMAC_DEBUG_ADDRS: {
|
||||
struct iwl_lmac_debug_addrs *dbg_ptrs =
|
||||
(void *)tlv_data;
|
||||
|
||||
if (tlv_len != sizeof(*dbg_ptrs))
|
||||
goto invalid_tlv_len;
|
||||
if (drv->trans->cfg->device_family <
|
||||
IWL_DEVICE_FAMILY_22000)
|
||||
break;
|
||||
drv->trans->lmac_error_event_table[0] =
|
||||
le32_to_cpu(dbg_ptrs->error_event_table_ptr) &
|
||||
~FW_ADDR_CACHE_CONTROL;
|
||||
drv->trans->error_event_table_tlv_status |=
|
||||
IWL_ERROR_EVENT_TABLE_LMAC1;
|
||||
break;
|
||||
}
|
||||
case IWL_UCODE_TLV_TYPE_BUFFER_ALLOCATION:
|
||||
case IWL_UCODE_TLV_TYPE_HCMD:
|
||||
case IWL_UCODE_TLV_TYPE_REGIONS:
|
||||
|
Reference in New Issue
Block a user