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

Commit 91457eaa authored by Cathy Luo's avatar Cathy Luo Committed by Kalle Valo
Browse files

mwifiex: reduce spinlock usage in main process



We will reset more_task_flag at the end of main process
routine. This optimization will help to remove spinlock
operations at couple of places in the code.

Signed-off-by: default avatarCathy Luo <cluo@marvell.com>
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent f022ea52
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -231,11 +231,10 @@ int mwifiex_main_process(struct mwifiex_adapter *adapter)
		goto exit_main_proc;
	} else {
		adapter->mwifiex_processing = true;
		spin_unlock_irqrestore(&adapter->main_proc_lock, flags);
	}
process_start:
	do {
		adapter->more_task_flag = false;
		spin_unlock_irqrestore(&adapter->main_proc_lock, flags);
		if ((adapter->hw_status == MWIFIEX_HW_STATUS_CLOSING) ||
		    (adapter->hw_status == MWIFIEX_HW_STATUS_NOT_READY))
			break;
@@ -275,7 +274,6 @@ int mwifiex_main_process(struct mwifiex_adapter *adapter)
			adapter->pm_wakeup_fw_try = true;
			mod_timer(&adapter->wakeup_timer, jiffies + (HZ*3));
			adapter->if_ops.wakeup(adapter);
			spin_lock_irqsave(&adapter->main_proc_lock, flags);
			continue;
		}

@@ -335,7 +333,6 @@ int mwifiex_main_process(struct mwifiex_adapter *adapter)
		    (adapter->ps_state == PS_STATE_PRE_SLEEP) ||
		    (adapter->ps_state == PS_STATE_SLEEP_CFM) ||
		    adapter->tx_lock_flag){
			spin_lock_irqsave(&adapter->main_proc_lock, flags);
			continue;
		}

@@ -386,12 +383,14 @@ int mwifiex_main_process(struct mwifiex_adapter *adapter)
			}
			break;
		}
		spin_lock_irqsave(&adapter->main_proc_lock, flags);
	} while (true);

	spin_lock_irqsave(&adapter->main_proc_lock, flags);
	if (adapter->more_task_flag)
	if (adapter->more_task_flag) {
		adapter->more_task_flag = false;
		spin_unlock_irqrestore(&adapter->main_proc_lock, flags);
		goto process_start;
	}
	adapter->mwifiex_processing = false;
	spin_unlock_irqrestore(&adapter->main_proc_lock, flags);