Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 518cd074 authored by Karthik Kantamneni's avatar Karthik Kantamneni Committed by Madan Koyyalamudi
Browse files

qcacmn: Add HIF events to track NAPI POLL exit time

Add HIF events to track NAPI POLL exit time, this gives
information about actual time spent by wlan host in napi softirq.

Change-Id: I7548fd05f2f7db714ac9bcf79171ffb3d478e936
CRs-Fixed: 3052902
parent 737d944f
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -327,6 +327,8 @@ struct hif_opaque_softc {
 * @HIF_EVENT_BH_SCHED: NAPI POLL scheduled event
 * @HIF_EVENT_SRNG_ACCESS_START: hal ring access start event
 * @HIF_EVENT_SRNG_ACCESS_END: hal ring access end event
 * @HIF_EVENT_BH_COMPLETE: NAPI POLL completion event
 * @HIF_EVENT_BH_FORCE_BREAK: NAPI POLL force break event
 */
enum hif_event_type {
	HIF_EVENT_IRQ_TRIGGER,
@@ -335,6 +337,8 @@ enum hif_event_type {
	HIF_EVENT_BH_SCHED,
	HIF_EVENT_SRNG_ACCESS_START,
	HIF_EVENT_SRNG_ACCESS_END,
	HIF_EVENT_BH_COMPLETE,
	HIF_EVENT_BH_FORCE_BREAK,
	/* Do check hif_hist_skip_event_record when adding new events */
};

@@ -360,7 +364,7 @@ enum hif_system_pm_state {
/* HIF_EVENT_HIST_MAX should always be power of 2 */
#define HIF_EVENT_HIST_MAX		512
#define HIF_NUM_INT_CONTEXTS		HIF_MAX_GROUP
#define HIF_EVENT_HIST_ENABLE_MASK	0x3F
#define HIF_EVENT_HIST_ENABLE_MASK	0xFF

static inline uint64_t hif_get_log_timestamp(void)
{
+9 −0
Original line number Diff line number Diff line
@@ -119,6 +119,11 @@ hif_hist_skip_event_record(struct hif_event_history *hist_ev,
		if (rec->type != HIF_EVENT_SRNG_ACCESS_START)
			return true;
		break;
	case HIF_EVENT_BH_COMPLETE:
	case HIF_EVENT_BH_FORCE_BREAK:
		if (rec->type != HIF_EVENT_SRNG_ACCESS_END)
			return true;
		break;
	default:
		break;
	}
@@ -623,6 +628,8 @@ static int hif_exec_poll(struct napi_struct *napi, int budget)
	actual_dones = work_done;

	if (!hif_ext_group->force_break && work_done < normalized_budget) {
		hif_record_event(hif_ext_group->hif, hif_ext_group->grp_id,
				 0, 0, 0, HIF_EVENT_BH_COMPLETE);
		napi_complete(napi);
		qdf_atomic_dec(&scn->active_grp_tasklet_cnt);
		hif_ext_group->irq_enable(hif_ext_group);
@@ -630,6 +637,8 @@ static int hif_exec_poll(struct napi_struct *napi, int budget)
	} else {
		/* if the ext_group supports time based yield, claim full work
		 * done anyways */
		hif_record_event(hif_ext_group->hif, hif_ext_group->grp_id,
				 0, 0, 0, HIF_EVENT_BH_FORCE_BREAK);
		work_done = normalized_budget;
	}