qcacmn: Add srng pointer register writing history support

Add srng pointer register writing history, it is helpful
for debugging srng HP/TP update issue from host side.
(1) if host faced UMAC source ring, record the HP value and timestamp
when host write the register.
(2) if host faced UMAC destination ring, record the TP value and
timestamp when host write the register.

Change-Id: Ib98e48e1d32defb0d8b30b854b5b0c23691cca59
CRs-Fixed: 3427908
这个提交包含在:
Jinwei Chen
2023-03-07 22:11:31 -08:00
提交者 Madan Koyyalamudi
父节点 a9dbdc28df
当前提交 95dcc45ec2
修改 3 个文件,包含 85 行新增0 行删除

查看文件

@@ -686,6 +686,7 @@ hal_process_reg_write_q_elem(struct hal_soc *hal,
srng->u.dst_ring.tp, false);
write_val = srng->u.dst_ring.tp;
}
hal_srng_reg_his_add(srng, write_val);
q_elem->valid = 0;
srng->last_dequeue_time = q_elem->dequeue_time;
@@ -1056,6 +1057,7 @@ void hal_delayed_reg_write(struct hal_soc *hal_soc,
PLD_MHI_STATE_L0 ==
pld_get_mhi_state(hal_soc->qdf_dev->dev))) {
hal_write_address_32_mb(hal_soc, addr, value, false);
hal_srng_reg_his_add(srng, value);
qdf_atomic_inc(&hal_soc->stats.wstats.direct);
srng->wstats.direct++;
} else {
@@ -1070,6 +1072,7 @@ void hal_delayed_reg_write(struct hal_soc *hal_soc,
PLD_MHI_STATE_L0 ==
pld_get_mhi_state(hal_soc->qdf_dev->dev)) {
hal_write_address_32_mb(hal_soc, addr, value, false);
hal_srng_reg_his_add(srng, value);
qdf_atomic_inc(&hal_soc->stats.wstats.direct);
srng->wstats.direct++;
} else {
@@ -1090,6 +1093,7 @@ void hal_delayed_reg_write(struct hal_soc *hal_soc,
qdf_atomic_inc(&hal_soc->stats.wstats.direct);
srng->wstats.direct++;
hal_write_address_32_mb(hal_soc, addr, value, false);
hal_srng_reg_his_add(srng, value);
} else {
hal_reg_write_enqueue(hal_soc, srng, addr, value);
}
@@ -1556,6 +1560,7 @@ void *hal_srng_setup_idx(void *hal_soc, int ring_type, int ring_num, int mac_id,
return NULL;
}
hal_srng_reg_his_init(srng);
dev_base_addr = hal->dev_base_addr;
srng->ring_id = ring_id;
srng->ring_type = ring_type;