Search Linux Wireless

Re: [PATCH 1/4] mwifiex: avoid queue_work while work is ongoing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Avinash Patil <patila@xxxxxxxxxxx> writes:

> From: Marc Yang <yangyang@xxxxxxxxxxx>
>
> Current code does not check whether main_work_queue or
> rx_work_queue is running when preparing to do queue_work,
> this code fix add check before calling queue_work, reducing
> unnecessary queue_work switch.
>
> This change instead sets more_task flag to ensure we run main_process
> superloop once again.
>
> Signed-off-by: Marc Yang <yangyang@xxxxxxxxxxx>
> Signed-off-by: Zhaoyang Liu <liuzy@xxxxxxxxxxx>
> Signed-off-by: Shengzhen Li <szli@xxxxxxxxxxx>
> Signed-off-by: Cathy Luo <cluo@xxxxxxxxxxx>
> Signed-off-by: Amitkumar Karwar <akarwar@xxxxxxxxxxx>
> Signed-off-by: Avinash Patil <patila@xxxxxxxxxxx>

Really, it took six persons to write this patch? Or do you just dump the
same names to each patch?

> +void mwifiex_queue_main_work(struct mwifiex_adapter *adapter)
> +{
> +	unsigned long flags;
> +
> +	spin_lock_irqsave(&adapter->main_proc_lock, flags);
> +	if (adapter->mwifiex_processing) {
> +		adapter->more_task_flag = true;
> +		spin_unlock_irqrestore(&adapter->main_proc_lock, flags);
> +	} else {
> +		spin_unlock_irqrestore(&adapter->main_proc_lock, flags);
> +		queue_work(adapter->workqueue, &adapter->main_work);
> +	}
> +}
> +EXPORT_SYMBOL_GPL(mwifiex_queue_main_work);
> +
> +static void mwifiex_queue_rx_work(struct mwifiex_adapter *adapter)
> +{
> +	unsigned long flags;
> +
> +	spin_lock_irqsave(&adapter->rx_proc_lock, flags);
> +	if (adapter->rx_processing) {
> +		spin_unlock_irqrestore(&adapter->rx_proc_lock, flags);
> +	} else {
> +		spin_unlock_irqrestore(&adapter->rx_proc_lock, flags);
> +		queue_work(adapter->rx_workqueue, &adapter->rx_work);
> +	}
> +}

I can apply this patch, but to me this looks like a horrible hack.

-- 
Kalle Valo
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux