Search Linux Wireless

Re: [PATCH 5/7] ath6kl: Invoke wow suspend/resume calls during PM operations

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

 



On 10/31/2011 11:54 AM, Raja Mani wrote:
> On Friday 28 October 2011 06:45 PM, Kalle Valo wrote:
>> On 10/25/2011 01:37 PM, rmani@xxxxxxxxxxxxxxxx wrote:
>>> From: Raja Mani<rmani@xxxxxxxxxxxxxxxx>
>>>
>>> --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
>>> +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
>>> @@ -1606,6 +1606,19 @@ static int ar6k_cfg80211_suspend(struct wiphy *wiphy,
>>>   				 struct cfg80211_wowlan *wow)
>>>   {
>>>   	struct ath6kl *ar = wiphy_priv(wiphy);
>>> +	int ret;
>>> +
>>> +	if (wow&&  ath6kl_cfg80211_ready(ar)&&
>>> +	    test_bit(CONNECTED,&ar->flag)&&
>>> +	    ath6kl_hif_keep_pwr_caps(ar)) {
>>> +
>>> +		/* Flush all non control pkts in Tx path */
>>> +		ath6kl_tx_data_cleanup(ar);
>>> +
>>> +		ret = ath6kl_pm_wow_suspend(ar, wow);
>>> +		if (ret)
>>> +			return ret;
>>> +	}
>>
>> This is now confusing. Some of the suspend logic is now in sdio.c and
>> some here. It's better to have everything in one place, that is in
>> sdio.c. We just need to add an interface so that sdio.c can request the
>> correct suspend mode.
> 
> Do you want me to keep ath6kl_pm_wow_suspend() implementation in 
> cfg80211.c file and move only above code to ath6kl_sdio_suspend() ?

I gave this more thought and in my suspend patches earlier today I added
this function:

int ath6kl_cfg80211_suspend(struct ath6kl *ar,
			    enum ath6kl_cfg_suspend_mode mode)
{
	int ret;

	ath6kl_cfg80211_stop(ar);

	switch (mode) {
	case ATH6KL_CFG_SUSPEND_DEEPSLEEP:
		/* save the current power mode before enabling power save */
		ar->wmi->saved_pwr_mode = ar->wmi->pwr_mode;

		ret = ath6kl_wmi_powermode_cmd(ar->wmi, 0, REC_POWER);
		if (ret) {
			ath6kl_warn("wmi powermode command failed during suspend: %d\n",
				    ret);
		}

		ar->state = ATH6KL_STATE_DEEPSLEEP;

		break;

You can add a new mode for WOW and call your wow functions from that
function. And you need to make changes to ath6kl_sdio_suspend() so that
it will enable WOW in correct cases. Also I added a state variable
ar->state and hopefully we don't need a separate wow state anymore.

Kalle
--
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 Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux