From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx1.redhat.com ([209.132.183.28]:22583 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758859AbZKEVhF (ORCPT ); Thu, 5 Nov 2009 16:37:05 -0500 Subject: Re: [PATCH] Libertas: Fix issues while configuring host sleep From: Dan Williams To: Bing Zhao Cc: libertas-dev@lists.infradead.org, Amitkumar Karwar , linux-wireless@vger.kernel.org In-Reply-To: <1257383195-951-1-git-send-email-bzhao@marvell.com> References: <1257383195-951-1-git-send-email-bzhao@marvell.com> Content-Type: text/plain Date: Thu, 05 Nov 2009 13:36:51 -0800 Message-Id: <1257457011.16377.7.camel@localhost.localdomain> Mime-Version: 1.0 Sender: linux-wireless-owner@vger.kernel.org List-ID: On Wed, 2009-11-04 at 17:06 -0800, Bing Zhao wrote: > From: Amitkumar Karwar > > Configuration of wake-on-lan for unicast, multicast, broadcast, physical > activity was not working. Kernel panic issue was there when user tries to > disable WOL. Fixed them. > > Signed-off-by: Amitkumar Karwar > Signed-off-by: Bing Zhao Acked-by: Dan Williams > --- > drivers/net/wireless/libertas/ethtool.c | 16 +++++++++++----- > 1 files changed, 11 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/wireless/libertas/ethtool.c b/drivers/net/wireless/libertas/ethtool.c > index 039b555..eeda6d7 100644 > --- a/drivers/net/wireless/libertas/ethtool.c > +++ b/drivers/net/wireless/libertas/ethtool.c > @@ -169,16 +169,22 @@ static int lbs_ethtool_set_wol(struct net_device *dev, > struct lbs_private *priv = dev->ml_priv; > uint32_t criteria = 0; > > - if (priv->wol_criteria == 0xffffffff && wol->wolopts) > + if (priv->wol_criteria != 0xffffffff && wol->wolopts) > return -EOPNOTSUPP; > > if (wol->wolopts & ~(WAKE_UCAST|WAKE_MCAST|WAKE_BCAST|WAKE_PHY)) > return -EOPNOTSUPP; > > - if (wol->wolopts & WAKE_UCAST) criteria |= EHS_WAKE_ON_UNICAST_DATA; > - if (wol->wolopts & WAKE_MCAST) criteria |= EHS_WAKE_ON_MULTICAST_DATA; > - if (wol->wolopts & WAKE_BCAST) criteria |= EHS_WAKE_ON_BROADCAST_DATA; > - if (wol->wolopts & WAKE_PHY) criteria |= EHS_WAKE_ON_MAC_EVENT; > + if (wol->wolopts & WAKE_UCAST) > + criteria |= EHS_WAKE_ON_UNICAST_DATA; > + if (wol->wolopts & WAKE_MCAST) > + criteria |= EHS_WAKE_ON_MULTICAST_DATA; > + if (wol->wolopts & WAKE_BCAST) > + criteria |= EHS_WAKE_ON_BROADCAST_DATA; > + if (wol->wolopts & WAKE_PHY) > + criteria |= EHS_WAKE_ON_MAC_EVENT; > + if (wol->wolopts == 0) > + criteria |= EHS_REMOVE_WAKEUP; > > return lbs_host_sleep_cfg(priv, criteria, (struct wol_config *)NULL); > }