linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Larry Finger <Larry.Finger@lwfinger.net>
To: Adam Lee <adam.lee@canonical.com>, linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org, stable@kernel.org,
	"John W. Linville" <linville@tuxdriver.com>,
	Chaoming Li <chaoming_li@realsil.com.cn>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH] rtlwifi: add MSI interrupts support
Date: Mon, 24 Mar 2014 10:14:06 -0500	[thread overview]
Message-ID: <53304BBE.6040403@lwfinger.net> (raw)
In-Reply-To: <1395660884-15042-1-git-send-email-adam.lee@canonical.com>

On 03/24/2014 06:34 AM, Adam Lee wrote:
> Add MSI interrupts support, enable it when msi_support flag is true,
> also could fallback to pin-based interrupts mode if MSI mode fails.
>
> Signed-off-by: Adam Lee <adam.lee@canonical.com>

Your first patch turns on MSI support unconditionally. That implies that there 
are no harmful effects for attempting to use MSI on a box where it is not 
needed, and/or not implemented. If that is the case, then the msi_support bool 
should be eliminated, your first patch dropped, and this one revised 
appropriately. Driver rtl8723be added this bool, but never uses it. Once that 
driver reaches mainline, a patch can be prepared to remove the variable.

I think this patch should be applied to stable. Applying it back to 3.10+ should 
be far enough. That will pick up the initial submission of the RTL8188EE driver. 
Boxes that need MSI interrupts are not likely to use any of the older chips.

There are some additional in-line comments below.

> ---
>   drivers/net/wireless/rtlwifi/pci.c | 63 ++++++++++++++++++++++++++++++++++++--
>   1 file changed, 61 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
> index f26f4ff..dd8497a 100644
> --- a/drivers/net/wireless/rtlwifi/pci.c
> +++ b/drivers/net/wireless/rtlwifi/pci.c
> @@ -1853,6 +1853,63 @@ static bool _rtl_pci_find_adapter(struct pci_dev *pdev,
>   	return true;
>   }
>
> +static int rtl_pci_intr_mode_msi(struct ieee80211_hw *hw)
> +{
> +	struct rtl_priv *rtlpriv = rtl_priv(hw);
> +	struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
> +	struct rtl_pci *rtlpci = rtl_pcidev(pcipriv);
> +	int ret;

I like a blank line between the declarations and the code.

> +	ret = pci_enable_msi(rtlpci->pdev);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = request_irq(rtlpci->pdev->irq, &_rtl_pci_interrupt,
> +			  IRQF_SHARED, KBUILD_MODNAME, hw);
> +	if (ret < 0) {
> +		pci_disable_msi(rtlpci->pdev);
> +		return ret;
> +	}
> +
> +	rtlpci->using_msi = true;
> +
> +	RT_TRACE(rtlpriv, COMP_INIT|COMP_INTR, DBG_DMESG,
> +			("MSI Interrupt Mode!\n"));

Doesn't checkpatch.pl complain about the alignment here?

> +	return 0;
> +}
> +
> +static int rtl_pci_intr_mode_legacy(struct ieee80211_hw *hw)
> +{
> +	struct rtl_priv *rtlpriv = rtl_priv(hw);
> +	struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
> +	struct rtl_pci *rtlpci = rtl_pcidev(pcipriv);
> +	int ret;
> +
> +	ret = request_irq(rtlpci->pdev->irq, &_rtl_pci_interrupt,
> +			  IRQF_SHARED, KBUILD_MODNAME, hw);
> +	if (ret < 0)
> +		return ret;
> +
> +	rtlpci->using_msi = false;
> +	RT_TRACE(rtlpriv, COMP_INIT|COMP_INTR, DBG_DMESG,
> +		 ("Pin-based Interrupt Mode!\n"));
> +	return 0;
> +}
> +
> +static int rtl_pci_intr_mode_decide(struct ieee80211_hw *hw)
> +{
> +	struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
> +	struct rtl_pci *rtlpci = rtl_pcidev(pcipriv);
> +	int ret;
> +	if (rtlpci->msi_support == true) {

As discussed above, this test is not needed. If it were, the current version of 
checkpatch.pl complains about the "== true" part.

> +		ret = rtl_pci_intr_mode_msi(hw);
> +		if (ret < 0)
> +			ret = rtl_pci_intr_mode_legacy(hw);
> +	} else {
> +		ret = rtl_pci_intr_mode_legacy(hw);
> +	}
> +	return ret;
> +}
> +
>   int rtl_pci_probe(struct pci_dev *pdev,
>   			    const struct pci_device_id *id)
>   {
> @@ -1995,8 +2052,7 @@ int rtl_pci_probe(struct pci_dev *pdev,
>   	}
>
>   	rtlpci = rtl_pcidev(pcipriv);
> -	err = request_irq(rtlpci->pdev->irq, &_rtl_pci_interrupt,
> -			  IRQF_SHARED, KBUILD_MODNAME, hw);
> +	err = rtl_pci_intr_mode_decide(hw);
>   	if (err) {
>   		RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG,
>   			 "%s: failed to register IRQ handler\n",
> @@ -2064,6 +2120,9 @@ void rtl_pci_disconnect(struct pci_dev *pdev)
>   		rtlpci->irq_alloc = 0;
>   	}
>
> +	if (rtlpci->using_msi == true)

Again "if (rtlpci->using_msi)" is preferred.

> +		pci_disable_msi(rtlpci->pdev);
> +
>   	list_del(&rtlpriv->list);
>   	if (rtlpriv->io.pci_mem_start != 0) {
>   		pci_iounmap(pdev, (void __iomem *)rtlpriv->io.pci_mem_start);
>

When you resubmit, use "[PATCH V2]" in the subject, and use the proper CC stable 
with [3.10+] following the address.

Larry


  parent reply	other threads:[~2014-03-24 15:14 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-24  6:00 [PATCH] rtlwifi: rtl8188ee: enable MSI interrupts support Adam Lee
2014-03-24  6:05 ` Adam Lee
2014-03-24  6:12   ` Greg KH
2014-03-24 11:34 ` [PATCH] rtlwifi: add " Adam Lee
2014-03-24 11:49   ` Adam Lee
2014-03-24 15:14   ` Larry Finger [this message]
2014-03-25  9:13     ` Adam Lee
2014-03-25  2:48   ` [PATCH v2] " Adam Lee
2014-03-27 18:15     ` John W. Linville
2014-03-27 18:45       ` Larry Finger
2014-03-28  3:36     ` [PATCH v3 1/2] rtlwifi: add MSI interrupts mode support Adam Lee
2014-03-28  3:36       ` [PATCH v3 2/2] rtlwifi: rtl8188ee: enable MSI interrupts mode Adam Lee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53304BBE.6040403@lwfinger.net \
    --to=larry.finger@lwfinger.net \
    --cc=adam.lee@canonical.com \
    --cc=chaoming_li@realsil.com.cn \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=netdev@vger.kernel.org \
    --cc=stable@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).