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
next prev 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).