qcacld-3.0: Set PF_WAKE_UP_IDLE flag in the IPA Rx exception callback

Prevent CPU bottleneck caused by scheduling the user process running
on the same CPU with IPA worker thread.
Set PF_WAKE_UP_IDLE flag in the IPA Rx exception callback, to wake
user task to idle CPU.

Change-Id: Ifd5b917c46fff39febd7e98f4761c9e80000ea35
CRs-Fixed: 2131917
This commit is contained in:
Yun Park
2017-11-14 10:45:16 -08:00
committed by snandini
父節點 66bb63ddda
當前提交 b28dc14126

查看文件

@@ -4125,6 +4125,7 @@ static void hdd_ipa_send_skb_to_network(qdf_nbuf_t skb,
int result;
struct hdd_ipa_priv *hdd_ipa = ghdd_ipa;
unsigned int cpu_index;
uint32_t enabled;
if (!adapter || adapter->magic != WLAN_HDD_ADAPTER_MAGIC) {
HDD_IPA_LOG(QDF_TRACE_LEVEL_DEBUG, "Invalid adapter: 0x%pK",
@@ -4140,6 +4141,14 @@ static void hdd_ipa_send_skb_to_network(qdf_nbuf_t skb,
return;
}
/*
* Set PF_WAKE_UP_IDLE flag in the task structure
* This task and any task woken by this will be waken to idle CPU
*/
enabled = sched_get_wake_up_idle(current);
if (!enabled)
sched_set_wake_up_idle(current, true);
skb->destructor = hdd_ipa_uc_rt_debug_destructor;
skb->dev = adapter->dev;
skb->protocol = eth_type_trans(skb, skb->dev);
@@ -4155,6 +4164,12 @@ static void hdd_ipa_send_skb_to_network(qdf_nbuf_t skb,
++adapter->hdd_stats.tx_rx_stats.rx_refused[cpu_index];
hdd_ipa->ipa_rx_net_send_count++;
/*
* Restore PF_WAKE_UP_IDLE flag in the task structure
*/
if (!enabled)
sched_set_wake_up_idle(current, false);
}
/**