Re: whitespace error in some of commits

2016-02-15 Thread Tony Cho

Hi Janani,
Please refer to the commit numbers again in the wilc1000 driver:
c611d48e65e25af2dc0176e9ac135116095ed03d
24c6c29d85af3748b2d79b46f72188b335566340

Thanks,
Tony.

On 2016년 02월 16일 15:47, Tony Cho wrote:

Hi Janani,

I can find the whitespace errors in your commits which is already 
accepted in staging-testing branch.


The commit number is c611d48e65e25af2dc0176e9ac135116095ed03d and 
c611d48e65e25af2dc0176e9ac135116095ed03d.


I don't know why I couldn't find your patch emails from the community. 
Please cc the linux-wireless and devel.


Would you fix these patch or I can make it if you don't mind.


Thanks,

Tony.




--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


whitespace error in some of commits

2016-02-15 Thread Tony Cho

Hi Janani,

I can find the whitespace errors in your commits which is already accepted in 
staging-testing branch.

The commit number is c611d48e65e25af2dc0176e9ac135116095ed03d and 
c611d48e65e25af2dc0176e9ac135116095ed03d.

I don't know why I couldn't find your patch emails from the community. Please 
cc the linux-wireless and devel.

Would you fix these patch or I can make it if you don't mind.


Thanks,

Tony.


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] rt2x00: unterminated strlen of user data

2016-02-15 Thread Souptick Joarder
On Tue, Feb 16, 2016 at 12:34 AM, Alan  wrote:
> The buffer needs to be zero terminated in case the user data is not.
> Otherwise we run off the end of the buffer.
>
> Signed-off-by: Alan Cox 
> ---
>  drivers/net/wireless/ralink/rt2x00/rt2x00debug.c |5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c 
> b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
> index 25ee3cb..72ae530 100644
> --- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
> +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
> @@ -478,7 +478,7 @@ static ssize_t rt2x00debug_write_##__name(struct file 
> *file,\
>  {  \
> struct rt2x00debug_intf *intf = file->private_data; \
> const struct rt2x00debug *debug = intf->debug;  \
> -   char line[16];  \
> +   char line[17];  \
> size_t size;\
> unsigned int index = intf->offset_##__name; \
> __type value;   \
> @@ -494,7 +494,8 @@ static ssize_t rt2x00debug_write_##__name(struct file 
> *file,\
> \
> if (copy_from_user(line, buf, length))  \
> return -EFAULT; \
> -   \
> +   line[16] = 0;

line[length] = '\0';
correct me if I am wrong.  \
> +   \
> size = strlen(line);\
> value = simple_strtoul(line, NULL, 0);  \
> \
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-Souptick
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] rtlwifi: Change long delays to sleeps

2016-02-15 Thread Souptick Joarder
On Tue, Feb 16, 2016 at 3:42 AM, Larry Finger  wrote:
> Routine rtl_addr_delay() uses delay statements in code that can
> sleep. To improve system responsiveness, the various delay statements
> are changed.
>
> In addition, routines rtl_rfreg_delay() and rtl_bb_delay() are
> rewritten to use the code in rtl_addr_delay() for most of their
> input values.
>
> Suggested-by: Byeoungwook Kim 
> Signed-off-by: Larry Finger 
> ---
>
> Kalle,
>
> This patch will interfere with a set of 3 patches submitted by Byeoungwook Kim
>  on Feb. 3, 2016 that are currently in the deferred list
> at patchwork.
>
> Larry
>
>  drivers/net/wireless/realtek/rtlwifi/core.c | 44 
> -
>  1 file changed, 12 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c 
> b/drivers/net/wireless/realtek/rtlwifi/core.c
> index 02eba0e..16ad0d6 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/core.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/core.c
> @@ -54,59 +54,39 @@ EXPORT_SYMBOL(channel5g_80m);
>  void rtl_addr_delay(u32 addr)
>  {
> if (addr == 0xfe)
> -   mdelay(50);
> +   msleep(50);
> else if (addr == 0xfd)
> -   mdelay(5);
> +   msleep(5);
> else if (addr == 0xfc)
> -   mdelay(1);
> +   msleep(1);
> else if (addr == 0xfb)
> -   udelay(50);
> +   usleep_range(50, 100);
> else if (addr == 0xfa)
> -   udelay(5);
> +   usleep_range(5, 10);
> else if (addr == 0xf9)
> -   udelay(1);
> +   usleep_range(1, 2);

 why udelay is replaced by usleep_range?
>  }
>  EXPORT_SYMBOL(rtl_addr_delay);
>
>  void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 
> addr,
>  u32 mask, u32 data)
>  {
> -   if (addr == 0xfe) {
> -   mdelay(50);
> -   } else if (addr == 0xfd) {
> -   mdelay(5);
> -   } else if (addr == 0xfc) {
> -   mdelay(1);
> -   } else if (addr == 0xfb) {
> -   udelay(50);
> -   } else if (addr == 0xfa) {
> -   udelay(5);
> -   } else if (addr == 0xf9) {
> -   udelay(1);
> +   if (addr >= 0xf9 && addr <= 0xfe) {
> +   rtl_addr_delay(addr);
> } else {
> rtl_set_rfreg(hw, rfpath, addr, mask, data);
> -   udelay(1);
> +   usleep_range(1, 2);
> }
>  }
>  EXPORT_SYMBOL(rtl_rfreg_delay);
>
>  void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data)
>  {
> -   if (addr == 0xfe) {
> -   mdelay(50);
> -   } else if (addr == 0xfd) {
> -   mdelay(5);
> -   } else if (addr == 0xfc) {
> -   mdelay(1);
> -   } else if (addr == 0xfb) {
> -   udelay(50);
> -   } else if (addr == 0xfa) {
> -   udelay(5);
> -   } else if (addr == 0xf9) {
> -   udelay(1);
> +   if (addr >= 0xf9 && addr <= 0xfe) {
> +   rtl_addr_delay(addr);
> } else {
> rtl_set_bbreg(hw, addr, MASKDWORD, data);
> -   udelay(1);
> +   usleep_range(1, 2);
> }
>  }
>  EXPORT_SYMBOL(rtl_bb_delay);
> --
> 2.1.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-Souptick
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] mwifiex: Added missing spaces around brackets

2016-02-15 Thread Souptick Joarder
Looks fine.

On Thu, Feb 11, 2016 at 12:17 PM, Ujjal Roy  wrote:
> This patch fixes the missing spaces issue in coding style.
>
> Signed-off-by: Ujjal Roy 
> ---
>  drivers/net/wireless/marvell/mwifiex/usb.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/usb.c 
> b/drivers/net/wireless/marvell/mwifiex/usb.c
> index e43aff9..0510861 100644
> --- a/drivers/net/wireless/marvell/mwifiex/usb.c
> +++ b/drivers/net/wireless/marvell/mwifiex/usb.c
> @@ -244,9 +244,9 @@ setup_for_next:
> if (card->rx_cmd_ep == context->ep) {
> mwifiex_usb_submit_rx_urb(context, size);
> } else {
> -   if (atomic_read(>rx_pending) <= HIGH_RX_PENDING){
> +   if (atomic_read(>rx_pending) <= HIGH_RX_PENDING) {
> mwifiex_usb_submit_rx_urb(context, size);
> -   }else{
> +   } else {
> context->skb = NULL;
> }
> }
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-Souptick
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Google Summer of Code 2016 - Backup organization administrator needed

2016-02-15 Thread Till Kamppeter

Hi,

I am applying for the Linux Foundation as mentoring organization for the 
Google Summer of Code 2016.


I need a backup administrator (a second org admin) to complete the 
application and he needs to confirm before the deadline on Friday.


Note that usually the role as backup admin will not cause any work for 
you, especially as I could find another backup admin after the deadline, 
but it would be great if you can jump in on my behalf here and there 
when I am not available for some reason.


So if you are willing to take this role, please tell me. I will then 
invite you through Google's application form and you will get an e-mail 
from Google with instructions how to accept the invitation. Please be 
ready to receive that mail then and to follow the instructions.


   Till

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Google Summer of Code 2016 - Project ideas page for the Linux Foundation online

2016-02-15 Thread Till Kamppeter

Hi,

I have set up a page for project ideas for the Linux Foundation's
participation in the Google Summer of Code 2016:

https://www.linuxfoundation.org/collaborate/workgroups/gsoc/google-summer-code-2016

Please add your ideas to the sub-page of your work group. If you have
problems mail me with your project idea.

Please also take into account that the deadline for our application as 
mentoring organization is Feb 19 (Friday this week) and after that 
Google will evaluate the applications. So have your ideas (at least most 
of them, ideas can be posted up to the student application deadline) in 
by then to raise our chances to get accepted.


   Till

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] staging: wilc1000: remove wilc1000_spi_ops as it is not used

2016-02-15 Thread Greg Kroah-Hartman
On Mon, Feb 15, 2016 at 03:18:27PM +, Colin King wrote:
> From: Colin Ian King 
> 
> building with gcc 6 I hit a build failure:
> 
>   CC  drivers/staging/wilc1000/wilc_spi.o
> drivers/staging/wilc1000/wilc_spi.c:123:34: error: storage size of
>  ‘wilc1000_spi_ops’ isn’t known
>  static const struct wilc1000_ops wilc1000_spi_ops;
>   ^~~~
> drivers/staging/wilc1000/wilc_spi.c:123:34: warning: ‘wilc1000_spi_ops’
>   defined but not used [-Wunused-const-variable]
> 
> Since wilc1000_spi_ops is not used, remove it and the driver builds.
> 
> Signed-off-by: Colin Ian King 
> ---
>  drivers/staging/wilc1000/wilc_spi.c | 2 --
>  1 file changed, 2 deletions(-)

Doesn't apply to my tree at all, are you sure you are using linux-next
for this?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] mwifiex: Added missing spaces around brackets

2016-02-15 Thread Julian Calaby
Hi All,

On Thu, Feb 11, 2016 at 5:47 PM, Ujjal Roy  wrote:
> This patch fixes the missing spaces issue in coding style.
>
> Signed-off-by: Ujjal Roy 

Looks right to me.

Reviewed-by: Julian Calaby 

Thanks,

> ---
>  drivers/net/wireless/marvell/mwifiex/usb.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/usb.c 
> b/drivers/net/wireless/marvell/mwifiex/usb.c
> index e43aff9..0510861 100644
> --- a/drivers/net/wireless/marvell/mwifiex/usb.c
> +++ b/drivers/net/wireless/marvell/mwifiex/usb.c
> @@ -244,9 +244,9 @@ setup_for_next:
> if (card->rx_cmd_ep == context->ep) {
> mwifiex_usb_submit_rx_urb(context, size);
> } else {
> -   if (atomic_read(>rx_pending) <= HIGH_RX_PENDING){
> +   if (atomic_read(>rx_pending) <= HIGH_RX_PENDING) {
> mwifiex_usb_submit_rx_urb(context, size);
> -   }else{
> +   } else {
> context->skb = NULL;
> }
> }
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Julian Calaby

Email: julian.cal...@gmail.com
Profile: http://www.google.com/profiles/julian.calaby/
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] mwifiex: Fixed incorrect indentation issue

2016-02-15 Thread Julian Calaby
Hi All,

On Thu, Feb 11, 2016 at 5:47 PM, Ujjal Roy  wrote:
> This patch fixes the incorrect indentation of the case label.
>
> Signed-off-by: Ujjal Roy 

Looks right to me.

Reviewed-by: Julian Calaby 

Thanks,

> ---
>  drivers/net/wireless/marvell/mwifiex/cfg80211.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c 
> b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> index e7adef7..cb0cf03 100644
> --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> @@ -676,7 +676,7 @@ mwifiex_cfg80211_set_wiphy_params(struct wiphy *wiphy, 
> u32 changed)
> }
> break;
>
> -   case MWIFIEX_BSS_ROLE_STA:
> +   case MWIFIEX_BSS_ROLE_STA:
> if (priv->media_connected) {
> mwifiex_dbg(adapter, ERROR,
> "cannot change wiphy params when 
> connected");
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Julian Calaby

Email: julian.cal...@gmail.com
Profile: http://www.google.com/profiles/julian.calaby/
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] mwifiex: Removed extra spaces before commas

2016-02-15 Thread Julian Calaby
Hi All,

On Thu, Feb 11, 2016 at 5:47 PM, Ujjal Roy  wrote:
> This patch fixes spaces before commas issue in coding style.
>
> Signed-off-by: Ujjal Roy 

Looks right to me.

Reviewed-by: Julian Calaby 

Thanks,

> ---
>  drivers/net/wireless/marvell/mwifiex/pcie.c| 2 +-
>  drivers/net/wireless/marvell/mwifiex/uap_cmd.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c 
> b/drivers/net/wireless/marvell/mwifiex/pcie.c
> index 6d0dc40..4d29cce 100644
> --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
> +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
> @@ -1408,7 +1408,7 @@ mwifiex_pcie_send_boot_cmd(struct mwifiex_adapter 
> *adapter, struct sk_buff *skb)
> return -1;
> }
>
> -   if (mwifiex_map_pci_memory(adapter, skb, skb->len , PCI_DMA_TODEVICE))
> +   if (mwifiex_map_pci_memory(adapter, skb, skb->len, PCI_DMA_TODEVICE))
> return -1;
>
> buf_pa = MWIFIEX_SKB_DMA_ADDR(skb);
> diff --git a/drivers/net/wireless/marvell/mwifiex/uap_cmd.c 
> b/drivers/net/wireless/marvell/mwifiex/uap_cmd.c
> index e791166..16d95b2 100644
> --- a/drivers/net/wireless/marvell/mwifiex/uap_cmd.c
> +++ b/drivers/net/wireless/marvell/mwifiex/uap_cmd.c
> @@ -192,7 +192,7 @@ mwifiex_set_ht_params(struct mwifiex_private *priv,
> }
> priv->ap_11n_enabled = 1;
> } else {
> -   memset(_cfg->ht_cap , 0, sizeof(struct ieee80211_ht_cap));
> +   memset(_cfg->ht_cap, 0, sizeof(struct ieee80211_ht_cap));
> bss_cfg->ht_cap.cap_info = cpu_to_le16(MWIFIEX_DEF_HT_CAP);
> bss_cfg->ht_cap.ampdu_params_info = MWIFIEX_DEF_AMPDU;
> }
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Julian Calaby

Email: julian.cal...@gmail.com
Profile: http://www.google.com/profiles/julian.calaby/
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


mwifiex driver unstable on MS Surface Pro 4

2016-02-15 Thread Mikael Djurfeldt
Dear list,

I'm experiencing problems with the mwifiex_pcie driver on MS Surface
Pro 4 (with the 88W8897 chip).

The symtom is that the driver only works for a few minutes during
which various error messages is shown in syslog after which the device
becomes unavailable.

I've tried a bunch of kernels from 4.3 and upwards.

I'm attaching an example syslog (filtered for mwifiex) during a run
under the 4.5.0-rc4 kernel.

I should add that I have power management on the device (as displayed
by, e.g., iwconfig) switched off in an attempt to delimit causes of
failure.

Best regards,
Mikael D.
Feb 15 22:35:54 hat kernel: [3.183579] mwifiex_pcie :02:00.0: enabling device ( -> 0002)
Feb 15 22:35:54 hat kernel: [3.183592] mwifiex_pcie: try set_consistent_dma_mask(32)
Feb 15 22:35:54 hat kernel: [3.183617] mwifiex_pcie: PCI memory map Virt0: c90001e0 PCI memory map Virt2: c9000200
Feb 15 22:35:54 hat kernel: [3.183652] mwifiex: rx work enabled, cpus 8
Feb 15 22:35:54 hat kernel: [4.211923] mwifiex_pcie :02:00.0: info: FW download over, size 803884 bytes
Feb 15 22:35:55 hat kernel: [4.422396] Modules linked in: hid_sensor_gyro_3d hid_sensor_als hid_sensor_rotation hid_sensor_accel_3d hid_sensor_trigger hid_sensor_iio_common industrialio_triggered_buffer kfifo_buf industrialio hid_sensor_hub hid_generic joydev usbhid i2c_designware_platform i2c_designware_core tpm_crb snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel sha256_ssse3 sha256_generic hmac drbg ansi_cprng nls_utf8 aesni_intel nls_cp437 aes_x86_64 lrw gf128mul glue_helper vfat ablk_helper cryptd fat efi_pstore pcspkr efivars mwifiex_pcie mwifiex cfg80211 rfkill snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_timer snd soundcore i2c_i801 shpchp mei_me mei i915 drm_kms_helper intel_lpss_pci drm i2c_algo_bit soc_button_array evdev ac battery video intel_lpss_acpi intel_lpss mfd_core tpm_tis tpm acpi_pad cdc_ether button processor usbnet mii parport_pc ppdev lp parport efivarfs autofs4 ext4 crc16 mbcache jbd2 dm_mod hid_multitouch crc32c_intel xhci_pci xhci_hcd usbcore usb_common i2c_hid hid thermal
Feb 15 22:35:55 hat kernel: [5.249980] mwifiex_pcie :02:00.0: WLAN FW is active
Feb 15 22:35:55 hat kernel: [5.389445] mwifiex_pcie :02:00.0: info: MWIFIEX VERSION: mwifiex 1.0 (15.68.7.p53) 
Feb 15 22:35:55 hat kernel: [5.389456] mwifiex_pcie :02:00.0: driver_version = mwifiex 1.0 (15.68.7.p53) 
Feb 15 22:35:55 hat NetworkManager[696]:   (mlan0): new 802.11 WiFi device (carrier: UNKNOWN, driver: 'mwifiex_pcie', ifindex: 3)
Feb 15 22:35:55 hat NetworkManager[696]:   rfkill1: found WiFi radio killswitch (at /sys/devices/pci:00/:00:1d.0/:02:00.0/ieee80211/phy0/rfkill1) (driver mwifiex_pcie)
Feb 15 22:35:55 hat kernel: [5.399733] mwifiex_pcie :02:00.0 wlp2s0: renamed from mlan0
Feb 15 22:35:57 hat kernel: [6.874067] mwifiex_pcie :02:00.0: info: trying to associate to 'mamaliga' bssid 00:24:01:e2:6d:fd
Feb 15 22:35:57 hat kernel: [6.937521] mwifiex_pcie :02:00.0: info: associated to bssid 00:24:01:e2:6d:fd successfully
Feb 15 22:35:57 hat kernel: [7.535826] Modules linked in: rfcomm bnep btusb btrtl btbcm btintel bluetooth pci_stub vboxpci(O) vboxnetadp(O) vboxnetflt(O) binfmt_misc vboxdrv(O) hid_sensor_gyro_3d hid_sensor_als hid_sensor_rotation hid_sensor_accel_3d hid_sensor_trigger hid_sensor_iio_common industrialio_triggered_buffer kfifo_buf industrialio hid_sensor_hub hid_generic joydev usbhid i2c_designware_platform i2c_designware_core tpm_crb snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel sha256_ssse3 sha256_generic hmac drbg ansi_cprng nls_utf8 aesni_intel nls_cp437 aes_x86_64 lrw gf128mul glue_helper vfat ablk_helper cryptd fat efi_pstore pcspkr efivars mwifiex_pcie mwifiex cfg80211 rfkill snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_timer snd soundcore i2c_i801 shpchp mei_me mei i915 drm_kms_helper intel_lpss_pci drm i2c_algo_bit soc_button_array evdev ac battery video intel_lpss_acpi intel_lpss mfd_core tpm_tis tpm acpi_pad cdc_ether button processor usbnet mii parport_pc ppdev lp parport efivarfs autofs4 ext4 crc16 mbcache jbd2 dm_mod hid_multitouch crc32c_intel xhci_pci xhci_hcd usbcore usb_common i2c_hid hid thermal
Feb 15 22:35:59 hat kernel: [8.585888] Modules linked in: rfcomm bnep btusb btrtl btbcm btintel bluetooth pci_stub vboxpci(O) vboxnetadp(O) vboxnetflt(O) binfmt_misc vboxdrv(O) hid_sensor_gyro_3d hid_sensor_als hid_sensor_rotation hid_sensor_accel_3d hid_sensor_trigger hid_sensor_iio_common industrialio_triggered_buffer kfifo_buf industrialio hid_sensor_hub hid_generic joydev usbhid i2c_designware_platform 

[PATCH] rtlwifi: Change long delays to sleeps

