[PATCH] nfc: pn544: mei: constify mei_cl_device_id

2017-08-25 Thread Arvind Yadav
mei_cl_device_id are not supposed to change at runtime.
mei driver is working with const 'id_table'. So mark
the non-const mei_cl_device_id structs as const.

Signed-off-by: Arvind Yadav 
---
 drivers/nfc/pn544/mei.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nfc/pn544/mei.c b/drivers/nfc/pn544/mei.c
index ad57a8e..a6c2e9c 100644
--- a/drivers/nfc/pn544/mei.c
+++ b/drivers/nfc/pn544/mei.c
@@ -66,7 +66,7 @@ static int pn544_mei_remove(struct mei_cl_device *cldev)
return 0;
 }
 
-static struct mei_cl_device_id pn544_mei_tbl[] = {
+static const struct mei_cl_device_id pn544_mei_tbl[] = {
{ PN544_DRIVER_NAME, MEI_NFC_UUID, MEI_CL_VERSION_ANY},
 
/* required last entry */
-- 
2.7.4



[PATCH] nfc: microread: mei: constify mei_cl_device_id

2017-08-25 Thread Arvind Yadav
mei_cl_device_id are not supposed to change at runtime.
mei driver is working with const 'id_table'. So mark
the non-const mei_cl_device_id structs as const.

Signed-off-by: Arvind Yadav 
---
 drivers/nfc/microread/mei.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nfc/microread/mei.c b/drivers/nfc/microread/mei.c
index eb5eddf..70bf7a1 100644
--- a/drivers/nfc/microread/mei.c
+++ b/drivers/nfc/microread/mei.c
@@ -66,7 +66,7 @@ static int microread_mei_remove(struct mei_cl_device *cldev)
return 0;
 }
 
-static struct mei_cl_device_id microread_mei_tbl[] = {
+static const struct mei_cl_device_id microread_mei_tbl[] = {
{ MICROREAD_DRIVER_NAME, MEI_NFC_UUID, MEI_CL_VERSION_ANY},
 
/* required last entry */
-- 
2.7.4



Re: pull-request: wireless-drivers 2017-08-25

2017-08-25 Thread David Miller
From: Kalle Valo 
Date: Fri, 25 Aug 2017 16:37:57 +0300

> here's pull request to net tree for 4.13, more info in the signed
> tag below. Please let me know if there are any problems.

Pulled, thanks Kalle.


Re: rtlwifi handling of sequence numbers with aggregation

2017-08-25 Thread Larry Finger

On 08/25/2017 12:51 PM, Jes Sorensen wrote:

Hi,

Looking at some bits in rtlwifi I came across a discrepancy between the
PCI and USB code.

Consider the following code:

In rtl_pci_tx():
if (ieee80211_is_data_qos(fc)) {
tid = rtl_get_tid(skb);
if (sta) {
sta_entry = (struct rtl_sta_info *)sta->drv_priv;
seq_number = (le16_to_cpu(hdr->seq_ctrl) &
  IEEE80211_SCTL_SEQ) >> 4;
seq_number += 1;

if (!ieee80211_has_morefrags(hdr->frame_control))
sta_entry->tids[tid].seq_number = seq_number;
}

In _rtl_usb_tx_preprocess():
if (ieee80211_is_data_qos(fc)) {
qc = ieee80211_get_qos_ctl(hdr);
tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK;
seq_number = (le16_to_cpu(hdr->seq_ctrl) &
 IEEE80211_SCTL_SEQ) >> 4;
seq_number += 1;
seq_number <<= 4;
}
[snip]
if (!ieee80211_has_morefrags(hdr->frame_control)) {
if (qc)
mac->tids[tid].seq_number = seq_number;
}

The seq_number is picked up from ieee80211_ops->ampdu_action()
which calls into rtl_tx_agg_start():
tid_data = &sta_entry->tids[tid];

RT_TRACE(rtlpriv, COMP_SEND, DBG_DMESG,
 "on ra = %pM tid = %d seq:%d\n", sta->addr, tid,
 tid_data->seq_number);

*ssn = tid_data->seq_number;

My question here is why does the USB code shift seq_number << 4 while
the PCI code doesn't? I assume one of these is wrong, but which one?


Based on my prejudices, I would suspect the USB driver before that of the PCI 
version. I have BCc'd my contact at Realtek to see what he has to say on the issue.


Larry



Re: [PATCH 31/35] wireless: realtek: rtl8187: constify usb_device_id

2017-08-25 Thread Hin-Tak Leung


On Tue, 8/8/17, Arvind Yadav  wrote:

 Subject: [PATCH 31/35] wireless: realtek: rtl8187: constify usb_device_id
 To: kv...@codeaurora.org, her...@canonical.com, ht...@users.sourceforge.net, 
larry.fin...@lwfinger.net
 Cc: linux-ker...@vger.kernel.org, net...@vger.kernel.org, 
linux-wireless@vger.kernel.org
 Date: Tuesday, 8 August, 2017, 17:04
 
> usb_device_id are not supposed to change at
> runtime. All functions
> working with usb_device_id provided by
>  work with
> const usb_device_id. So mark the
> non-const structs as const.
 
> Signed-off-by: Arvind Yadav 
 
Acked-by: ht...@users.sourceforge.net


Re: [PATCH v2] rt2800: fix TX_PIN_CFG setting for non MT7620 chips

2017-08-25 Thread Daniel Golle
On Fri, Aug 25, 2017 at 05:04:15PM +0200, Stanislaw Gruszka wrote:
> Since commit 41977e86c984 ("rt2x00: add support for MT7620") we do not
> initialize TX_PIN_CFG setting. This cause breakage at least on some
> RT3573 devices. To fix the problem patch restores previous behaviour
> for non MT7620 chips.
> 
> Fixes: 41977e86c984 ("rt2x00: add support for MT7620")
> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1480829
> Reported-and-tested-by: Jussi Eloranta 
> Cc: Daniel Golle 
> Signed-off-by: Stanislaw Gruszka 

Acked-by: Daniel Golle 

> ---
> v1 -> v2: patch for updated linux version
> 
>  drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 -
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c 
> b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> index 0b75def39c6c..d2c289446c00 100644
> --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> @@ -3702,7 +3702,10 @@ static void rt2800_config_channel(struct rt2x00_dev 
> *rt2x00dev,
>   if (rt2x00_rt(rt2x00dev, RT3572))
>   rt2800_rfcsr_write(rt2x00dev, 8, 0);
>  
> - tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);
> + if (rt2x00_rt(rt2x00dev, RT6352))
> + tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);
> + else
> + tx_pin = 0;
>  
>   switch (rt2x00dev->default_ant.tx_chain_num) {
>   case 3:
> -- 
> 2.7.5


rtlwifi handling of sequence numbers with aggregation

2017-08-25 Thread Jes Sorensen
Hi,

Looking at some bits in rtlwifi I came across a discrepancy between the
PCI and USB code.

Consider the following code:

In rtl_pci_tx():
if (ieee80211_is_data_qos(fc)) {
tid = rtl_get_tid(skb);
if (sta) {
sta_entry = (struct rtl_sta_info *)sta->drv_priv;
seq_number = (le16_to_cpu(hdr->seq_ctrl) &
  IEEE80211_SCTL_SEQ) >> 4;
seq_number += 1;

if (!ieee80211_has_morefrags(hdr->frame_control))
sta_entry->tids[tid].seq_number = seq_number;
}

In _rtl_usb_tx_preprocess():
if (ieee80211_is_data_qos(fc)) {
qc = ieee80211_get_qos_ctl(hdr);
tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK;
seq_number = (le16_to_cpu(hdr->seq_ctrl) &
 IEEE80211_SCTL_SEQ) >> 4;
seq_number += 1;
seq_number <<= 4;
}
[snip]
if (!ieee80211_has_morefrags(hdr->frame_control)) {
if (qc)
mac->tids[tid].seq_number = seq_number;
}

The seq_number is picked up from ieee80211_ops->ampdu_action()
which calls into rtl_tx_agg_start():
tid_data = &sta_entry->tids[tid];

RT_TRACE(rtlpriv, COMP_SEND, DBG_DMESG,
 "on ra = %pM tid = %d seq:%d\n", sta->addr, tid,
 tid_data->seq_number);

*ssn = tid_data->seq_number;

My question here is why does the USB code shift seq_number << 4 while
the PCI code doesn't? I assume one of these is wrong, but which one?

Jes


Re: [PATCH 2/2] brcmfmac: Use separate firmware for revision 0 of the brcm43430 chip

2017-08-25 Thread Jörg Krause
Hi Hans,

On Fri, 2017-08-25 at 16:03 +0200, Hans de Goede wrote:
> Hi,
> 
> On 25-08-17 15:55, Jörg Krause wrote:
> > Hi,
> > 
> > On Fri, 2017-06-16 at 15:14 +0200, Hans de Goede wrote:
> > > The brcm43430 chip needs different firmware files for chip revision 0
> > > and 1. The file currently in linux-firmware is for revision 1 only.
> > > 
> > > This commit makes brcmfmac request brcmfmac43430a0-sdio.bin instead
> > > of brcmfmac43430-sdio.bin for revision 0 chips.
> > > 
> > > Note that the behavior for revision 1 chips is not changed, ideally those
> > > would load brcmfmac43430a1-sdio.bin, but that will break existing setups.
> > > 
> > > Signed-off-by: Hans de Goede 
> > > ---
> > >   drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 7 +--
> > >   1 file changed, 5 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c 
> > > b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> > > index 4ed40c94bda9..5125aeeb5310 100644
> > > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> > > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> > > @@ -612,7 +612,9 @@ BRCMF_FW_NVRAM_DEF(43340, "brcmfmac43340-sdio.bin", 
> > > "brcmfmac43340-sdio.txt");
> > >   BRCMF_FW_NVRAM_DEF(4335, "brcmfmac4335-sdio.bin", 
> > > "brcmfmac4335-sdio.txt");
> > >   BRCMF_FW_NVRAM_DEF(43362, "brcmfmac43362-sdio.bin", 
> > > "brcmfmac43362-sdio.txt");
> > >   BRCMF_FW_NVRAM_DEF(4339, "brcmfmac4339-sdio.bin", 
> > > "brcmfmac4339-sdio.txt");
> > > -BRCMF_FW_NVRAM_DEF(43430, "brcmfmac43430-sdio.bin", 
> > > "brcmfmac43430-sdio.txt");
> > > +BRCMF_FW_NVRAM_DEF(43430A0, "brcmfmac43430a0-sdio.bin", 
> > > "brcmfmac43430a0-sdio.txt");
> > > +/* Note the names are not postfixed with a1 for backward compatibility */
> > > +BRCMF_FW_NVRAM_DEF(43430A1, "brcmfmac43430-sdio.bin", 
> > > "brcmfmac43430-sdio.txt");
> > >   BRCMF_FW_NVRAM_DEF(43455, "brcmfmac43455-sdio.bin", 
> > > "brcmfmac43455-sdio.txt");
> > >   BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", 
> > > "brcmfmac4354-sdio.txt");
> > >   BRCMF_FW_NVRAM_DEF(4356, "brcmfmac4356-sdio.bin", 
> > > "brcmfmac4356-sdio.txt");
> > > @@ -630,7 +632,8 @@ static struct brcmf_firmware_mapping 
> > > brcmf_sdio_fwnames[] = {
> > >   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4335_CHIP_ID, 0x, 4335),
> > >   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFE, 43362),
> > >   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4339_CHIP_ID, 0x, 4339),
> > > - BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x, 43430),
> > > + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x0001, 43430A0),
> > > + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFE, 43430A1),
> > >   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFC0, 43455),
> > >   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4354_CHIP_ID, 0x, 4354),
> > >   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0x, 4356)
> > 
> > Unfortunately, there is no "brcmfmac43430a0-sdio.bin" in linux-
> > firmware. Therefore, my custom board fails:
> > 
> > # [   24.894241] brcmfmac mmc0:0001:1: Direct firmware load for
> > brcm/brcmfmac43430a0-sdio.bin failed with error -2
> > [   25.914322] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (100):
> > clkctl 0x50
> > [   26.934186] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (100):
> > clkctl 0x50
> > 
> > Can someone provide the firmware file, please?
> 
> I've put all the versions I've been able to find here:
> 
> http://jwrdegoede.danny.cz/brcm-firmware/
> 
> Note that the 7.x.y.z version does not seem to have any useful meaning,
> higher is not necessarily newer :|
> 
> [hans@shalem brcm-firmware]$ for i in brcmfmac43430a0-sdio.bin*; do echo $i 
> && strings $i | tail -n 1; done
> brcmfmac43430a0-sdio.bin.7.10.1.244.ucode940.1020
> 43430a0-roml/sdio-g-pool-p2p-pno-pktfilter-keepalive-aoe-mchan-proptxstatus-lpc-wl11u-rcc-fmc-wepso-ccx-okc-fbt-noccxaka-txpwr-ampduhostreorder-clm_43xx_lg-ndoe
>  Version: 7.10.1.244 CRC: 73c82137 Date: Fri 2016-07-01 18:03:15 KST Ucode 
> Ver: 940.1020 FWID: 01-bae8afee
> brcmfmac43430a0-sdio.bin.7.10.226.49.no_ucode_version
> 43430a0-roml/sdio-g-pool-p2p-pno-pktfilter-keepalive-aoe-mchan-proptxstatus-lpc-wl11u-rcc-fmc-wepso-ccx-okc-fbt-noccxaka-txpwr-ampduhostreorder-clm_43xx_lg
>  Version: 7.10.226.49 CRC: bf92cb0b Date: Fri 2014-06-06 14:55:15 KST FWID 
> 01-8962686a
> brcmfmac43430a0-sdio.bin.7.10.68.5.ucode997.0
> 43430a0-roml/sdio-g-pool-p2p-pno-pktfilter-keepalive-aoe-mchan-proptxstatus-ampduhostreorder-lpc-wl11u-rcc-fmc-wepso-ccx-okc-anqpo-ltecx-sr-ndoe
>  Version: 7.10.68.5 CRC: 5168922 Date: Thu 2015-04-30 04:20:43 PDT Ucode Ver: 
> 997.0 FWID: 01-2bde7d77
> 
> So date wise brcmfmac43430a0-sdio.bin.7.10.1.244.ucode940.1020 is the newest
> and IIRC that one works well for me.
> 
> ucode version wise, brcmfmac43430a0-sdio.bin.7.10.68.5.ucode997.0 is newer,
> but the .0 in 997.0 makes it feel like an unproven release to me.

