Ver código fonte

qcacld-3.0: Revert set ol_rx_thread to SCHED_RR

Revert set ol_rx_thread to SCHED_RR, SCHED_RR could lead to
hdd_ctx->bus_bw_work delayed for long time, and throughput level is not
updated while running traffic, finally hdd_rx_packet_cbk drop packets(rx
path slow).

Change-Id: Idc48c4ff4f38e25124121f814492ea116555cd32
CRs-Fixed: 2398511
hangtian 6 anos atrás
pai
commit
0aa4b545c5

+ 0 - 30
core/cds/src/cds_sched.c

@@ -388,35 +388,6 @@ static void cds_cpu_before_offline_cb(void *context, uint32_t cpu)
 {
 	cds_cpu_hotplug_notify(cpu, false);
 }
-
-#ifdef RX_PERFORMANCE
-/**
- * cds_set_ol_rx_thread_scheduler - set ol_rx_thread scheduler
- * @psched_context: Pointer to a previously allocated buffer big
- *
- * Return: None
- */
-static void cds_set_ol_rx_thread_scheduler(p_cds_sched_context psched_context)
-{
-	struct sched_param param;
-
-	if (!psched_context) {
-		cds_err("Null params being passed");
-		return;
-	}
-	if (!psched_context->ol_rx_thread) {
-		cds_alert("CDS OL RX Thread is NULL");
-		return;
-	}
-	param.sched_priority = 99;
-	sched_setscheduler(psched_context->ol_rx_thread, SCHED_RR, &param);
-}
-#else
-static void cds_set_ol_rx_thread_scheduler(p_cds_sched_context psched_context)
-{
-}
-#endif /* RX_PERFORMANCE */
-
 #endif /* QCA_CONFIG_SMP */
 
 /**
@@ -485,7 +456,6 @@ QDF_STATUS cds_sched_open(void *p_cds_context,
 		goto OL_RX_THREAD_START_FAILURE;
 
 	}
-	cds_set_ol_rx_thread_scheduler(pSchedContext);
 	wake_up_process(pSchedContext->ol_rx_thread);
 	cds_debug("CDS OL RX thread Created");
 	wait_for_completion_interruptible(&pSchedContext->ol_rx_start_event);

+ 1 - 1
core/hdd/inc/hdd_dp_cfg.h

@@ -648,7 +648,7 @@
 		"RX_THREAD_CPU_AFFINITY_MASK", \
 		0, \
 		0xFF, \
-		0x02, \
+		0xFE, \
 		CFG_VALUE_OR_DEFAULT, \
 		"CPU mask to affine Rx_thread")
 #else

+ 4 - 3
core/hdd/src/wlan_hdd_softap_tx_rx.c

@@ -923,9 +923,10 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *adapter_context, qdf_nbuf_t rx_buf)
 		skb->protocol = eth_type_trans(skb, skb->dev);
 
 		/* hold configurable wakelock for unicast traffic */
-		if (hdd_ctx->config->rx_wakelock_timeout &&
-			skb->pkt_type != PACKET_BROADCAST &&
-			skb->pkt_type != PACKET_MULTICAST) {
+		if (!hdd_is_current_high_throughput(hdd_ctx) &&
+		    hdd_ctx->config->rx_wakelock_timeout &&
+		    skb->pkt_type != PACKET_BROADCAST &&
+		    skb->pkt_type != PACKET_MULTICAST) {
 			cds_host_diag_log_work(&hdd_ctx->rx_wake_lock,
 						   hdd_ctx->config->rx_wakelock_timeout,
 						   WIFI_POWER_EVENT_WAKELOCK_HOLD_RX);