2016-02-15 Thread Larry Finger
Routine rtl_addr_delay() uses delay statements in code that can
sleep. To improve system responsiveness, the various delay statements
are changed.

In addition, routines rtl_rfreg_delay() and rtl_bb_delay() are
rewritten to use the code in rtl_addr_delay() for most of their
input values.

Suggested-by: Byeoungwook Kim 
Signed-off-by: Larry Finger 
---

Kalle,

This patch will interfere with a set of 3 patches submitted by Byeoungwook Kim
 on Feb. 3, 2016 that are currently in the deferred list
at patchwork.

Larry

 drivers/net/wireless/realtek/rtlwifi/core.c | 44 -
 1 file changed, 12 insertions(+), 32 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c 
b/drivers/net/wireless/realtek/rtlwifi/core.c
index 02eba0e..16ad0d6 100644
--- a/drivers/net/wireless/realtek/rtlwifi/core.c
+++ b/drivers/net/wireless/realtek/rtlwifi/core.c
@@ -54,59 +54,39 @@ EXPORT_SYMBOL(channel5g_80m);
 void rtl_addr_delay(u32 addr)
 {
if (addr == 0xfe)
-   mdelay(50);
+   msleep(50);
else if (addr == 0xfd)
-   mdelay(5);
+   msleep(5);
else if (addr == 0xfc)
-   mdelay(1);
+   msleep(1);
else if (addr == 0xfb)
-   udelay(50);
+   usleep_range(50, 100);
else if (addr == 0xfa)
-   udelay(5);
+   usleep_range(5, 10);
else if (addr == 0xf9)
-   udelay(1);
+   usleep_range(1, 2);
 }
 EXPORT_SYMBOL(rtl_addr_delay);
 
 void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 addr,
 u32 mask, u32 data)
 {
-   if (addr == 0xfe) {
-   mdelay(50);
-   } else if (addr == 0xfd) {
-   mdelay(5);
-   } else if (addr == 0xfc) {
-   mdelay(1);
-   } else if (addr == 0xfb) {
-   udelay(50);
-   } else if (addr == 0xfa) {
-   udelay(5);
-   } else if (addr == 0xf9) {
-   udelay(1);
+   if (addr >= 0xf9 && addr <= 0xfe) {
+   rtl_addr_delay(addr);
} else {
rtl_set_rfreg(hw, rfpath, addr, mask, data);
-   udelay(1);
+   usleep_range(1, 2);
}
 }
 EXPORT_SYMBOL(rtl_rfreg_delay);
 
 void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data)
 {
-   if (addr == 0xfe) {
-   mdelay(50);
-   } else if (addr == 0xfd) {
-   mdelay(5);
-   } else if (addr == 0xfc) {
-   mdelay(1);
-   } else if (addr == 0xfb) {
-   udelay(50);
-   } else if (addr == 0xfa) {
-   udelay(5);
-   } else if (addr == 0xf9) {
-   udelay(1);
+   if (addr >= 0xf9 && addr <= 0xfe) {
+   rtl_addr_delay(addr);
} else {
rtl_set_bbreg(hw, addr, MASKDWORD, data);
-   udelay(1);
+   usleep_range(1, 2);
}
 }
 EXPORT_SYMBOL(rtl_bb_delay);
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] rt2x00: unterminated strlen of user data

2016-02-15 Thread Alan
The buffer needs to be zero terminated in case the user data is not.
Otherwise we run off the end of the buffer.

Signed-off-by: Alan Cox 
---
 drivers/net/wireless/ralink/rt2x00/rt2x00debug.c |5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c 
b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
index 25ee3cb..72ae530 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
@@ -478,7 +478,7 @@ static ssize_t rt2x00debug_write_##__name(struct file 
*file,\
 {  \
struct rt2x00debug_intf *intf = file->private_data; \
const struct rt2x00debug *debug = intf->debug;  \
-   char line[16];  \
+   char line[17];  \
size_t size;\
unsigned int index = intf->offset_##__name; \
__type value;   \
@@ -494,7 +494,8 @@ static ssize_t rt2x00debug_write_##__name(struct file 
*file,\
\
if (copy_from_user(line, buf, length))  \
return -EFAULT; \
-   \
+   line[16] = 0;   \
+   \
size = strlen(line);\
value = simple_strtoul(line, NULL, 0);  \
\

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 3/3] staging: rtl8723au: whitespace and blank line cleaning

2016-02-15 Thread Jes Sorensen
Julian Calaby  writes:
> Hi Geliang,
>
> On Sun, Feb 7, 2016 at 2:30 PM, Geliang Tang  wrote:
>> This patch cleans whitespaces and blank lines surrounding
>> list_for_each_entry*().
>
> It does a lot more than this, including:
>  - Removing some unnecessary brackets
>  - Whitespace changes well away from the list_for_each_entry*() calls
>
> You need to either specify all of these in the changelog or split it
> up into multiple patches.
>
> Thanks,
>
> Julian Calaby

I agree, I think a more descriptive patch message will suffice here.

Jes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 2/3] staging: rtl8723au: core: rtw_recv: remove useless codes

2016-02-15 Thread Jes Sorensen
Geliang Tang  writes:
> There are some useless codes in rtw_free_recvframe23a_queue() and
> recvframe_defrag(), so remove them.
>
> Signed-off-by: Geliang Tang 
> ---
> Changes in v3:
>  - split it into three patches.
> Changes in v2:
>  - drop the coding style fixing in v1.
> ---
>  drivers/staging/rtl8723au/core/rtw_recv.c | 7 +--
>  1 file changed, 1 insertion(+), 6 deletions(-)

I assume this requires patch 1/3 applied first?

Acked-by: Jes Sorensen 

>
> diff --git a/drivers/staging/rtl8723au/core/rtw_recv.c 
> b/drivers/staging/rtl8723au/core/rtw_recv.c
> index 18b7d03..b36bc6b 100644
> --- a/drivers/staging/rtl8723au/core/rtw_recv.c
> +++ b/drivers/staging/rtl8723au/core/rtw_recv.c
> @@ -201,7 +201,6 @@ static void rtw_free_recvframe23a_queue(struct rtw_queue 
> *pframequeue)
>   spin_lock(>lock);
>  
>   phead = get_list_head(pframequeue);
> - plist = phead->next;
>  
>   list_for_each_entry_safe(hdr, ptmp, phead, list) {
>   rtw_free_recvframe23a(hdr);
> @@ -1567,7 +1566,7 @@ struct recv_frame *recvframe_defrag(struct rtw_adapter 
> *adapter,
>   struct rtw_queue *defrag_q)
>  {
>   struct list_head *plist, *phead;
> - u8  *data, wlanhdr_offset;
> + u8  wlanhdr_offset;
>   u8  curfragnum;
>   struct recv_frame *pnfhdr, *ptmp;
>   struct recv_frame *prframe, *pnextrframe;
> @@ -1596,10 +1595,6 @@ struct recv_frame *recvframe_defrag(struct rtw_adapter 
> *adapter,
>  
>   curfragnum++;
>  
> - phead = get_list_head(defrag_q);
> -
> - data = prframe->pkt->data;
> -
>   list_for_each_entry_safe(pnfhdr, ptmp, phead, list) {
>   pnextrframe = (struct recv_frame *)pnfhdr;
>   /* check the fragment sequence  (2nd ~n fragment frame) */
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 1/3] staging: rtl8723au: use list_for_each_entry*()

2016-02-15 Thread Jes Sorensen
Geliang Tang  writes:
> Use list_for_each_entry*() instead of list_for_each*() to simplify
> the code.
>
> Signed-off-by: Geliang Tang 
> ---
> Changes in v3:
>  - split it into three patches.
> Changes in v2:
>  - drop the coding style fixing in v1.
> ---
>  drivers/staging/rtl8723au/core/rtw_ap.c   | 55 ---
>  drivers/staging/rtl8723au/core/rtw_mlme.c | 26 -
>  drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 10 ++--
>  drivers/staging/rtl8723au/core/rtw_recv.c | 22 
>  drivers/staging/rtl8723au/core/rtw_sta_mgt.c  | 25 -
>  drivers/staging/rtl8723au/core/rtw_xmit.c | 64 
> ++-
>  drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 14 +++--
>  drivers/staging/rtl8723au/os_dep/usb_ops_linux.c  |  9 ++--
>  8 files changed, 96 insertions(+), 129 deletions(-)

This one is mostly OK, however when you do multi patch sets, always
include a cover letter describing the overall changes of the set.

A few nit picks:

> diff --git a/drivers/staging/rtl8723au/core/rtw_recv.c 
> b/drivers/staging/rtl8723au/core/rtw_recv.c
> index 404b618..18b7d03 100644
> --- a/drivers/staging/rtl8723au/core/rtw_recv.c
> +++ b/drivers/staging/rtl8723au/core/rtw_recv.c
> @@ -88,13 +88,13 @@ int _rtw_init_recv_priv23a(struct recv_priv *precvpriv,
>  void _rtw_free_recv_priv23a (struct recv_priv *precvpriv)
>  {
>   struct rtw_adapter *padapter = precvpriv->adapter;
> - struct recv_frame *precvframe;
> - struct list_head *plist, *ptmp;
> + struct recv_frame *precvframe, *ptmp;
>  
>   rtw_free_uc_swdec_pending_queue23a(padapter);
>  
> - list_for_each_safe(plist, ptmp, >free_recv_queue.queue) {
> - precvframe = container_of(plist, struct recv_frame, list);
> + list_for_each_entry_safe(precvframe, ptmp,
> +  >free_recv_queue.queue,
> +  list) {
>   list_del_init(>list);
>   kfree(precvframe);
>   }

Too aggressive line breaking, the 'list' fits within 80 characters on
the line above.

> @@ -195,16 +195,15 @@ using spinlock to protect
>  
>  static void rtw_free_recvframe23a_queue(struct rtw_queue *pframequeue)
>  {
> - struct recv_frame *hdr;
> - struct list_head *plist, *phead, *ptmp;
> + struct recv_frame *hdr, *ptmp;
> + struct list_head *phead;
>  
>   spin_lock(>lock);
>  
>   phead = get_list_head(pframequeue);
>   plist = phead->next;
>  
> - list_for_each_safe(plist, ptmp, phead) {
> - hdr = container_of(plist, struct recv_frame, list);
> + list_for_each_entry_safe(hdr, ptmp, phead, list) {
>   rtw_free_recvframe23a(hdr);
>   }
>  

You could remove the brackets here, since you are fixing that specific
line. I am fine with this as is, some of the checkpatch police force
might bite over it.

On overall this patch is a lot better than the first version.

All set and done, I am thinking of removing this driver once Kalle pulls
in my currently posted set of changes for rtl8xxxu, plus the next one I
have lined up. I seems to me rtl8xxxu can replace rtl8723au at this
point.

I will probably mark rtl8723au deprecated after 4.6 comes out, and
remove the driver around 4.7.

Cheers,
Jes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] staging: wilc1000: remove wilc1000_spi_ops as it is not used

2016-02-15 Thread Colin King
From: Colin Ian King 

building with gcc 6 I hit a build failure:

  CC  drivers/staging/wilc1000/wilc_spi.o
drivers/staging/wilc1000/wilc_spi.c:123:34: error: storage size of
 ‘wilc1000_spi_ops’ isn’t known
 static const struct wilc1000_ops wilc1000_spi_ops;
  ^~~~
drivers/staging/wilc1000/wilc_spi.c:123:34: warning: ‘wilc1000_spi_ops’
  defined but not used [-Wunused-const-variable]

Since wilc1000_spi_ops is not used, remove it and the driver builds.

Signed-off-by: Colin Ian King 
---
 drivers/staging/wilc1000/wilc_spi.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/staging/wilc1000/wilc_spi.c 
b/drivers/staging/wilc1000/wilc_spi.c
index 86de50c..b3d6541 100644
--- a/drivers/staging/wilc1000/wilc_spi.c
+++ b/drivers/staging/wilc1000/wilc_spi.c
@@ -120,8 +120,6 @@ static u8 crc7(u8 crc, const u8 *buffer, u32 len)
 
 #define USE_SPI_DMA 0
 
-static const struct wilc1000_ops wilc1000_spi_ops;
-
 static int wilc_bus_probe(struct spi_device *spi)
 {
int ret, gpio;
-- 
2.7.0

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/3] brcmfmac: add support for nl80211 BSS_SELECT feature

2016-02-15 Thread Arend van Spriel
Announce support for nl80211 feature BSS_SELECT and process
BSS selection behaviour provided in .connect() callback.

Reviewed-by: Hante Meuleman 
Reviewed-by: Franky (Zhenhui) Lin 
Reviewed-by: Pieter-Paul Giesberts 
Reviewed-by: Lei Zhang 
Signed-off-by: Arend van Spriel 
---
 .../broadcom/brcm80211/brcmfmac/cfg80211.c | 66 +-
 .../wireless/broadcom/brcm80211/brcmfmac/common.c  | 38 -
 .../wireless/broadcom/brcm80211/brcmfmac/core.h|  1 +
 3 files changed, 87 insertions(+), 18 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c 
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 7b01e4d..92b8423 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -238,6 +238,20 @@ struct parsed_vndr_ies {
struct parsed_vndr_ie_info ie_info[VNDR_IE_PARSE_LIMIT];
 };
 
+static u8 nl80211_band_to_fwil(enum nl80211_band band)
+{
+   switch (band) {
+   case NL80211_BAND_2GHZ:
+   return WLC_BAND_2G;
+   case NL80211_BAND_5GHZ:
+   return WLC_BAND_5G;
+   default:
+   WARN_ON(1);
+   break;
+   }
+   return 0;
+}
+
 static u16 chandef_to_chanspec(struct brcmu_d11inf *d11inf,
   struct cfg80211_chan_def *ch)
 {
@@ -1737,6 +1751,46 @@ enum nl80211_auth_type brcmf_war_auth_type(struct 
brcmf_if *ifp,
return type;
 }
 
+static void brcmf_set_join_pref(struct brcmf_if *ifp,
+   struct cfg80211_bss_selection *bss_select)
+{
+   struct brcmf_join_pref_params join_pref_params[2];
+   enum nl80211_band band;
+   int err, i = 0;
+
+   join_pref_params[i].len = 2;
+   join_pref_params[i].rssi_gain = 0;
+   switch (bss_select->behaviour) {
+   case __NL80211_BSS_SELECT_ATTR_INVALID:
+   brcmf_c_set_joinpref_default(ifp);
+   return;
+   case NL80211_BSS_SELECT_ATTR_BAND_PREF:
+   join_pref_params[i].type = BRCMF_JOIN_PREF_BAND;
+   band = bss_select->param.band_pref;
+   join_pref_params[i].band = nl80211_band_to_fwil(band);
+   i++;
+   break;
+   case NL80211_BSS_SELECT_ATTR_RSSI_ADJUST:
+   join_pref_params[i].type = BRCMF_JOIN_PREF_RSSI_DELTA;
+   band = bss_select->param.adjust.band;
+   join_pref_params[i].band = nl80211_band_to_fwil(band);
+   join_pref_params[i].rssi_gain = bss_select->param.adjust.delta;
+   i++;
+   break;
+   case NL80211_BSS_SELECT_ATTR_RSSI:
+   default:
+   break;
+   }
+   join_pref_params[i].type = BRCMF_JOIN_PREF_RSSI;
+   join_pref_params[i].len = 2;
+   join_pref_params[i].rssi_gain = 0;
+   join_pref_params[i].band = 0;
+   err = brcmf_fil_iovar_data_set(ifp, "join_pref", join_pref_params,
+  sizeof(join_pref_params));
+   if (err)
+   brcmf_err("Set join_pref error (%d)\n", err);
+}
+
 static s32
 brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
   struct cfg80211_connect_params *sme)
@@ -1862,11 +1916,11 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct 
net_device *ndev,
ext_join_params->scan_le.scan_type = -1;
ext_join_params->scan_le.home_time = cpu_to_le32(-1);
 
-   if (sme->bssid)
+   if (sme->bssid) {
memcpy(_join_params->assoc_le.bssid, sme->bssid, ETH_ALEN);
-   else
+   } else {
eth_broadcast_addr(ext_join_params->assoc_le.bssid);
-
+   }
if (cfg->channel) {
ext_join_params->assoc_le.chanspec_num = cpu_to_le32(1);
 
@@ -1893,6 +1947,8 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct 
net_device *ndev,
ext_join_params->scan_le.nprobes = cpu_to_le32(-1);
}
 
+   brcmf_set_join_pref(ifp, >bss_select);
+
err  = brcmf_fil_bsscfg_data_set(ifp, "join", ext_join_params,
 join_params_size);
kfree(ext_join_params);
@@ -6179,6 +6235,10 @@ static int brcmf_setup_wiphy(struct wiphy *wiphy, struct 
brcmf_if *ifp)
wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
wiphy->cipher_suites = __wl_cipher_suites;
wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites);
+   wiphy->bss_select_support = BIT(NL80211_BSS_SELECT_ATTR_RSSI) |
+   BIT(NL80211_BSS_SELECT_ATTR_BAND_PREF) |
+   BIT(NL80211_BSS_SELECT_ATTR_RSSI_ADJUST);
+
wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT |
WIPHY_FLAG_OFFCHAN_TX |
WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
diff 

[PATCH V5 0/3] nl80211: allow configuration of BSS selection

2016-02-15 Thread Arend van Spriel
This patch series adds support for configuration of BSS selection done by
the driver and/or firmware. It allows user-space to pass selection behaviour
with the NL80211_CMD_CONNECT using NL80211_ATTR_BSS_SELECT. When user-space
does provide this attribute and no explicit BSSID is provided it will pass
the BSS selection behaviour to the driver if the driver supports it.

When multiple BSS-es are found belonging to the same ESS, ie. Infra-BSS with
same SSID, this can be used to select a BSS. The behaviours defined are:

1. RSSI based selection.
2. Band selection, RSSI based selection.
3. RSSI adjustment in given band, RSSI based selection.

The third patch addresses an issue observed during testing so
not really related to the feature. This series is intended for
v4.6 and applies to master branch of the mac80211-next repository.

V2:
 - incorporate comments from Johannes Berg (may have missed some).
 - split nl80211 patch in two separate patches.

V3:
 - remove enum nl80211_bss_select_primitive.
 - reword documentation of nl80211_bss_select_attr enum values.

V4:
 - remove documentation reference to removed primitive.

V5:
 - validate only one behaviour is passed from user-space.
 - use packed struct for RSS_ADJUST attribute.
 - validate user-space provided band value against wiphy->bands.

Arend van Spriel (2):
  nl80211: add feature for BSS selection support
  brcmfmac: add support for nl80211 BSS_SELECT feature
  cfg80211: stop critical protocol session upon disconnect event

 .../broadcom/brcm80211/brcmfmac/cfg80211.c |  66 +-
 .../wireless/broadcom/brcm80211/brcmfmac/common.c  |  38 +---
 .../wireless/broadcom/brcm80211/brcmfmac/core.h|   1 +
 include/net/cfg80211.h |  34 +++
 include/uapi/linux/nl80211.h   |  52 +++
 net/wireless/core.c|   4 +
 net/wireless/nl80211.c | 101 +
 net/wireless/sme.c |   6 ++
 8 files changed, 284 insertions(+), 18 deletions(-)

-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/3] cfg80211: stop critical protocol session upon disconnect event

2016-02-15 Thread Arend van Spriel
When user-space has started a critical protocol session and a disconnect
event occurs, the rdev::crit_prot_nlportid remains set. This caused a
subsequent NL80211_CMD_CRIT_PROTO_START to fail (-EBUSY). Fix this by
clearing the rdev attribute and call .crit_proto_stop() callback upon
disconnect event.

Reviewed-by: Hante Meuleman 
Reviewed-by: Pieter-Paul Giesberts 
Signed-off-by: Arend van Spriel 
---
 net/wireless/sme.c | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/net/wireless/sme.c b/net/wireless/sme.c
index 79bd3a1..5445581 100644
--- a/net/wireless/sme.c
+++ b/net/wireless/sme.c
@@ -917,6 +917,12 @@ void __cfg80211_disconnected(struct net_device *dev, const 
u8 *ie,
 
nl80211_send_disconnected(rdev, dev, reason, ie, ie_len, from_ap);
 
+   /* stop critical protocol if supported */
+   if (rdev->ops->crit_proto_stop && rdev->crit_proto_nlportid) {
+   rdev->crit_proto_nlportid = 0;
+   rdev_crit_proto_stop(rdev, wdev);
+   }
+
/*
 * Delete all the keys ... pairwise keys can't really
 * exist any more anyway, but default keys might.
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/3] nl80211: add feature for BSS selection support

2016-02-15 Thread Arend van Spriel
Introducing a new feature that the driver can use to
indicate the driver/firmware supports configuration of BSS
selection criteria upon CONNECT command. This can be useful
when multiple BSS-es are found belonging to the same ESS,
ie. Infra-BSS with same SSID. The criteria can then be used to
offload selection of a preferred BSS.

Reviewed-by: Hante Meuleman 
Reviewed-by: Franky (Zhenhui) Lin 
Reviewed-by: Pieter-Paul Giesberts 
Reviewed-by: Lei Zhang 
Signed-off-by: Arend van Spriel 
---
 include/net/cfg80211.h   |  34 +++
 include/uapi/linux/nl80211.h |  52 ++
 net/wireless/core.c  |   4 ++
 net/wireless/nl80211.c   | 101 +++
 4 files changed, 191 insertions(+)

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 9e1b24c..1dfb890 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1857,6 +1857,33 @@ struct cfg80211_ibss_params {
 };
 
 /**
+ * struct cfg80211_bss_select_adjust - BSS selection with RSSI adjustment.
+ *
+ * @band: band of BSS which should match for RSSI level adjustment.
+ * @delta: value of RSSI level adjustment.
+ */
+struct cfg80211_bss_select_adjust {
+   enum nl80211_band band;
+   s8 delta;
+};
+
+/**
+ * struct cfg80211_bss_selection - connection parameters for BSS selection.
+ *
+ * @behaviour: requested BSS selection behaviour.
+ * @param: parameters for requestion behaviour.
+ * @band_pref: preferred band for %NL80211_BSS_SELECT_ATTR_BAND_PREF.
+ * @adjust: parameters for %NL80211_BSS_SELECT_ATTR_RSSI_ADJUST.
+ */
+struct cfg80211_bss_selection {
+   enum nl80211_bss_select_attr behaviour;
+   union {
+   enum nl80211_band band_pref;
+   struct cfg80211_bss_select_adjust adjust;
+   } param;
+};
+
+/**
  * struct cfg80211_connect_params - Connection parameters
  *
  * This structure provides information needed to complete IEEE 802.11
@@ -1893,6 +1920,7 @@ struct cfg80211_ibss_params {
  * @vht_capa_mask: The bits of vht_capa which are to be used.
  * @pbss: if set, connect to a PCP instead of AP. Valid for DMG
  * networks.
+ * @bss_select: criteria to be used for BSS selection.
  */
 struct cfg80211_connect_params {
struct ieee80211_channel *channel;
@@ -1916,6 +1944,7 @@ struct cfg80211_connect_params {
struct ieee80211_vht_cap vht_capa;
struct ieee80211_vht_cap vht_capa_mask;
bool pbss;
+   struct cfg80211_bss_selection bss_select;
 };
 
 /**
@@ -3184,6 +3213,9 @@ struct wiphy_vendor_command {
  * low rssi when a frame is heard on different channel, then it should set
  * this variable to the maximal offset for which it can compensate.
  * This value should be set in MHz.
+ * @bss_select_support: bitmask indicating the BSS selection criteria supported
+ * by the driver in the .connect() callback. The bit position maps to the
+ * attribute indices defined in  nl80211_bss_select_attr.
  */
 struct wiphy {
/* assign these fields before you register the wiphy */
@@ -3306,6 +3338,8 @@ struct wiphy {
u8 max_num_csa_counters;
u8 max_adj_channel_rssi_comp;
 
+   u32 bss_select_support;
+
char priv[0] __aligned(NETDEV_ALIGN);
 };
 
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 7758969..1f25fbf5 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1793,6 +1793,12 @@ enum nl80211_commands {
  * in a PBSS. Specified in %NL80211_CMD_CONNECT to request
  * connecting to a PCP, and in %NL80211_CMD_START_AP to start
  * a PCP instead of AP. Relevant for DMG networks only.
+ * @NL80211_ATTR_BSS_SELECT: nested attribute for driver supporting the
+ * BSS selection feature. When used with %NL80211_CMD_GET_WIPHY it contains
+ * NLA_FLAG type according  nl80211_bss_select_attr to indicate what
+ * BSS selection behaviours are supported. When used with 
%NL80211_CMD_CONNECT
+ * it contains the behaviour and parameters for BSS selection to be done by
+ * driver and/or firmware.
  *
  * @NUM_NL80211_ATTR: total number of nl80211_attrs available
  * @NL80211_ATTR_MAX: highest attribute number currently defined
@@ -2169,6 +2175,7 @@ enum nl80211_attrs {
NL80211_ATTR_SCHED_SCAN_PLANS,
 
NL80211_ATTR_PBSS,
+   NL80211_ATTR_BSS_SELECT,
 
/* add attributes here, update the policy in nl80211.c */
 
@@ -3617,6 +3624,7 @@ enum nl80211_band {
NL80211_BAND_2GHZ,
NL80211_BAND_5GHZ,
NL80211_BAND_60GHZ,
+   NUM_NL80211_BAND,
 };
 
 /**
@@ -4657,4 +4665,48 @@ enum nl80211_sched_scan_plan {
__NL80211_SCHED_SCAN_PLAN_AFTER_LAST - 1
 };
 
+/**
+ * struct nl80211_bss_select_rssi_adjust - RSSI adjustment parameters.
+ *
+ * @band: band of BSS that must match for RSSI value adjustment.
+ * @delta: 

[PATCH 5/5] iwlwifi: pcie: fix erroneous return value

2016-02-15 Thread Emmanuel Grumbach
From: Anton Protopopov 

The iwl_trans_pcie_start_fw() function may return the positive value EIO
instead of -EIO in case of error.

Signed-off-by: Anton Protopopov 
Signed-off-by: Emmanuel Grumbach 
---
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c 
b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
index 5503072..5a854c6 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
@@ -1168,7 +1168,7 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans 
*trans,
if (trans_pcie->is_down) {
IWL_WARN(trans,
 "Can't start_fw since the HW hasn't been started\n");
-   ret = EIO;
+   ret = -EIO;
goto out;
}
 
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/5] iwlwifi: pcie: fix RF-Kill vs. firmware load race

2016-02-15 Thread Emmanuel Grumbach
When we load the firmware, we hold trans_pcie->mutex to
avoid nested flows. We also rely on the ISR to wake up the
thread when the DMA has finished copying a chunk. During
this flow, we enable the RF-Kill interrupt.

The problem is that the RF-Kill interrupt handler can take
the mutex and bring the device down. This means that if
we load the firmware while the RF-Kill switch is enabled
(which will happen when we load the INIT firmware to read
the device's capabilities and register to mac80211), we
may get an RF-Kill interrupt immediately and the ISR will
be waiting for the mutex held by the thread that is
currently loading the firmware. At this stage, the ISR
won't be able to service the DMA's interrupt needed to
wake up the thread that load the firmware. We are in a
deadlock situation which ends when the thread that loads
the firmware fails on timeout and releases the mutex.

To fix this, take the mutex later in the flow, disable
the interrupts and synchronize_irq() to give a chance to
the RF-Kill interrupt to run and complete.
After that, mask all the interrupts besides the DMA
interrupt and proceed with firmware load. Make sure to
check that there was no RF-Kill interrupt when the
interrupts were disabled.

This fixes https://bugzilla.kernel.org/show_bug.cgi?id=111361

Signed-off-by: Emmanuel Grumbach 
---
 drivers/net/wireless/intel/iwlwifi/pcie/internal.h |   9 +
 drivers/net/wireless/intel/iwlwifi/pcie/rx.c   |   8 +-
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c| 188 -
 3 files changed, 123 insertions(+), 82 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h 
b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
index cc3888e..73c9559 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
@@ -490,6 +490,15 @@ static inline void iwl_enable_interrupts(struct iwl_trans 
*trans)
iwl_write32(trans, CSR_INT_MASK, trans_pcie->inta_mask);
 }
 
+static inline void iwl_enable_fw_load_int(struct iwl_trans *trans)
+{
+   struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
+
+   IWL_DEBUG_ISR(trans, "Enabling FW load interrupt\n");
+   trans_pcie->inta_mask = CSR_INT_BIT_FH_TX;
+   iwl_write32(trans, CSR_INT_MASK, trans_pcie->inta_mask);
+}
+
 static inline void iwl_enable_rfkill_int(struct iwl_trans *trans)
 {
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c 
b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
index ccafbd8..152cf9a 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
@@ -1438,9 +1438,11 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
 inta & ~trans_pcie->inta_mask);
}
 
-   /* Re-enable all interrupts */
-   /* only Re-enable if disabled by irq */
-   if (test_bit(STATUS_INT_ENABLED, >status))
+   /* we are loading the firmware, enable FH_TX interrupt only */
+   if (handled & CSR_INT_BIT_FH_TX)
+   iwl_enable_fw_load_int(trans);
+   /* only Re-enable all interrupt if disabled by irq */
+   else if (test_bit(STATUS_INT_ENABLED, >status))
iwl_enable_interrupts(trans);
/* Re-enable RF_KILL if it occurred */
else if (handled & CSR_INT_BIT_RF_KILL)
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c 
b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
index d60a467..5503072 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
@@ -1021,82 +1021,6 @@ static int iwl_pcie_load_given_ucode_8000(struct 
iwl_trans *trans,
   _ucode_section);
 }
 
-static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,
-  const struct fw_img *fw, bool run_in_rfkill)
-{
-   struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
-   bool hw_rfkill;
-   int ret;
-
-   mutex_lock(_pcie->mutex);
-
-   /* Someone called stop_device, don't try to start_fw */
-   if (trans_pcie->is_down) {
-   IWL_WARN(trans,
-"Can't start_fw since the HW hasn't been started\n");
-   ret = EIO;
-   goto out;
-   }
-
-   /* This may fail if AMT took ownership of the device */
-   if (iwl_pcie_prepare_card_hw(trans)) {
-   IWL_WARN(trans, "Exit HW not ready\n");
-   ret = -EIO;
-   goto out;
-   }
-
-   iwl_enable_rfkill_int(trans);
-
-   /* If platform's RF_KILL switch is NOT set to KILL */
-   hw_rfkill = iwl_is_rfkill_set(trans);
-   if (hw_rfkill)
-   set_bit(STATUS_RFKILL, >status);
-   else
-   clear_bit(STATUS_RFKILL, >status);
-   iwl_trans_pcie_rf_kill(trans, 

[PATCH 3/5] iwlwifi: mvm: don't allow sched scans without matches to be started

2016-02-15 Thread Emmanuel Grumbach
From: Luca Coelho 

The firmware can perform a scheduled scan with not matchsets passed,
but it can't send notification that results were found.  Since the
userspace then cannot know when we got new results and the firmware
wouldn't trigger a wake in case we are sleeping, it's better not to
allow scans without matchsets.

This fixes https://bugzilla.kernel.org/show_bug.cgi?id=110831

Cc:  [3.17+]
Signed-off-by: Luca Coelho 
Signed-off-by: Emmanuel Grumbach 
---
 drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c 
b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
index 9a15642..ea1e177 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
@@ -1298,6 +1298,10 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
return -EBUSY;
}
 
+   /* we don't support "match all" in the firmware */
+   if (!req->n_match_sets)
+   return -EOPNOTSUPP;
+
ret = iwl_mvm_check_running_scans(mvm, type);
if (ret)
return ret;
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/5] iwlwifi: fix name of ucode loaded for 8265 series

2016-02-15 Thread Emmanuel Grumbach
From: Oren Givon 

Fix the name of the ucode being loaded for 8265 series
to be: iwlwifi-8265-XX.ucode

Signed-off-by: Oren Givon 
Signed-off-by: Emmanuel Grumbach 
---
 drivers/net/wireless/intel/iwlwifi/iwl-8000.c | 42 +--
 drivers/net/wireless/intel/iwlwifi/iwl-drv.c  |  6 ++--
 2 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-8000.c 
b/drivers/net/wireless/intel/iwlwifi/iwl-8000.c
index c84a029..bce9b3420 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-8000.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-8000.c
@@ -7,6 +7,7 @@
  *
  * Copyright(c) 2014 Intel Corporation. All rights reserved.
  * Copyright(c) 2014 - 2015 Intel Mobile Communications GmbH
+ * Copyright(c) 2016 Intel Deutschland GmbH
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of version 2 of the GNU General Public License as
@@ -70,12 +71,15 @@
 
 /* Highest firmware API version supported */
 #define IWL8000_UCODE_API_MAX  20
+#define IWL8265_UCODE_API_MAX  20
 
 /* Oldest version we won't warn about */
 #define IWL8000_UCODE_API_OK   13
+#define IWL8265_UCODE_API_OK   20
 
 /* Lowest firmware API version supported */
 #define IWL8000_UCODE_API_MIN  13
+#define IWL8265_UCODE_API_MIN  20
 
 /* NVM versions */
 #define IWL8000_NVM_VERSION0x0a1d
@@ -93,6 +97,10 @@
 #define IWL8000_MODULE_FIRMWARE(api) \
IWL8000_FW_PRE "-" __stringify(api) ".ucode"
 
+#define IWL8265_FW_PRE "iwlwifi-8265-"
+#define IWL8265_MODULE_FIRMWARE(api) \
+   IWL8265_FW_PRE __stringify(api) ".ucode"
+
 #define NVM_HW_SECTION_NUM_FAMILY_8000 10
 #define DEFAULT_NVM_FILE_FAMILY_8000B  "nvmData-8000B"
 #define DEFAULT_NVM_FILE_FAMILY_8000C  "nvmData-8000C"
@@ -144,10 +152,7 @@ static const struct iwl_tt_params iwl8000_tt_params = {
.support_tx_backoff = true,
 };
 
-#define IWL_DEVICE_8000
\
-   .ucode_api_max = IWL8000_UCODE_API_MAX, \
-   .ucode_api_ok = IWL8000_UCODE_API_OK,   \
-   .ucode_api_min = IWL8000_UCODE_API_MIN, \
+#define IWL_DEVICE_8000_COMMON \
.device_family = IWL_DEVICE_FAMILY_8000,\
.max_inst_size = IWL60_RTC_INST_SIZE,   \
.max_data_size = IWL60_RTC_DATA_SIZE,   \
@@ -167,10 +172,28 @@ static const struct iwl_tt_params iwl8000_tt_params = {
.thermal_params = _tt_params,   \
.apmg_not_supported = true
 
+#define IWL_DEVICE_8000
\
+   IWL_DEVICE_8000_COMMON, \
+   .ucode_api_max = IWL8000_UCODE_API_MAX, \
+   .ucode_api_ok = IWL8000_UCODE_API_OK,   \
+   .ucode_api_min = IWL8000_UCODE_API_MIN  \
+
+#define IWL_DEVICE_8260
\
+   IWL_DEVICE_8000_COMMON, \
+   .ucode_api_max = IWL8000_UCODE_API_MAX, \
+   .ucode_api_ok = IWL8000_UCODE_API_OK,   \
+   .ucode_api_min = IWL8000_UCODE_API_MIN  \
+
+#define IWL_DEVICE_8265
\
+   IWL_DEVICE_8000_COMMON, \
+   .ucode_api_max = IWL8265_UCODE_API_MAX, \
+   .ucode_api_ok = IWL8265_UCODE_API_OK,   \
+   .ucode_api_min = IWL8265_UCODE_API_MIN  \
+
 const struct iwl_cfg iwl8260_2n_cfg = {
.name = "Intel(R) Dual Band Wireless N 8260",
.fw_name_pre = IWL8000_FW_PRE,
-   IWL_DEVICE_8000,
+   IWL_DEVICE_8260,
.ht_params = _ht_params,
.nvm_ver = IWL8000_NVM_VERSION,
.nvm_calib_ver = IWL8000_TX_POWER_VERSION,
@@ -179,7 +202,7 @@ const struct iwl_cfg iwl8260_2n_cfg = {
 const struct iwl_cfg iwl8260_2ac_cfg = {
.name = "Intel(R) Dual Band Wireless AC 8260",
.fw_name_pre = IWL8000_FW_PRE,
-   IWL_DEVICE_8000,
+   IWL_DEVICE_8260,
.ht_params = _ht_params,
.nvm_ver = IWL8000_NVM_VERSION,
.nvm_calib_ver = IWL8000_TX_POWER_VERSION,
@@ -188,8 +211,8 @@ const struct iwl_cfg iwl8260_2ac_cfg = {
 
 const struct iwl_cfg iwl8265_2ac_cfg = {
.name = "Intel(R) Dual Band Wireless AC 8265",
-   .fw_name_pre = IWL8000_FW_PRE,
-   IWL_DEVICE_8000,
+   .fw_name_pre = IWL8265_FW_PRE,
+   IWL_DEVICE_8265,
.ht_params = _ht_params,
.nvm_ver = IWL8000_NVM_VERSION,
.nvm_calib_ver = 

[PATCH 2/5] iwlwifi: dvm: remove a wrong dependency on m

2016-02-15 Thread Emmanuel Grumbach
This was wronly added when the dependency on IWLWIFI was
removed.

This fixes https://bugzilla.kernel.org/show_bug.cgi?id=112201

Signed-off-by: Emmanuel Grumbach 
---
 drivers/net/wireless/intel/iwlwifi/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/Kconfig 
b/drivers/net/wireless/intel/iwlwifi/Kconfig
index 8660677..7438fbe 100644
--- a/drivers/net/wireless/intel/iwlwifi/Kconfig
+++ b/drivers/net/wireless/intel/iwlwifi/Kconfig
@@ -53,7 +53,6 @@ config IWLWIFI_LEDS
 
 config IWLDVM
tristate "Intel Wireless WiFi DVM Firmware support"
-   depends on m
help
  This is the driver that supports the DVM firmware. The list
  of the devices that use this firmware is available here:
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


pull request: iwlwifi-2016-02-16

2016-02-15 Thread Grumbach, Emmanuel
Hi Kalle,

This is a pull request for 4.5. Apart from my RF-Kill fix, the patches are
really small. My RF-Kill patch needed to move code around to avoid adding
a forward declaration and on the way there were a few very trivial code style
fixes, that were needed to make checkpatch happy.

Let me know if you have issues, thanks!


The following changes since commit 69c7fda40921c125f6a827f6270ac6aa1baa:

  iwlwifi: mvm: rs: fix TPC statistics handling (2016-01-26 16:03:35 +0200)

are available in the git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes.git 
tags/iwlwifi-for-kalle-2016-02-15

for you to fetch changes up to 20aa99bbddae74bded68338f9ba200ccae02858b:

  iwlwifi: pcie: fix erroneous return value (2016-02-15 13:38:31 +0200)


These are a few fixes for the current cycle.
3 out of the 5 patches fix a bugzilla.

* fix a race that users reported when we try to load the firmware
  and the hardware rfkill interrupt triggers at the same time.
* Luca fixes a very visible bug in scheduled scan: our firmware
  doesn't support scheduled scan with no profile configured and
  the supplicant sometimes requests such scheduled scans.
* build system fix
* firmware name update for 8265
* typo fix in return value


Anton Protopopov (1):
  iwlwifi: pcie: fix erroneous return value

Emmanuel Grumbach (2):
  iwlwifi: dvm: remove a wrong dependency on m
  iwlwifi: pcie: fix RF-Kill vs. firmware load race

Luca Coelho (1):
  iwlwifi: mvm: don't allow sched scans without matches to be started

Oren Givon (1):
  iwlwifi: fix name of ucode loaded for 8265 series

 drivers/net/wireless/intel/iwlwifi/Kconfig |   1 -
 drivers/net/wireless/intel/iwlwifi/iwl-8000.c  |  42 --
 drivers/net/wireless/intel/iwlwifi/iwl-drv.c   |   6 +-
 drivers/net/wireless/intel/iwlwifi/mvm/scan.c  |   4 +
 drivers/net/wireless/intel/iwlwifi/pcie/internal.h |   9 ++
 drivers/net/wireless/intel/iwlwifi/pcie/rx.c   |   8 +-
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c| 188 
--
 7 files changed, 164 insertions(+), 94 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: drivers/staging/wilc1000/wilc_spi.c won't compile ?

2016-02-15 Thread Kim, Leo
Hi David,

You're had old wilc1000 source.
Remove the wilc1000_ops structure.
 (Branch) staging-testing
 (SHA) ce7b516f3f9e11fe4ee06fad0d7e853bb6e8f160
Please receive the latest source.

 Thanks, BR
 Leo

-Original Message-
From: David Binderman [mailto:dcb...@hotmail.com] 
Sent: Monday, February 08, 2016 9:18 PM
To: Kim, Johnny ; Shin, Austin ; 
Park, Chris ; Cho, Tony ; Lee, Glen 
; Kim, Leo ; 
linux-wireless@vger.kernel.org
Subject: drivers/staging/wilc1000/wilc_spi.c won't compile ?

Hello there,

drivers/staging/wilc1000/wilc_spi.c:123:34: error: storage size of 
'wilc1000_spi_ops' isn't known
 static const struct wilc1000_ops wilc1000_spi_ops;
  ^~~~
drivers/staging/wilc1000/wilc_spi.c:123:34: warning: 'wilc1000_spi_ops' defined 
but not used [-Wunused-const-variable]

Suggest remove.

Regards

David Binderman

  
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/3 v2] mac80211: remove ieee80211_get_key_tx_seq/ieee80211_set_key_tx_seq

2016-02-15 Thread Emmanuel Grumbach
From: Eliad Peller 

Since the PNs of all the tx keys are now tracked in the public
part of the key struct (with atomic counter), we no longer
need these functions.

dvm and vt665{5,6} are currently the only users of these functions,
so update them accordingly.

Signed-off-by: Eliad Peller 
Signed-off-by: Emmanuel Grumbach 
---
v2: fix vt6655 and vt6656
---
 drivers/net/wireless/intel/iwlwifi/dvm/lib.c | 20 +++
 drivers/staging/vt6655/rxtx.c| 12 ++--
 drivers/staging/vt6656/rxtx.c| 12 ++--
 include/net/mac80211.h   | 34 ---
 net/mac80211/key.c   | 87 
 5 files changed, 24 insertions(+), 141 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c 
b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
index 4841be2..1799469 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c
@@ -943,14 +943,16 @@ static void iwlagn_wowlan_program_keys(struct 
ieee80211_hw *hw,
switch (key->cipher) {
case WLAN_CIPHER_SUITE_TKIP:
if (sta) {
+   u64 pn64;
+
tkip_sc = data->rsc_tsc->all_tsc_rsc.tkip.unicast_rsc;
tkip_tx_sc = >rsc_tsc->all_tsc_rsc.tkip.tsc;
 
rx_p1ks = data->tkip->rx_uni;
 
-   ieee80211_get_key_tx_seq(key, );
-   tkip_tx_sc->iv16 = cpu_to_le16(seq.tkip.iv16);
-   tkip_tx_sc->iv32 = cpu_to_le32(seq.tkip.iv32);
+   pn64 = atomic64_read(>tx_pn);
+   tkip_tx_sc->iv16 = cpu_to_le16(TKIP_PN_TO_IV16(pn64));
+   tkip_tx_sc->iv32 = cpu_to_le32(TKIP_PN_TO_IV32(pn64));
 
ieee80211_get_tkip_p1k_iv(key, seq.tkip.iv32, p1k);
iwlagn_convert_p1k(p1k, data->tkip->tx.p1k);
@@ -996,19 +998,13 @@ static void iwlagn_wowlan_program_keys(struct 
ieee80211_hw *hw,
break;
case WLAN_CIPHER_SUITE_CCMP:
if (sta) {
-   u8 *pn = seq.ccmp.pn;
+   u64 pn64;
 
aes_sc = data->rsc_tsc->all_tsc_rsc.aes.unicast_rsc;
aes_tx_sc = >rsc_tsc->all_tsc_rsc.aes.tsc;
 
-   ieee80211_get_key_tx_seq(key, );
-   aes_tx_sc->pn = cpu_to_le64(
-   (u64)pn[5] |
-   ((u64)pn[4] << 8) |
-   ((u64)pn[3] << 16) |
-   ((u64)pn[2] << 24) |
-   ((u64)pn[1] << 32) |
-   ((u64)pn[0] << 40));
+   pn64 = atomic64_read(>tx_pn);
+   aes_tx_sc->pn = cpu_to_le64(pn64);
} else
aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc;
 
diff --git a/drivers/staging/vt6655/rxtx.c b/drivers/staging/vt6655/rxtx.c
index b668db6..1a2dda0 100644
--- a/drivers/staging/vt6655/rxtx.c
+++ b/drivers/staging/vt6655/rxtx.c
@@ -1210,7 +1210,7 @@ static void vnt_fill_txkey(struct ieee80211_hdr *hdr, u8 
*key_buffer,
   struct sk_buff *skb, u16 payload_len,
   struct vnt_mic_hdr *mic_hdr)
 {
-   struct ieee80211_key_seq seq;
+   u64 pn64;
u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb));
 
/* strip header and icv len from payload */
@@ -1243,9 +1243,13 @@ static void vnt_fill_txkey(struct ieee80211_hdr *hdr, u8 
*key_buffer,
mic_hdr->payload_len = cpu_to_be16(payload_len);
ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2);
 
-   ieee80211_get_key_tx_seq(tx_key, );
-
-   memcpy(mic_hdr->ccmp_pn, seq.ccmp.pn, IEEE80211_CCMP_PN_LEN);
+   pn64 = atomic64_read(_key->tx_pn);
+   mic_hdr->ccmp_pn[5] = pn64;
+   mic_hdr->ccmp_pn[4] = pn64 >> 8;
+   mic_hdr->ccmp_pn[3] = pn64 >> 16;
+   mic_hdr->ccmp_pn[2] = pn64 >> 24;
+   mic_hdr->ccmp_pn[1] = pn64 >> 32;
+   mic_hdr->ccmp_pn[0] = pn64 >> 40;
 
if (ieee80211_has_a4(hdr->frame_control))
mic_hdr->hlen = cpu_to_be16(28);
diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
index efb54f5..76378d2 100644
--- a/drivers/staging/vt6656/rxtx.c
+++ b/drivers/staging/vt6656/rxtx.c
@@ -719,7 +719,7 @@ static void vnt_fill_txkey(struct vnt_usb_send_context 
*tx_context,
u16 payload_len, struct vnt_mic_hdr *mic_hdr)
 {
struct ieee80211_hdr *hdr = tx_context->hdr;
-   struct ieee80211_key_seq seq;
+   u64 pn64;
u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb));
 
  

wireless dependency

2016-02-15 Thread Arend Van Spriel
Hi Kalle,

I am preparing a patch series for wireless-drivers-next, but there is
a dependency with patch that was submitted to wireless-drivers [1].
How should I handle this. Can I submit it for wireless-drivers-next as
well?

Regards,
Arend

[1] https://patchwork.kernel.org/patch/8061031/
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] iwlwifi: mvm: move TX PN assignment for TKIP to the driver

2016-02-15 Thread Johannes Berg
On Mon, 2016-02-15 at 09:24 +, Grumbach, Emmanuel wrote:
> 
> It doesn't feel right to remove this function in mac80211-next.git
> and
> touch 3 drivers along the way, but I don't mind. Johannes, what do
> you say?

I don't see any problem with that? I've touched far more drivers (like
"every single one") when doing API updates :)

johannes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] brcmfmac: of: Include "of.h" header file

2016-02-15 Thread Arend Van Spriel
I am actually preparing a patch series and found that this change is
incorporated in that series. As that involves other changes it is
probably better to drop this patch. I thought I could change the
patchwork state for it, but no luck.

Regards,
Arend

On Mon, Feb 15, 2016 at 10:15 AM, Arend Van Spriel
 wrote:
> On Sun, Feb 14, 2016 at 10:57 PM, Fabio Estevam  wrote:
>> From: Fabio Estevam 
>>
>> Include "of.h" header file to fix the following sparse warning:
>>
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c:27:6: warning: symbol 
>> 'brcmf_of_probe' was not declared. Should it be static?
>
> Acked-by: Arend van Spriel 
>> Signed-off-by: Fabio Estevam 
>> ---
>> Resending to linux-wireless@vger.kernel.org
>>
>>  drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c 
>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
>> index 03f35e0..6231b36 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
>> @@ -23,6 +23,7 @@
>>  #include 
>>  #include "debug.h"
>>  #include "sdio.h"
>> +#include "of.h"
>>
>>  void brcmf_of_probe(struct brcmf_sdio_dev *sdiodev)
>>  {
>> --
>> 1.9.1
>>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] iwlwifi: mvm: move TX PN assignment for TKIP to the driver

2016-02-15 Thread Grumbach, Emmanuel


On 02/15/2016 11:21 AM, Eliad Peller wrote:
> On Mon, Feb 15, 2016 at 11:16 AM, Grumbach, Emmanuel
>  wrote:
>>
>> On 02/15/2016 11:06 AM, Eliad Peller wrote:
>>> On Sun, Feb 14, 2016 at 9:37 PM, Grumbach, Emmanuel
>>>  wrote:
 On 02/14/2016 09:33 PM, Johannes Berg wrote:
> On Sun, 2016-02-14 at 19:34 +0200, Emmanuel Grumbach wrote:
>> Since the 3rd patch needs to be dropped anyway, let's route this one
>> through my tree as usual.
> It doesn't really have to be dropped, why? We can just make the same
> adjustment as for dvm in the patch.
>
 But I am not sure I really want to play with drivers/staging/vt6656/rxtx.c
>>> here you go:
>>>
>>> diff --git a/drivers/staging/vt6655/rxtx.c b/drivers/staging/vt6655/rxtx.c
>>> index b668db6..1a2dda0 100644
>>> --- a/drivers/staging/vt6655/rxtx.c
>>> +++ b/drivers/staging/vt6655/rxtx.c
>>>
>> Want to send that patch to Greg? :)
> why? can't you simply amend it to the third patch?
>
>

It doesn't feel right to remove this function in mac80211-next.git and
touch 3 drivers along the way, but I don't mind. Johannes, what do you say?
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] iwlwifi: mvm: move TX PN assignment for TKIP to the driver

2016-02-15 Thread Eliad Peller
On Mon, Feb 15, 2016 at 11:16 AM, Grumbach, Emmanuel
 wrote:
>
>
> On 02/15/2016 11:06 AM, Eliad Peller wrote:
>> On Sun, Feb 14, 2016 at 9:37 PM, Grumbach, Emmanuel
>>  wrote:
>>>
>>> On 02/14/2016 09:33 PM, Johannes Berg wrote:
 On Sun, 2016-02-14 at 19:34 +0200, Emmanuel Grumbach wrote:
> Since the 3rd patch needs to be dropped anyway, let's route this one
> through my tree as usual.
 It doesn't really have to be dropped, why? We can just make the same
 adjustment as for dvm in the patch.

>>> But I am not sure I really want to play with drivers/staging/vt6656/rxtx.c
>> here you go:
>>
>> diff --git a/drivers/staging/vt6655/rxtx.c b/drivers/staging/vt6655/rxtx.c
>> index b668db6..1a2dda0 100644
>> --- a/drivers/staging/vt6655/rxtx.c
>> +++ b/drivers/staging/vt6655/rxtx.c
>>
> Want to send that patch to Greg? :)

why? can't you simply amend it to the third patch?

Eliad.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] iwlwifi: mvm: move TX PN assignment for TKIP to the driver

2016-02-15 Thread Grumbach, Emmanuel


On 02/15/2016 11:06 AM, Eliad Peller wrote:
> On Sun, Feb 14, 2016 at 9:37 PM, Grumbach, Emmanuel
>  wrote:
>>
>> On 02/14/2016 09:33 PM, Johannes Berg wrote:
>>> On Sun, 2016-02-14 at 19:34 +0200, Emmanuel Grumbach wrote:
 Since the 3rd patch needs to be dropped anyway, let's route this one
 through my tree as usual.
>>> It doesn't really have to be dropped, why? We can just make the same
>>> adjustment as for dvm in the patch.
>>>
>> But I am not sure I really want to play with drivers/staging/vt6656/rxtx.c
> here you go:
>
> diff --git a/drivers/staging/vt6655/rxtx.c b/drivers/staging/vt6655/rxtx.c
> index b668db6..1a2dda0 100644
> --- a/drivers/staging/vt6655/rxtx.c
> +++ b/drivers/staging/vt6655/rxtx.c
> @@ -1210,7 +1210,7 @@ static void vnt_fill_txkey(struct ieee80211_hdr
> *hdr, u8 *key_buffer,
> struct sk_buff *skb, u16 payload_len,
> struct vnt_mic_hdr *mic_hdr)
>  {
> - struct ieee80211_key_seq seq;
> + u64 pn64;
>   u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb));
>
>   /* strip header and icv len from payload */
> @@ -1243,9 +1243,13 @@ static void vnt_fill_txkey(struct ieee80211_hdr
> *hdr, u8 *key_buffer,
>   mic_hdr->payload_len = cpu_to_be16(payload_len);
>   ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2);
>
> - ieee80211_get_key_tx_seq(tx_key, );
> -
> - memcpy(mic_hdr->ccmp_pn, seq.ccmp.pn, IEEE80211_CCMP_PN_LEN);
> + pn64 = atomic64_read(_key->tx_pn);
> + mic_hdr->ccmp_pn[5] = pn64;
> + mic_hdr->ccmp_pn[4] = pn64 >> 8;
> + mic_hdr->ccmp_pn[3] = pn64 >> 16;
> + mic_hdr->ccmp_pn[2] = pn64 >> 24;
> + mic_hdr->ccmp_pn[1] = pn64 >> 32;
> + mic_hdr->ccmp_pn[0] = pn64 >> 40;
>
>   if (ieee80211_has_a4(hdr->frame_control))
>   mic_hdr->hlen = cpu_to_be16(28);
> diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
> index efb54f5..76378d2 100644
> --- a/drivers/staging/vt6656/rxtx.c
> +++ b/drivers/staging/vt6656/rxtx.c
> @@ -719,7 +719,7 @@ static void vnt_fill_txkey(struct
> vnt_usb_send_context *tx_context,
>   u16 payload_len, struct vnt_mic_hdr *mic_hdr)
>  {
>   struct ieee80211_hdr *hdr = tx_context->hdr;
> - struct ieee80211_key_seq seq;
> + u64 pn64;
>   u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb));
>
>   /* strip header and icv len from payload */
> @@ -752,9 +752,13 @@ static void vnt_fill_txkey(struct
> vnt_usb_send_context *tx_context,
>   mic_hdr->payload_len = cpu_to_be16(payload_len);
>   ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2);
>
> - ieee80211_get_key_tx_seq(tx_key, );
> -
> - memcpy(mic_hdr->ccmp_pn, seq.ccmp.pn, IEEE80211_CCMP_PN_LEN);
> + pn64 = atomic64_read(_key->tx_pn);
> + mic_hdr->ccmp_pn[5] = pn64;
> + mic_hdr->ccmp_pn[4] = pn64 >> 8;
> + mic_hdr->ccmp_pn[3] = pn64 >> 16;
> + mic_hdr->ccmp_pn[2] = pn64 >> 24;
> + mic_hdr->ccmp_pn[1] = pn64 >> 32;
> + mic_hdr->ccmp_pn[0] = pn64 >> 40;
>
>   if (ieee80211_has_a4(hdr->frame_control))
>   mic_hdr->hlen = cpu_to_be16(28);
>
>
> Eliad.
>

Want to send that patch to Greg? :)
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] brcmfmac: of: Include "of.h" header file

2016-02-15 Thread Arend Van Spriel
On Sun, Feb 14, 2016 at 10:57 PM, Fabio Estevam  wrote:
> From: Fabio Estevam 
>
> Include "of.h" header file to fix the following sparse warning:
>
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c:27:6: warning: symbol 
> 'brcmf_of_probe' was not declared. Should it be static?

Acked-by: Arend van Spriel 
> Signed-off-by: Fabio Estevam 
> ---
> Resending to linux-wireless@vger.kernel.org
>
>  drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c 
> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
> index 03f35e0..6231b36 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
> @@ -23,6 +23,7 @@
>  #include 
>  #include "debug.h"
>  #include "sdio.h"
> +#include "of.h"
>
>  void brcmf_of_probe(struct brcmf_sdio_dev *sdiodev)
>  {
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] iwlwifi: mvm: move TX PN assignment for TKIP to the driver

2016-02-15 Thread Eliad Peller
On Sun, Feb 14, 2016 at 9:37 PM, Grumbach, Emmanuel
 wrote:
>
>
> On 02/14/2016 09:33 PM, Johannes Berg wrote:
>> On Sun, 2016-02-14 at 19:34 +0200, Emmanuel Grumbach wrote:
>>>
>>> Since the 3rd patch needs to be dropped anyway, let's route this one
>>> through my tree as usual.
>> It doesn't really have to be dropped, why? We can just make the same
>> adjustment as for dvm in the patch.
>>
>
> But I am not sure I really want to play with drivers/staging/vt6656/rxtx.c

here you go:

diff --git a/drivers/staging/vt6655/rxtx.c b/drivers/staging/vt6655/rxtx.c
index b668db6..1a2dda0 100644
--- a/drivers/staging/vt6655/rxtx.c
+++ b/drivers/staging/vt6655/rxtx.c
@@ -1210,7 +1210,7 @@ static void vnt_fill_txkey(struct ieee80211_hdr
*hdr, u8 *key_buffer,
struct sk_buff *skb, u16 payload_len,
struct vnt_mic_hdr *mic_hdr)
 {
- struct ieee80211_key_seq seq;
+ u64 pn64;
  u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb));

  /* strip header and icv len from payload */
@@ -1243,9 +1243,13 @@ static void vnt_fill_txkey(struct ieee80211_hdr
*hdr, u8 *key_buffer,
  mic_hdr->payload_len = cpu_to_be16(payload_len);
  ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2);

- ieee80211_get_key_tx_seq(tx_key, );
-
- memcpy(mic_hdr->ccmp_pn, seq.ccmp.pn, IEEE80211_CCMP_PN_LEN);
+ pn64 = atomic64_read(_key->tx_pn);
+ mic_hdr->ccmp_pn[5] = pn64;
+ mic_hdr->ccmp_pn[4] = pn64 >> 8;
+ mic_hdr->ccmp_pn[3] = pn64 >> 16;
+ mic_hdr->ccmp_pn[2] = pn64 >> 24;
+ mic_hdr->ccmp_pn[1] = pn64 >> 32;
+ mic_hdr->ccmp_pn[0] = pn64 >> 40;

  if (ieee80211_has_a4(hdr->frame_control))
  mic_hdr->hlen = cpu_to_be16(28);
diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
index efb54f5..76378d2 100644
--- a/drivers/staging/vt6656/rxtx.c
+++ b/drivers/staging/vt6656/rxtx.c
@@ -719,7 +719,7 @@ static void vnt_fill_txkey(struct
vnt_usb_send_context *tx_context,
  u16 payload_len, struct vnt_mic_hdr *mic_hdr)
 {
  struct ieee80211_hdr *hdr = tx_context->hdr;
- struct ieee80211_key_seq seq;
+ u64 pn64;
  u8 *iv = ((u8 *)hdr + ieee80211_get_hdrlen_from_skb(skb));

  /* strip header and icv len from payload */
@@ -752,9 +752,13 @@ static void vnt_fill_txkey(struct
vnt_usb_send_context *tx_context,
  mic_hdr->payload_len = cpu_to_be16(payload_len);
  ether_addr_copy(mic_hdr->mic_addr2, hdr->addr2);

- ieee80211_get_key_tx_seq(tx_key, );
-
- memcpy(mic_hdr->ccmp_pn, seq.ccmp.pn, IEEE80211_CCMP_PN_LEN);
+ pn64 = atomic64_read(_key->tx_pn);
+ mic_hdr->ccmp_pn[5] = pn64;
+ mic_hdr->ccmp_pn[4] = pn64 >> 8;
+ mic_hdr->ccmp_pn[3] = pn64 >> 16;
+ mic_hdr->ccmp_pn[2] = pn64 >> 24;
+ mic_hdr->ccmp_pn[1] = pn64 >> 32;
+ mic_hdr->ccmp_pn[0] = pn64 >> 40;

  if (ieee80211_has_a4(hdr->frame_control))
  mic_hdr->hlen = cpu_to_be16(28);


Eliad.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html