Re: [PATCH 2/2] brcmfmac: Use separate firmware for revision 0 of the brcm43430 chip

2017-08-25 Thread Jörg Krause
Hi,

On Fri, 2017-06-16 at 15:14 +0200, Hans de Goede wrote:
> The brcm43430 chip needs different firmware files for chip revision 0
> and 1. The file currently in linux-firmware is for revision 1 only.
> 
> This commit makes brcmfmac request brcmfmac43430a0-sdio.bin instead
> of brcmfmac43430-sdio.bin for revision 0 chips.
> 
> Note that the behavior for revision 1 chips is not changed, ideally those
> would load brcmfmac43430a1-sdio.bin, but that will break existing setups.
> 
> Signed-off-by: Hans de Goede 
> ---
>  drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 7 +--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c 
> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> index 4ed40c94bda9..5125aeeb5310 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> @@ -612,7 +612,9 @@ BRCMF_FW_NVRAM_DEF(43340, "brcmfmac43340-sdio.bin", 
> "brcmfmac43340-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(4335, "brcmfmac4335-sdio.bin", "brcmfmac4335-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(43362, "brcmfmac43362-sdio.bin", 
> "brcmfmac43362-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(4339, "brcmfmac4339-sdio.bin", "brcmfmac4339-sdio.txt");
> -BRCMF_FW_NVRAM_DEF(43430, "brcmfmac43430-sdio.bin", 
> "brcmfmac43430-sdio.txt");
> +BRCMF_FW_NVRAM_DEF(43430A0, "brcmfmac43430a0-sdio.bin", 
> "brcmfmac43430a0-sdio.txt");
> +/* Note the names are not postfixed with a1 for backward compatibility */
> +BRCMF_FW_NVRAM_DEF(43430A1, "brcmfmac43430-sdio.bin", 
> "brcmfmac43430-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(43455, "brcmfmac43455-sdio.bin", 
> "brcmfmac43455-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(4356, "brcmfmac4356-sdio.bin", "brcmfmac4356-sdio.txt");
> @@ -630,7 +632,8 @@ static struct brcmf_firmware_mapping brcmf_sdio_fwnames[] 
> = {
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4335_CHIP_ID, 0x, 4335),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFE, 43362),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4339_CHIP_ID, 0x, 4339),
> - BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x, 43430),
> + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x0001, 43430A0),
> + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFE, 43430A1),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFC0, 43455),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4354_CHIP_ID, 0x, 4354),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0x, 4356)

