Message ID | 20160502053754.GA30313@udknight |
---|---|
State | Awaiting Upstream, archived |
Delegated to: | David Miller |
Headers | show |
On 05/02/2016 12:37 AM, Wang YanQing wrote: > Commit a269913c52ad37952a4d9953bb6d748f7299c304 > ("rtlwifi: Rework rtl_lps_leave() and rtl_lps_enter() to use work queue") > make a mistake, change the meaning of num_tx|rx_inperiod comparison test. > > Commit fd09ff958777cf583d7541f180991c0fc50bd2f7 > ("rtlwifi: Remove extra workqueue for enter/leave power state") > follow previous mistake, bring us to current code. > > This patch fix it. > > Signed-off-by: Wang YanQing <udknight@gmail.com> > --- > I think this patch should be ported back to stable kernels, 3.10+. > In my machine, I will lost wifi connection after minutes if I enable > fwlps. > > drivers/net/wireless/realtek/rtlwifi/base.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c > index c74eb13..264466f 100644 > --- a/drivers/net/wireless/realtek/rtlwifi/base.c > +++ b/drivers/net/wireless/realtek/rtlwifi/base.c > @@ -1660,9 +1660,9 @@ void rtl_watchdog_wq_callback(void *data) > if (((rtlpriv->link_info.num_rx_inperiod + > rtlpriv->link_info.num_tx_inperiod) > 8) || > (rtlpriv->link_info.num_rx_inperiod > 2)) > - rtl_lps_enter(hw); > - else > rtl_lps_leave(hw); > + else > + rtl_lps_enter(hw); > } > > rtlpriv->link_info.num_rx_inperiod = 0; > NACK This patch is correct. There is a logic error in entering/exiting power-save mode. Thus the code part is OK; however, the subject and commit message need to be improved. If I had prepared this patch, my subject would have been "rtlwifi: Fix logic error in enter/exit power-save mode". For the commit message, I would have used the following: In commit fd09ff958777 ("rtlwifi: Remove extra workqueue for enter/leave power state"), the tests for enter/exit power-save mode were inverted. With this change applied, the wifi connection becomes much more stable. Fixes: fd09ff958777 ("rtlwifi: Remove extra workqueue for enter/leave power state") Signed-off-by: Wang YanQing <udknight@gmail.com> CC: Stable <stable@vger.kernel.org> [3.10+] --- Thanks for finding this problem. Larry
diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c index c74eb13..264466f 100644 --- a/drivers/net/wireless/realtek/rtlwifi/base.c +++ b/drivers/net/wireless/realtek/rtlwifi/base.c @@ -1660,9 +1660,9 @@ void rtl_watchdog_wq_callback(void *data) if (((rtlpriv->link_info.num_rx_inperiod + rtlpriv->link_info.num_tx_inperiod) > 8) || (rtlpriv->link_info.num_rx_inperiod > 2)) - rtl_lps_enter(hw); - else rtl_lps_leave(hw); + else + rtl_lps_enter(hw); } rtlpriv->link_info.num_rx_inperiod = 0;
Commit a269913c52ad37952a4d9953bb6d748f7299c304 ("rtlwifi: Rework rtl_lps_leave() and rtl_lps_enter() to use work queue") make a mistake, change the meaning of num_tx|rx_inperiod comparison test. Commit fd09ff958777cf583d7541f180991c0fc50bd2f7 ("rtlwifi: Remove extra workqueue for enter/leave power state") follow previous mistake, bring us to current code. This patch fix it. Signed-off-by: Wang YanQing <udknight@gmail.com> --- I think this patch should be ported back to stable kernels, 3.10+. In my machine, I will lost wifi connection after minutes if I enable fwlps. drivers/net/wireless/realtek/rtlwifi/base.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)