Unfortunately, there is no "brcmfmac43430a0-sdio.bin" in linux-
firmware. Therefore, my custom board fails:

# [   24.894241] brcmfmac mmc0:0001:1: Direct firmware load for
brcm/brcmfmac43430a0-sdio.bin failed with error -2
[   25.914322] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (100):
clkctl 0x50
[   26.934186] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (100):
clkctl 0x50

Can someone provide the firmware file, please?

Best regards,
Jörg Krause


Re: [PATCH 2/2] brcmfmac: Use separate firmware for revision 0 of the brcm43430 chip

2017-08-25 Thread Jörg Krause
Hi,

On Fri, 2017-06-16 at 15:14 +0200, Hans de Goede wrote:
> The brcm43430 chip needs different firmware files for chip revision 0
> and 1. The file currently in linux-firmware is for revision 1 only.
> 
> This commit makes brcmfmac request brcmfmac43430a0-sdio.bin instead
> of brcmfmac43430-sdio.bin for revision 0 chips.
> 
> Note that the behavior for revision 1 chips is not changed, ideally those
> would load brcmfmac43430a1-sdio.bin, but that will break existing setups.
> 
> Signed-off-by: Hans de Goede 
> ---
>  drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 7 +--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c 
> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> index 4ed40c94bda9..5125aeeb5310 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> @@ -612,7 +612,9 @@ BRCMF_FW_NVRAM_DEF(43340, "brcmfmac43340-sdio.bin", 
> "brcmfmac43340-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(4335, "brcmfmac4335-sdio.bin", "brcmfmac4335-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(43362, "brcmfmac43362-sdio.bin", 
> "brcmfmac43362-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(4339, "brcmfmac4339-sdio.bin", "brcmfmac4339-sdio.txt");
> -BRCMF_FW_NVRAM_DEF(43430, "brcmfmac43430-sdio.bin", 
> "brcmfmac43430-sdio.txt");
> +BRCMF_FW_NVRAM_DEF(43430A0, "brcmfmac43430a0-sdio.bin", 
> "brcmfmac43430a0-sdio.txt");
> +/* Note the names are not postfixed with a1 for backward compatibility */
> +BRCMF_FW_NVRAM_DEF(43430A1, "brcmfmac43430-sdio.bin", 
> "brcmfmac43430-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(43455, "brcmfmac43455-sdio.bin", 
> "brcmfmac43455-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");
>  BRCMF_FW_NVRAM_DEF(4356, "brcmfmac4356-sdio.bin", "brcmfmac4356-sdio.txt");
> @@ -630,7 +632,8 @@ static struct brcmf_firmware_mapping brcmf_sdio_fwnames[] 
> = {
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4335_CHIP_ID, 0x, 4335),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFE, 43362),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4339_CHIP_ID, 0x, 4339),
> - BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x, 43430),
> + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x0001, 43430A0),
> + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFE, 43430A1),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFC0, 43455),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4354_CHIP_ID, 0x, 4354),
>   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0x, 4356)

Unfortunately, there is no "brcmfmac43430a0-sdio.bin" in linux-
firmware. Therefore, my custom board fails:

# [   24.894241] brcmfmac mmc0:0001:1: Direct firmware load for
brcm/brcmfmac43430a0-sdio.bin failed with error -2
[   25.914322] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (100):
clkctl 0x50
[   26.934186] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (100):
clkctl 0x50

Can someone provide the firmware file, please?


[PATCH v2] rt2800: fix TX_PIN_CFG setting for non MT7620 chips

2017-08-25 Thread Stanislaw Gruszka
Since commit 41977e86c984 ("rt2x00: add support for MT7620") we do not
initialize TX_PIN_CFG setting. This cause breakage at least on some
RT3573 devices. To fix the problem patch restores previous behaviour
for non MT7620 chips.

Fixes: 41977e86c984 ("rt2x00: add support for MT7620")
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1480829
Reported-and-tested-by: Jussi Eloranta 
Cc: Daniel Golle 
Signed-off-by: Stanislaw Gruszka 
---
v1 -> v2: patch for updated linux version

 drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c 
b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
index 0b75def39c6c..d2c289446c00 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
@@ -3702,7 +3702,10 @@ static void rt2800_config_channel(struct rt2x00_dev 
*rt2x00dev,
if (rt2x00_rt(rt2x00dev, RT3572))
rt2800_rfcsr_write(rt2x00dev, 8, 0);
 
-   tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);
+   if (rt2x00_rt(rt2x00dev, RT6352))
+   tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);
+   else
+   tx_pin = 0;
 
switch (rt2x00dev->default_ant.tx_chain_num) {
case 3:
-- 
2.7.5


Re: [PATCH 2/2] brcmfmac: Use separate firmware for revision 0 of the brcm43430 chip

2017-08-25 Thread Hans de Goede

Hi,

On 25-08-17 16:49, Jörg Krause wrote:




Thanks for the files!

I've tested with brcmfmac43430a0-sdio.bin.7.10.1.244.ucode940.1020 and
brcmfmac is happy:

brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Jul  1 2016
18:02:40 version 7.10.1 (A0 Station/P2P feature) FWID 01-bae8afee

Where did you got the firmware files from?


From various Android x86 images and from:
https://android.googlesource.com/platform/hardware/broadcom/wlan/+/master/bcmdhd/firmware/

Regards,

Hans


Re: [PATCH] rt2800: fix TX_PIN_CFG setting for non MT7620 chips

2017-08-25 Thread Stanislaw Gruszka
On Fri, Aug 25, 2017 at 02:15:08PM +0200, Daniel Golle wrote:
> Hi Stanislaw,
> 
> On Fri, Aug 25, 2017 at 01:38:29PM +0200, Stanislaw Gruszka wrote:
> > Since commit 41977e86c984 ("rt2x00: add support for MT7620") we do not
> > initialize TX_PIN_CFG setting. This cause breakage at least on some
> > RT3573 devices. To fix the problem patch restores previous behaviour
> > for non MT7620 chips.
> > 
> > Fixes: 41977e86c984 ("rt2x00: add support for MT7620")
> > Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1480829
> > Reported-and-tested-by: Jussi Eloranta 
> > Signed-off-by: Stanislaw Gruszka 
> > ---
> >  drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 -
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c 
> > b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> > index d11c7b2..5672aec 100644
> > --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> > +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> > @@ -3699,7 +3699,10 @@ static void rt2800_config_channel(struct rt2x00_dev 
> > *rt2x00dev,
> > if (rt2x00_rt(rt2x00dev, RT3572))
> > rt2800_rfcsr_write(rt2x00dev, 8, 0);
> >  
> > -   rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
> > +   if (rt2x00_rt(rt2x00dev, RT6352))
> > +   rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
> 
> should be
> 
>   tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);
> 
> since the calling convention of rt2800_register_read was changed in
> commit eebd68e782 rt2x00: convert rt2800_register_read return type.
> Probably you based the patch on an outdated tree...?

Yes, is was on 4.12. Will post v2.

Thanks
Stanislaw


[PATCH] rtlwifi: rtl8822be: Add firmware for new driver/device

2017-08-25 Thread Larry Finger
A driver for the RTL8822BE has been added to staging. This commit supplies
the firmware for it.

Signed-off-by: Larry Finger 
---
 WHENCE  |   9 +
 rtlwifi/rtl8822befw.bin | Bin 0 -> 127496 bytes
 2 files changed, 9 insertions(+)
 create mode 100644 rtlwifi/rtl8822befw.bin

diff --git a/WHENCE b/WHENCE
index 00737d5..e062a35 100644
--- a/WHENCE
+++ b/WHENCE
@@ -2423,6 +2423,15 @@ Licence: Redistributable. See 
LICENCE.rtlwifi_firmware.txt for details.
 
 --
 
+Driver: rtl8822be - Realtek 802.11n WLAN driver for RTL8822BE
+
+Info: Sent to Larry Finger by Realtek engineer Ping-Ke Shih 

+File: rtlwifi/rtl8822befw.bin
+
+Licence: Redistributable. See LICENCE.rtlwifi_firmware.txt for details.
+
+--
+
 Driver: rtl8192ee - Realtek 802.11n WLAN driver for RTL8192EE
 
 Info: Initial version taken from Realtek version
diff --git a/rtlwifi/rtl8822befw.bin b/rtlwifi/rtl8822befw.bin
new file mode 100644
index 
..1fcdbeb2dddf300be548f219065746a90b84fa21
GIT binary patch
literal 127496
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

Re: [PATCH 2/2] brcmfmac: Use separate firmware for revision 0 of the brcm43430 chip

2017-08-25 Thread Hans de Goede

Hi,

On 25-08-17 15:55, Jörg Krause wrote:

Hi,

On Fri, 2017-06-16 at 15:14 +0200, Hans de Goede wrote:

The brcm43430 chip needs different firmware files for chip revision 0
and 1. The file currently in linux-firmware is for revision 1 only.

This commit makes brcmfmac request brcmfmac43430a0-sdio.bin instead
of brcmfmac43430-sdio.bin for revision 0 chips.

Note that the behavior for revision 1 chips is not changed, ideally those
would load brcmfmac43430a1-sdio.bin, but that will break existing setups.

Signed-off-by: Hans de Goede 
---
  drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c 
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 4ed40c94bda9..5125aeeb5310 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -612,7 +612,9 @@ BRCMF_FW_NVRAM_DEF(43340, "brcmfmac43340-sdio.bin", 
"brcmfmac43340-sdio.txt");
  BRCMF_FW_NVRAM_DEF(4335, "brcmfmac4335-sdio.bin", "brcmfmac4335-sdio.txt");
  BRCMF_FW_NVRAM_DEF(43362, "brcmfmac43362-sdio.bin", "brcmfmac43362-sdio.txt");
  BRCMF_FW_NVRAM_DEF(4339, "brcmfmac4339-sdio.bin", "brcmfmac4339-sdio.txt");
-BRCMF_FW_NVRAM_DEF(43430, "brcmfmac43430-sdio.bin", "brcmfmac43430-sdio.txt");
+BRCMF_FW_NVRAM_DEF(43430A0, "brcmfmac43430a0-sdio.bin", 
"brcmfmac43430a0-sdio.txt");
+/* Note the names are not postfixed with a1 for backward compatibility */
+BRCMF_FW_NVRAM_DEF(43430A1, "brcmfmac43430-sdio.bin", 
"brcmfmac43430-sdio.txt");
  BRCMF_FW_NVRAM_DEF(43455, "brcmfmac43455-sdio.bin", "brcmfmac43455-sdio.txt");
  BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");
  BRCMF_FW_NVRAM_DEF(4356, "brcmfmac4356-sdio.bin", "brcmfmac4356-sdio.txt");
@@ -630,7 +632,8 @@ static struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = 
{
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4335_CHIP_ID, 0x, 4335),
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFE, 43362),
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4339_CHIP_ID, 0x, 4339),
-   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x, 43430),
+   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x0001, 43430A0),
+   BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFE, 43430A1),
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFC0, 43455),
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4354_CHIP_ID, 0x, 4354),
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0x, 4356)


Unfortunately, there is no "brcmfmac43430a0-sdio.bin" in linux-
firmware. Therefore, my custom board fails:

# [   24.894241] brcmfmac mmc0:0001:1: Direct firmware load for
brcm/brcmfmac43430a0-sdio.bin failed with error -2
[   25.914322] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (100):
clkctl 0x50
[   26.934186] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (100):
clkctl 0x50

Can someone provide the firmware file, please?


I've put all the versions I've been able to find here:

http://jwrdegoede.danny.cz/brcm-firmware/

Note that the 7.x.y.z version does not seem to have any useful meaning,
higher is not necessarily newer :|

[hans@shalem brcm-firmware]$ for i in brcmfmac43430a0-sdio.bin*; do echo $i && 
strings $i | tail -n 1; done
brcmfmac43430a0-sdio.bin.7.10.1.244.ucode940.1020
43430a0-roml/sdio-g-pool-p2p-pno-pktfilter-keepalive-aoe-mchan-proptxstatus-lpc-wl11u-rcc-fmc-wepso-ccx-okc-fbt-noccxaka-txpwr-ampduhostreorder-clm_43xx_lg-ndoe
 Version: 7.10.1.244 CRC: 73c82137 Date: Fri 2016-07-01 18:03:15 KST Ucode Ver: 
940.1020 FWID: 01-bae8afee
brcmfmac43430a0-sdio.bin.7.10.226.49.no_ucode_version
43430a0-roml/sdio-g-pool-p2p-pno-pktfilter-keepalive-aoe-mchan-proptxstatus-lpc-wl11u-rcc-fmc-wepso-ccx-okc-fbt-noccxaka-txpwr-ampduhostreorder-clm_43xx_lg
 Version: 7.10.226.49 CRC: bf92cb0b Date: Fri 2014-06-06 14:55:15 KST FWID 
01-8962686a
brcmfmac43430a0-sdio.bin.7.10.68.5.ucode997.0
43430a0-roml/sdio-g-pool-p2p-pno-pktfilter-keepalive-aoe-mchan-proptxstatus-ampduhostreorder-lpc-wl11u-rcc-fmc-wepso-ccx-okc-anqpo-ltecx-sr-ndoe
 Version: 7.10.68.5 CRC: 5168922 Date: Thu 2015-04-30 04:20:43 PDT Ucode Ver: 
997.0 FWID: 01-2bde7d77

So date wise brcmfmac43430a0-sdio.bin.7.10.1.244.ucode940.1020 is the newest
and IIRC that one works well for me.

ucode version wise, brcmfmac43430a0-sdio.bin.7.10.68.5.ucode997.0 is newer,
but the .0 in 997.0 makes it feel like an unproven release to me.

Regards,

Hans


pull-request: wireless-drivers 2017-08-25

2017-08-25 Thread Kalle Valo
Hi Dave,

here's pull request to net tree for 4.13, more info in the signed tag
below. Please let me know if there are any problems.

Kalle

The following changes since commit e9bf53ab1ee34bb05c104bbfd2b77c844773f8e6:

  brcmfmac: feature check for multi-scheduled scan fails on bcm4343x devices 
(2017-08-14 11:09:30 +0300)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git 
tags/wireless-drivers-for-davem-2017-08-25

for you to fetch changes up to 10a54d8196d11f6cc0db2f71249f93854cb9fe55:

  iwlwifi: pcie: move rx workqueue initialization to iwl_trans_pcie_alloc() 
(2017-08-24 16:49:00 +0300)


wireless-drivers fixes for 4.13

Only one iwlwifi patch this time.

iwlwifi

* fix multiple times reported lockdep warning found by new locking
  annotation introduced in v4.13-rc1


Luca Coelho (1):
  iwlwifi: pcie: move rx workqueue initialization to iwl_trans_pcie_alloc()

 drivers/net/wireless/intel/iwlwifi/pcie/internal.h |  2 ++
 drivers/net/wireless/intel/iwlwifi/pcie/rx.c   | 10 +-
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c|  9 +
 3 files changed, 12 insertions(+), 9 deletions(-)


Re: [PATCH] rt2800: fix TX_PIN_CFG setting for non MT7620 chips

2017-08-25 Thread Daniel Golle
Hi Stanislaw,

On Fri, Aug 25, 2017 at 01:38:29PM +0200, Stanislaw Gruszka wrote:
> Since commit 41977e86c984 ("rt2x00: add support for MT7620") we do not
> initialize TX_PIN_CFG setting. This cause breakage at least on some
> RT3573 devices. To fix the problem patch restores previous behaviour
> for non MT7620 chips.
> 
> Fixes: 41977e86c984 ("rt2x00: add support for MT7620")
> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1480829
> Reported-and-tested-by: Jussi Eloranta 
> Signed-off-by: Stanislaw Gruszka 
> ---
>  drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 -
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c 
> b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> index d11c7b2..5672aec 100644
> --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
> @@ -3699,7 +3699,10 @@ static void rt2800_config_channel(struct rt2x00_dev 
> *rt2x00dev,
>   if (rt2x00_rt(rt2x00dev, RT3572))
>   rt2800_rfcsr_write(rt2x00dev, 8, 0);
>  
> - rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
> + if (rt2x00_rt(rt2x00dev, RT6352))
> + rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);

should be

tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);

since the calling convention of rt2800_register_read was changed in
commit eebd68e782 rt2x00: convert rt2800_register_read return type.
Probably you based the patch on an outdated tree...?


> + else
> + tx_pin = 0;
>  
>   switch (rt2x00dev->default_ant.tx_chain_num) {
>   case 3:
> -- 
> 2.7.5
> 


Submit patches for 4.14 NOW

2017-08-25 Thread Kalle Valo
Hi,

Linus will likely release 4.13-rc7 on Sunday so we are getting very
close for 4.14 merge window. So if there's something you want to have in
4.14 better submit them now or you risk missing the merge window.

-- 
Kalle Valo


[PATCH] rt2800: fix TX_PIN_CFG setting for non MT7620 chips

2017-08-25 Thread Stanislaw Gruszka
Since commit 41977e86c984 ("rt2x00: add support for MT7620") we do not
initialize TX_PIN_CFG setting. This cause breakage at least on some
RT3573 devices. To fix the problem patch restores previous behaviour
for non MT7620 chips.

Fixes: 41977e86c984 ("rt2x00: add support for MT7620")
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1480829
Reported-and-tested-by: Jussi Eloranta 
Signed-off-by: Stanislaw Gruszka 
---
 drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c 
b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
index d11c7b2..5672aec 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
@@ -3699,7 +3699,10 @@ static void rt2800_config_channel(struct rt2x00_dev 
*rt2x00dev,
if (rt2x00_rt(rt2x00dev, RT3572))
rt2800_rfcsr_write(rt2x00dev, 8, 0);
 
-   rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
+   if (rt2x00_rt(rt2x00dev, RT6352))
+   rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
+   else
+   tx_pin = 0;
 
switch (rt2x00dev->default_ant.tx_chain_num) {
case 3:
-- 
2.7.5



[PATCH 1/2] rsi: missing unlocks on error paths

2017-08-25 Thread Dan Carpenter
There is a missing unlock if rsi_find_sta() fails in
rsi_mac80211_ampdu_action() or if we hit the -EINVAL path in
rsi_mac80211_sta_add().

Fixes: 3528608f3a79 ("rsi: handle station connection in AP mode")
Signed-off-by: Dan Carpenter 

diff --git a/drivers/net/wireless/rsi/rsi_91x_mac80211.c 
b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
index 8b983d03f2da..25331aa16e8e 100644
--- a/drivers/net/wireless/rsi/rsi_91x_mac80211.c
+++ b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
@@ -906,7 +906,8 @@ static int rsi_mac80211_ampdu_action(struct ieee80211_hw 
*hw,
rsta = rsi_find_sta(common, sta->addr);
if (!rsta) {
rsi_dbg(ERR_ZONE, "No station mapped\n");
-   return 0;
+   status = 0;
+   goto unlock;
}
sta_id = rsta->sta_id;
}
@@ -974,6 +975,7 @@ static int rsi_mac80211_ampdu_action(struct ieee80211_hw 
*hw,
break;
}
 
+unlock:
mutex_unlock(&common->mutex);
return status;
 }
@@ -1202,6 +1204,7 @@ static int rsi_mac80211_sta_add(struct ieee80211_hw *hw,
struct rsi_common *common = adapter->priv;
bool sta_exist = false;
struct rsi_sta *rsta;
+   int status = 0;
 
rsi_dbg(INFO_ZONE, "Station Add: %pM\n", sta->addr);
 
@@ -1215,8 +1218,8 @@ static int rsi_mac80211_sta_add(struct ieee80211_hw *hw,
/* Check if max stations reached */
if (common->num_stations >= common->max_stations) {
rsi_dbg(ERR_ZONE, "Reject: Max Stations exists\n");
-   mutex_unlock(&common->mutex);
-   return -EOPNOTSUPP;
+   status = -EOPNOTSUPP;
+   goto unlock;
}
for (cnt = 0; cnt < common->max_stations; cnt++) {
rsta = &common->stations[cnt];
@@ -1241,7 +1244,8 @@ static int rsi_mac80211_sta_add(struct ieee80211_hw *hw,
rsi_dbg(ERR_ZONE,
"%s: Some problem reaching here...\n",
__func__);
-   return -EINVAL;
+   status = -EINVAL;
+   goto unlock;
}
rsta = &common->stations[sta_idx];
rsta->sta = sta;
@@ -1289,9 +1293,10 @@ static int rsi_mac80211_sta_add(struct ieee80211_hw *hw,
}
}
 
+unlock:
mutex_unlock(&common->mutex);
 
-   return 0;
+   return status;
 }
 
 /**


[PATCH 2/2] rsi: update some comments

2017-08-25 Thread Dan Carpenter
These functions don't return -1 on failure.

Signed-off-by: Dan Carpenter 

diff --git a/drivers/net/wireless/rsi/rsi_91x_mac80211.c 
b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
index 25331aa16e8e..e78e87e99804 100644
--- a/drivers/net/wireless/rsi/rsi_91x_mac80211.c
+++ b/drivers/net/wireless/rsi/rsi_91x_mac80211.c
@@ -754,7 +754,7 @@ static int rsi_mac80211_conf_tx(struct ieee80211_hw *hw,
  * @vif: Pointer to the ieee80211_vif structure.
  * @key: Pointer to the ieee80211_key_conf structure.
  *
- * Return: status: 0 on success, -1 on failure.
+ * Return: status: 0 on success, negative error codes on failure.
  */
 static int rsi_hal_key_config(struct ieee80211_hw *hw,
  struct ieee80211_vif *vif,
@@ -1194,7 +1194,7 @@ static void rsi_set_min_rate(struct ieee80211_hw *hw,
  * @vif: Pointer to the ieee80211_vif structure.
  * @sta: Pointer to the ieee80211_sta structure.
  *
- * Return: 0 on success, -1 on failure.
+ * Return: 0 on success, negative error codes on failure.
  */
 static int rsi_mac80211_sta_add(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
@@ -1306,7 +1306,7 @@ static int rsi_mac80211_sta_add(struct ieee80211_hw *hw,
  * @vif: Pointer to the ieee80211_vif structure.
  * @sta: Pointer to the ieee80211_sta structure.
  *
- * Return: 0 on success, -1 on failure.
+ * Return: 0 on success, negative error codes on failure.
  */
 static int rsi_mac80211_sta_remove(struct ieee80211_hw *hw,
   struct ieee80211_vif *vif,
@@ -1426,7 +1426,7 @@ static int rsi_mac80211_set_antenna(struct ieee80211_hw 
*hw,
  * @tx_ant: Bitmap for tx antenna
  * @rx_ant: Bitmap for rx antenna
  * 
- * Return: 0 on success, -1 on failure.
+ * Return: 0 on success, negative error codes on failure.
  */
 static int rsi_mac80211_get_antenna(struct ieee80211_hw *hw,
u32 *tx_ant, u32 *rx_ant)
@@ -1533,7 +1533,7 @@ static struct ieee80211_ops mac80211_ops = {
  * rsi_mac80211_attach() - This function is used to initialize Mac80211 stack.
  * @common: Pointer to the driver private structure.
  *
- * Return: 0 on success, -1 on failure.
+ * Return: 0 on success, negative error codes on failure.
  */
 int rsi_mac80211_attach(struct rsi_common *common)
 {


[PATCH 0/2] iwlwifi: updates intended for v4.14 2017-08-25

2017-08-25 Thread Luca Coelho
From: Luca Coelho 

Hi,

A very tiny set of patches for v4.14. :) Nothing is backlogged in our
internal tree anymore and this has been a very slow week due to
vacations in our team.

These are the changes:

* Fix a queue hang problem due to 11w behavior
* Fix a warning caused by a too long debug print

As usual, I'm pushing this to a pending branch, for kbuild bot, and
will send a pull-request later.

Please review.

Cheers,
Luca.


David Spinadel (1):
  iwlwifi: mvm: Avoid deffering non bufferable frames

Liad Kaufman (1):
  iwlwifi: fix long debug print

 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c | 9 +++--
 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c  | 9 +
 2 files changed, 12 insertions(+), 6 deletions(-)

-- 
2.14.1



[PATCH 2/2] iwlwifi: mvm: Avoid deffering non bufferable frames

2017-08-25 Thread Luca Coelho
From: David Spinadel 

Use bcast station for all non bufferable frames on AP and AD-HOC.

The host is no longer aware of STAs PS status because of buffer
station offload, so we can't rely on mac80211 to toggle on
IEEE80211_TX_CTL_NO_PS_BUFFER bit.

A possible issue with buffering such frames, beside the obvious spec
violation, is when a station disconnects while in PS but the AP isn't
aware of that. In such scenarios the AP won't be able to send probe
responses or auth frames so the STA won't be able to reconnect and
the AP will have a queue hang.

Fixes: 3e56eadfb6a1 ("iwlwifi: mvm: implement AP/GO uAPSD support")
Signed-off-by: David Spinadel 
Signed-off-by: Luca Coelho 
---
 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c 
b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
index d7feb1ab4dc9..15f2d826bb4b 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
@@ -810,10 +810,11 @@ static void iwl_mvm_mac_tx(struct ieee80211_hw *hw,
!test_bit(IWL_MVM_STATUS_ROC_AUX_RUNNING, &mvm->status))
goto drop;
 
-   /* treat non-bufferable MMPDUs as broadcast if sta is sleeping */
-   if (unlikely(info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER &&
-ieee80211_is_mgmt(hdr->frame_control) &&
-!ieee80211_is_bufferable_mmpdu(hdr->frame_control)))
+   /* treat non-bufferable MMPDUs on AP interfaces as broadcast */
+   if ((info->control.vif->type == NL80211_IFTYPE_AP ||
+info->control.vif->type == NL80211_IFTYPE_ADHOC) &&
+   ieee80211_is_mgmt(hdr->frame_control) &&
+   !ieee80211_is_bufferable_mmpdu(hdr->frame_control))
sta = NULL;
 
if (sta) {
-- 
2.14.1



[PATCH 1/2] iwlwifi: fix long debug print

2017-08-25 Thread Luca Coelho
From: Liad Kaufman 

There is a debug print that sometimes reaches over
110 chars, thus generating a warning in those cases.
Split the print into two to prevent these cases.

Fixes: 92b0f7b26b31 ("iwlwifi: split the regulatory rules when the bandwidth 
flags require it")
Signed-off-by: Liad Kaufman 
Signed-off-by: Luca Coelho 
---
 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c 
b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
index b46796944cf2..3014beef4873 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
@@ -915,7 +915,7 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct 
iwl_cfg *cfg,
prev_reg_rule_flags = reg_rule_flags;
 
IWL_DEBUG_DEV(dev, IWL_DL_LAR,
- "Ch. %d [%sGHz] %s%s%s%s%s%s%s%s%s%s%s%s(0x%02x) 
reg_flags 0x%x: %s\n",
+ "Ch. %d [%sGHz] 
%s%s%s%s%s%s%s%s%s%s%s%s(0x%02x)\n",
  center_freq,
  band == NL80211_BAND_5GHZ ? "5.2" : "2.4",
  CHECK_AND_PRINT_I(VALID),
@@ -930,7 +930,12 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct 
iwl_cfg *cfg,
  CHECK_AND_PRINT_I(80MHZ),
  CHECK_AND_PRINT_I(160MHZ),
  CHECK_AND_PRINT_I(DC_HIGH),
- ch_flags, reg_rule_flags,
+ ch_flags);
+   IWL_DEBUG_DEV(dev, IWL_DL_LAR,
+ "Ch. %d [%sGHz] reg_flags 0x%x: %s\n",
+ center_freq,
+ band == NL80211_BAND_5GHZ ? "5.2" : "2.4",
+ reg_rule_flags,
  ((ch_flags & NVM_CHANNEL_ACTIVE) &&
   !(ch_flags & NVM_CHANNEL_RADAR))
 ? "Ad-Hoc" : "");
-- 
2.14.1



[PATCH] mac80211: Complete ampdu work schedule during session tear down

2017-08-25 Thread Luca Coelho
From: Ilan Peer 

Commit 7a7c0a6438b8 ("mac80211: fix TX aggregation start/stop callback race")
added a cancellation of the ampdu work after the loop that stopped the
Tx and Rx BA sessions. However, in some cases, e.g., during HW reconfig,
the low level driver might call mac80211 APIs to complete the stopping
of the BA sessions, which would queue the ampdu work to handle the actual
completion. This work needs to be performed as otherwise mac80211 data
structures would not be properly synced.

Fix this by checking if BA session STOP_CB bit is set after the BA session
cancellation and properly clean the session.

Fixes: 7a7c0a6438b8 ("mac80211: fix TX aggregation start/stop callback race")
Signed-off-by: Ilan Peer 
Signed-off-by: Luca Coelho 
---
 net/mac80211/ht.c | 15 +++
 1 file changed, 15 insertions(+)

diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c
index c92df492e898..105e2802a48a 100644
--- a/net/mac80211/ht.c
+++ b/net/mac80211/ht.c
@@ -300,6 +300,21 @@ void ieee80211_sta_tear_down_BA_sessions(struct sta_info 
*sta,
 
/* stopping might queue the work again - so cancel only afterwards */
cancel_work_sync(&sta->ampdu_mlme.work);
+
+   /* In case the tear down is part of a reconfigure due to HW restart
+* request, it is possible that the low level driver requested to stop
+* the BA session, so handle it to properly clean tid_tx data.
+*/
+   for (i = 0; i < IEEE80211_NUM_TIDS; i++) {
+   struct tid_ampdu_tx *tid_tx =
+   rcu_dereference_protected_tid_tx(sta, i);
+
+   if (!tid_tx)
+   continue;
+
+   if (test_and_clear_bit(HT_AGG_STATE_STOP_CB, &tid_tx->state))
+   ieee80211_stop_tx_ba_cb(sta, i, tid_tx);
+   }
 }
 
 void ieee80211_ba_session_work(struct work_struct *work)
-- 
2.14.1