[PATCH 1/2] ath10k: share board file loading code across FW APIs

2015-03-23 Thread Michal Kazior
There's no need to implement the same thing twice.
Reduce code duplication.

Signed-off-by: Michal Kazior michal.kaz...@tieto.com
---
 drivers/net/wireless/ath/ath10k/core.c | 68 +++---
 1 file changed, 30 insertions(+), 38 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.c 
b/drivers/net/wireless/ath/ath10k/core.c
index c0e454b..1785e0e 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -482,6 +482,30 @@ static int ath10k_fetch_cal_file(struct ath10k *ar)
return 0;
 }
 
+static int ath10k_core_fetch_board_file(struct ath10k *ar)
+{
+   int ret;
+
+   if (!ar-hw_params.fw.board) {
+   ath10k_err(ar, failed to find board file fw entry\n);
+   return -EINVAL;
+   }
+
+   ar-board = ath10k_fetch_fw_file(ar,
+ar-hw_params.fw.dir,
+ar-hw_params.fw.board);
+   if (IS_ERR(ar-board)) {
+   ret = PTR_ERR(ar-board);
+   ath10k_err(ar, failed to fetch board data: %d\n, ret);
+   return ret;
+   }
+
+   ar-board_data = ar-board-data;
+   ar-board_len = ar-board-size;
+
+   return 0;
+}
+
 static int ath10k_core_fetch_firmware_api_1(struct ath10k *ar)
 {
int ret = 0;
@@ -491,23 +515,6 @@ static int ath10k_core_fetch_firmware_api_1(struct ath10k 
*ar)
return -EINVAL;
}
 
-   if (ar-hw_params.fw.board == NULL) {
-   ath10k_err(ar, board data file not defined);
-   return -EINVAL;
-   }
-
-   ar-board = ath10k_fetch_fw_file(ar,
-ar-hw_params.fw.dir,
-ar-hw_params.fw.board);
-   if (IS_ERR(ar-board)) {
-   ret = PTR_ERR(ar-board);
-   ath10k_err(ar, could not fetch board data (%d)\n, ret);
-   goto err;
-   }
-
-   ar-board_data = ar-board-data;
-   ar-board_len = ar-board-size;
-
ar-firmware = ath10k_fetch_fw_file(ar,
ar-hw_params.fw.dir,
ar-hw_params.fw.fw);
@@ -695,27 +702,6 @@ static int ath10k_core_fetch_firmware_api_n(struct ath10k 
*ar, const char *name)
goto err;
}
 
-   /* now fetch the board file */
-   if (ar-hw_params.fw.board == NULL) {
-   ath10k_err(ar, board data file not defined);
-   ret = -EINVAL;
-   goto err;
-   }
-
-   ar-board = ath10k_fetch_fw_file(ar,
-ar-hw_params.fw.dir,
-ar-hw_params.fw.board);
-   if (IS_ERR(ar-board)) {
-   ret = PTR_ERR(ar-board);
-   ath10k_err(ar, could not fetch board data '%s/%s' (%d)\n,
-  ar-hw_params.fw.dir, ar-hw_params.fw.board,
-  ret);
-   goto err;
-   }
-
-   ar-board_data = ar-board-data;
-   ar-board_len = ar-board-size;
-
return 0;
 
 err:
@@ -730,6 +716,12 @@ static int ath10k_core_fetch_firmware_files(struct ath10k 
*ar)
/* calibration file is optional, don't check for any errors */
ath10k_fetch_cal_file(ar);
 
+   ret = ath10k_core_fetch_board_file(ar);
+   if (ret) {
+   ath10k_err(ar, failed to fetch board file: %d\n, ret);
+   return ret;
+   }
+
ar-fw_api = 4;
ath10k_dbg(ar, ATH10K_DBG_BOOT, trying fw api %d\n, ar-fw_api);
 
-- 
2.1.4


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


[PATCH 2/2] ath10k: allow loading device specific board files

2015-03-23 Thread Michal Kazior
Some devices differ slightly and require different
board files. These devices can be differentiated
by looking at PCI subsystem device id. That is the
case for qca6174 devices at least.

Use that and load subsystem id specific board
files if possible. Otherwise fall back to use the
(old) generic board file path.

Using wrong board data may cause device crashes or
invalid behaviour (wrong tx power, garbled RF
signal).

Signed-off-by: Michal Kazior michal.kaz...@tieto.com
---
 drivers/net/wireless/ath/ath10k/core.c  | 55 -
 drivers/net/wireless/ath/ath10k/core.h  |  3 ++
 drivers/net/wireless/ath/ath10k/debug.c |  6 +++-
 drivers/net/wireless/ath/ath10k/pci.c   |  5 +++
 4 files changed, 61 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.c 
b/drivers/net/wireless/ath/ath10k/core.c
index 1785e0e..12da7fa 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -482,10 +482,26 @@ static int ath10k_fetch_cal_file(struct ath10k *ar)
return 0;
 }
 
-static int ath10k_core_fetch_board_file(struct ath10k *ar)
+static int ath10k_core_fetch_spec_board_file(struct ath10k *ar)
 {
-   int ret;
+   char filename[100];
 
+   scnprintf(filename, sizeof(filename), board-%s-%s.bin,
+ ath10k_bus_str(ar-hif.bus), ar-spec_board_id);
+
+   ar-board = ath10k_fetch_fw_file(ar, ar-hw_params.fw.dir, filename);
+   if (IS_ERR(ar-board))
+   return PTR_ERR(ar-board);
+
+   ar-board_data = ar-board-data;
+   ar-board_len = ar-board-size;
+   ar-spec_board_loaded = true;
+
+   return 0;
+}
+
+static int ath10k_core_fetch_generic_board_file(struct ath10k *ar)
+{
if (!ar-hw_params.fw.board) {
ath10k_err(ar, failed to find board file fw entry\n);
return -EINVAL;
@@ -494,14 +510,39 @@ static int ath10k_core_fetch_board_file(struct ath10k *ar)
ar-board = ath10k_fetch_fw_file(ar,
 ar-hw_params.fw.dir,
 ar-hw_params.fw.board);
-   if (IS_ERR(ar-board)) {
-   ret = PTR_ERR(ar-board);
-   ath10k_err(ar, failed to fetch board data: %d\n, ret);
-   return ret;
-   }
+   if (IS_ERR(ar-board))
+   return PTR_ERR(ar-board);
 
ar-board_data = ar-board-data;
ar-board_len = ar-board-size;
+   ar-spec_board_loaded = false;
+
+   return 0;
+}
+
+static int ath10k_core_fetch_board_file(struct ath10k *ar)
+{
+   int ret;
+
+   if (strlen(ar-spec_board_id)  0) {
+   ret = ath10k_core_fetch_spec_board_file(ar);
+   if (ret) {
+   ath10k_info(ar, failed to load spec board file, 
falling back to generic: %d\n,
+   ret);
+   goto generic;
+   }
+
+   ath10k_dbg(ar, ATH10K_DBG_BOOT, found specific board file for 
%s\n,
+  ar-spec_board_id);
+   return 0;
+   }
+
+generic:
+   ret = ath10k_core_fetch_generic_board_file(ar);
+   if (ret) {
+   ath10k_err(ar, failed to fetch generic board data: %d\n, ret);
+   return ret;
+   }
 
return 0;
 }
diff --git a/drivers/net/wireless/ath/ath10k/core.h 
b/drivers/net/wireless/ath/ath10k/core.h
index c1f43b0..90b5b10 100644
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
@@ -568,6 +568,9 @@ struct ath10k {
 
const struct firmware *cal_file;
 
+   char spec_board_id[100];
+   bool spec_board_loaded;
+
int fw_api;
enum ath10k_cal_mode cal_mode;
 
diff --git a/drivers/net/wireless/ath/ath10k/debug.c 
b/drivers/net/wireless/ath/ath10k/debug.c
index 301081d..9c824e2 100644
--- a/drivers/net/wireless/ath/ath10k/debug.c
+++ b/drivers/net/wireless/ath/ath10k/debug.c
@@ -124,10 +124,14 @@ EXPORT_SYMBOL(ath10k_info);
 
 void ath10k_print_driver_info(struct ath10k *ar)
 {
-   ath10k_info(ar, %s (0x%08x, 0x%08x) fw %s api %d htt %d.%d wmi %d cal 
%s max_sta %d\n,
+   ath10k_info(ar, %s (0x%08x, 0x%08x%s%s%s) fw %s api %d htt %d.%d wmi 
%d cal %s max_sta %d\n,
ar-hw_params.name,
ar-target_version,
ar-chip_id,
+   (strlen(ar-spec_board_id)  0 ? ,  : ),
+   ar-spec_board_id,
+   (strlen(ar-spec_board_id)  0  !ar-spec_board_loaded
+?  fallback : ),
ar-hw-wiphy-fw_version,
ar-fw_api,
ar-htt.target_version_major,
diff --git a/drivers/net/wireless/ath/ath10k/pci.c 
b/drivers/net/wireless/ath/ath10k/pci.c
index b4aacfa..1e528bc 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -2627,6 +2627,11 @@ static int ath10k_pci_probe(struct pci_dev 

[PATCH 0/2] ath10k: load device specific board files

2015-03-23 Thread Michal Kazior
Until now it was okay to use a very generic board
data since OTP was supposed to fill in the blanks
(except some cases in which a complete cal data is
provided via cal-pci-xxx or device tree).

However since qca6174 this has changed. It is now
necessary to load specific board file for
different designs in driver. The OTP must still be
run.

Some devices with different subsystem
vendor/device ids may share the same board file.
Driver could maintain a subsystem vendor/device
id to design id however I prefer to just leave
this to userspace (e.g. symlinks). Thoughts?


Michal Kazior (2):
  ath10k: share board file loading code across FW APIs
  ath10k: allow loading device specific board files

 drivers/net/wireless/ath/ath10k/core.c  | 109 +---
 drivers/net/wireless/ath/ath10k/core.h  |   3 +
 drivers/net/wireless/ath/ath10k/debug.c |   6 +-
 drivers/net/wireless/ath/ath10k/pci.c   |   5 ++
 4 files changed, 84 insertions(+), 39 deletions(-)

-- 
2.1.4


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH 2/4] ath10k: add WOW disconnect/magic-packet support

2015-03-23 Thread Kalle Valo
Janusz Dziedzic janusz.dzied...@tieto.com writes:

 Add support for WOW disconnect and magic-packet.

 Signed-off-by: Janusz Dziedzic janusz.dzied...@tieto.com

[...]

 +#ifdef CONFIG_PM
 +int ath10k_wow_init(struct ieee80211_hw *hw);

[...]

 +#else
 +static inline int ath10k_wow_init(struct ieee80211_hw *hw)
 +{
 + return 0;
 +}

In pending branch I changed these to:

int ath10k_wow_init(struct ath10k *ar);

-- 
Kalle Valo

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH v2 1/2] ath10k: fix rts profile for second rate series

2015-03-23 Thread Kalle Valo
Rajkumar Manoharan rmano...@qti.qualcomm.com writes:

 By default rts protection is enabled in firmware for the second
 rateset. Currently ath10k selects RTS profile (only for software
 retries), when legacy stations are associated or asked by mac80211.
 On congested environment, when AP is running in HT/VHT mode and
 there are no legacy clients associated, this will impact the
 robustness. Also enabling RTS protection only for second rateset will
 not impact performance on clear environment. Fix that.

 Signed-off-by: Rajkumar Manoharan rmano...@qti.qualcomm.com

Thanks, both patches applied.

-- 
Kalle Valo

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH 0/6] ath10k: thermal mitigation fixes

2015-03-23 Thread Kalle Valo
Rajkumar Manoharan rmano...@qti.qualcomm.com writes:

 Here are few enhancements in thermal throttling that allows
 user to control throttling state and quiet period. Also enables
 throttling for station mode. These patches are rebased on latest TOT.

 Rajkumar Manoharan (6):
   ath10k: add debugfs entry to configure quiet period
   ath10k: Fix interpretation of cooling device state
   ath10k: configure thermal throttle while powering up
   ath10k: do not restrict thermal throttling to ap mode
   ath10k: cache throttle state when device is down
   ath10k: move driver state check before setting throttle

Thanks, applied.

-- 
Kalle Valo

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH] ath10k: enable channel 144 on 5GHz band

2015-03-23 Thread Kalle Valo
Peter Oh p...@qca.qualcomm.com writes:

 Enable channel 144 on 5GHz band since 802.11ac introduced it.

 Signed-off-by: Peter Oh p...@qca.qualcomm.com

Thanks, applied.

-- 
Kalle Valo

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH v2 1/2] ath10k: enable Adaptive Noise Immunity (ANI) by default

2015-03-23 Thread Kalle Valo
Ashok Raj Nagarajan arnag...@qti.qualcomm.com writes:

 ANI helps to improve connectvity and performance in a noisy environment.
 Enabling this feature would help the user experience a better and stable
 wireless connection in a noisy environmnet. This feature is currently not
 enabled for ath10k. Enable this feature by default.

 Signed-off-by: Ashok Raj Nagarajan arnag...@qti.qualcomm.com

Thanks, both patches applied.

-- 
Kalle Valo

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH v2 2/2] ath10k: allow user to toggle ani_enable via debugfs

2015-03-23 Thread Ashok Raj Nagarajan
On Fri, Mar 20, 2015 at 10:28:06AM +0100, Jose Antonio Delgado Alfonso wrote:
 Hi Ashok,
 
 Just a quick question, is it supported by all firmware versions?
 
Yes Jose. It is supported by all firmware versions.

Thanks,
Ashok
 Thanks,
 Jose A. Delgado
 
 On 19/03/15 12:08, Ashok Raj Nagarajan wrote:
  Now that ANI is enabled by default, allow user to disable or enable ANI 
  feature
  from debugfs
 
  echo 0|1  /sys/kernel/debug/ieee80211/phyX/ath10k/ani_enable
 
  Signed-off-by: Ashok Raj Nagarajan arnag...@qti.qualcomm.com
  ---
  v2:
  Updated commit log
  Lock ar-ani_enabled (Kalle Valo)
  remove reduntant debug message (Kalle Valo)
 
   drivers/net/wireless/ath/ath10k/core.h  |  2 ++
   drivers/net/wireless/ath/ath10k/debug.c | 58 
  +
   drivers/net/wireless/ath/ath10k/mac.c   |  2 ++
   3 files changed, 62 insertions(+)
 
  diff --git a/drivers/net/wireless/ath/ath10k/core.h 
  b/drivers/net/wireless/ath/ath10k/core.h
  index 7cba781..29e0a8b 100644
  --- a/drivers/net/wireless/ath/ath10k/core.h
  +++ b/drivers/net/wireless/ath/ath10k/core.h
  @@ -510,6 +510,8 @@ struct ath10k {
  u32 ht_cap_info;
  u32 vht_cap_info;
  u32 num_rf_chains;
  +   /* protected by conf_mutex */
  +   bool ani_enabled;
   
  DECLARE_BITMAP(fw_features, ATH10K_FW_FEATURE_COUNT);
   
  diff --git a/drivers/net/wireless/ath/ath10k/debug.c 
  b/drivers/net/wireless/ath/ath10k/debug.c
  index 301081d..481e1cc 100644
  --- a/drivers/net/wireless/ath/ath10k/debug.c
  +++ b/drivers/net/wireless/ath/ath10k/debug.c
  @@ -1708,6 +1708,61 @@ static int ath10k_debug_cal_data_release(struct 
  inode *inode,
  return 0;
   }
   
  +static ssize_t ath10k_write_ani_enable(struct file *file,
  +  const char __user *user_buf,
  +  size_t count, loff_t *ppos)
  +{
  +   struct ath10k *ar = file-private_data;
  +   int ret;
  +   u8 enable;
  +
  +   if (kstrtou8_from_user(user_buf, count, 0, enable))
  +   return -EINVAL;
  +
  +   mutex_lock(ar-conf_mutex);
  +
  +   if (ar-ani_enabled == enable) {
  +   ret = count;
  +   goto exit;
  +   }
  +
  +   ret = ath10k_wmi_pdev_set_param(ar, ar-wmi.pdev_param-ani_enable,
  +   enable);
  +   if (ret) {
  +   ath10k_warn(ar, ani_enable failed from debugfs: %d\n, ret);
  +   goto exit;
  +   }
  +   ar-ani_enabled = enable;
  +
  +   ret = count;
  +
  +exit:
  +   mutex_unlock(ar-conf_mutex);
  +
  +   return ret;
  +}
  +
  +static ssize_t ath10k_read_ani_enable(struct file *file, char __user 
  *user_buf,
  + size_t count, loff_t *ppos)
  +{
  +   struct ath10k *ar = file-private_data;
  +   int len = 0;
  +   char buf[32];
  +
  +   len = scnprintf(buf, sizeof(buf) - len, %d\n,
  +   ar-ani_enabled);
  +
  +   return simple_read_from_buffer(user_buf, count, ppos, buf, len);
  +}
  +
  +static const struct file_operations fops_ani_enable = {
  +   .read = ath10k_read_ani_enable,
  +   .write = ath10k_write_ani_enable,
  +   .open = simple_open,
  +   .owner = THIS_MODULE,
  +   .llseek = default_llseek,
  +};
  +
   static const struct file_operations fops_cal_data = {
  .open = ath10k_debug_cal_data_open,
  .read = ath10k_debug_cal_data_read,
  @@ -2068,6 +2123,9 @@ int ath10k_debug_register(struct ath10k *ar)
  debugfs_create_file(cal_data, S_IRUSR, ar-debug.debugfs_phy,
  ar, fops_cal_data);
   
  +   debugfs_create_file(ani_enable, S_IRUSR | S_IWUSR,
  +   ar-debug.debugfs_phy, ar, fops_ani_enable);
  +
  debugfs_create_file(nf_cal_period, S_IRUSR | S_IWUSR,
  ar-debug.debugfs_phy, ar, fops_nf_cal_period);
   
  diff --git a/drivers/net/wireless/ath/ath10k/mac.c 
  b/drivers/net/wireless/ath/ath10k/mac.c
  index 380d4b1..366c96f 100644
  --- a/drivers/net/wireless/ath/ath10k/mac.c
  +++ b/drivers/net/wireless/ath/ath10k/mac.c
  @@ -2904,6 +2904,8 @@ static int ath10k_start(struct ieee80211_hw *hw)
  goto err_core_stop;
  }
   
  +   ar-ani_enabled = true;
  +
  ar-num_started_vdevs = 0;
  ath10k_regd_update(ar);
   
 
 
 -- 
 
 
 Jose Antonio Delgado Alfonso
 Chief Technology Officer
 
 Calle Itálica 1, 1ª Planta
 41900 Camas (Sevilla)
 
 Email: jose.delg...@aoifes.com mailto:jose.delg...@aoifes.com
 Tel: (+34) 955 228 533
 Tel2: (+34) 651 695 494
 Skype: jdelgadoalfonso
 Web: www.aoifes.com http://www.aoifes.com
 
 
 La información contenida en este correo es confidencial y puede ser
 privilegiada. Está dirigida exclusivamente a los destinatarios indicados
 arriba. Si Usted no es uno de los destinatarios, le queda totalmente
 prohibido el uso, distribución, publicación o copia de la información
 contenida en 

Re: Re: QCA6174 hw2.1?

2015-03-23 Thread Jason H


 Sent: Monday, March 23, 2015 at 4:23 AM
 From: Michal Kazior michal.kaz...@tieto.com
 To: Jason H jh...@gmx.com
 Cc: ath10k@lists.infradead.org ath10k@lists.infradead.org
 Subject: Re: Re: QCA6174 hw2.1?

 On 21 March 2015 at 21:31,  jh...@gmx.com wrote:
  is there anyway you could process these files for me?. I would be willing 
  to send you the files and go through some back and forth of feedback and 
  whatnot. The issue is I just don't think I have the time or the expertise 
  to devote to this. However I investigated exchanging  the laptop to get a  
  Linux compatible one, but its going to cost me money for the restocking 
  fee. On top of that the next user of this laptop will be disgruntled when 
  they find a non working copy of Linux on it. I investigated getting the 
  restore cd but Lenovo's charging $70 for the media. So if you could help I 
  would really appreciate it because this is the last thing that I need to 
  get working but I really need it.
 
  and we could also get this chipset supported. I saw I wasn't the only one 
  looking for Linux support for this driver.
 
 Thanks for willing to help. However I finally got my hands on the
 Killer 1525 card. I tried playing with it but I couldn't get ath10k to
 work with it yet.
 
 There's some firmware crash issue that needs investigating. Kalle's
 doing his best to sort this out internally.
 
 Hopefully we'll get this working soon and we'll let everyone know on
 the mailing list. I can understand your situation very well. I know it
 sucks.
 


Thanks however in my investigation, this was not the same as the Killer card.


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH v4 0/7] ath10k: add multi-channel support

2015-03-23 Thread Kalle Valo
Michal Kazior michal.kaz...@tieto.com writes:

 New qca6174 with wmi-tlv firmware supports
 multi-channel operation. To make use of it
 ath10k needs a few changes: implement mac80211's
 chanctx API and rework tx queue control a bit.

3-way merge fails:

Applying: ath10k: allow empty ssid vdev config
Applying: ath10k: implement chanctx API
error: short SHA1 7b3e6ca is ambiguous.
fatal: sha1 information is lacking or useless 
(drivers/net/wireless/ath/ath10k/wmi.c).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
Patch failed at 0002 ath10k: implement chanctx API

And no wonder, 7 chars is just too short SHA1 abbreviation. Is there any
way to make that longer?

Anyway, can you please rebase?

-- 
Kalle Valo

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH v4 5/6] ath10k: add wmi support for tdls

2015-03-23 Thread Kalle Valo
Marek Puzyniak marek.puzyn...@tieto.com writes:

 As a part of tdls implementation introduce
 tdls related wmi data structures, constant
 values and functions.

 Signed-off-by: Marek Puzyniak marek.puzyn...@tieto.com

This patch had non-trivial conflicts, please check carefully my
resolution in the pending branch.

  CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath10k/wmi.h
  CONFLICT (content): Merge conflict in 
drivers/net/wireless/ath/ath10k/wmi-tlv.h
  CONFLICT (content): Merge conflict in 
drivers/net/wireless/ath/ath10k/wmi-tlv.c
  CONFLICT (content): Merge conflict in 
drivers/net/wireless/ath/ath10k/wmi-ops.h

-- 
Kalle Valo

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH 1/2] ath10k: share board file loading code across FW APIs

2015-03-23 Thread Kalle Valo
Michal Kazior michal.kaz...@tieto.com writes:

 There's no need to implement the same thing twice.
 Reduce code duplication.

 Signed-off-by: Michal Kazior michal.kaz...@tieto.com

[...]

 @@ -730,6 +716,12 @@ static int ath10k_core_fetch_firmware_files(struct 
 ath10k *ar)
   /* calibration file is optional, don't check for any errors */
   ath10k_fetch_cal_file(ar);
  
 + ret = ath10k_core_fetch_board_file(ar);
 + if (ret) {
 + ath10k_err(ar, failed to fetch board file: %d\n, ret);
 + return ret;
 + }
 +
   ar-fw_api = 4;
   ath10k_dbg(ar, ATH10K_DBG_BOOT, trying fw api %d\n, ar-fw_api);

There was a conflict here, please check the resolution in the pending
branch.

-- 
Kalle Valo

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH v4 5/6] ath10k: add wmi support for tdls

2015-03-23 Thread Michal Kazior
On 22 March 2015 at 08:49, Arik Nemtsov a...@wizery.com wrote:
 On Fri, Mar 20, 2015 at 1:02 PM, Marek Puzyniak
 marek.puzyn...@tieto.com wrote:
 As a part of tdls implementation introduce
 tdls related wmi data structures, constant
 values and functions.

 Signed-off-by: Marek Puzyniak marek.puzyn...@tieto.com
 ---
  drivers/net/wireless/ath/ath10k/wmi-ops.h |  42 
  drivers/net/wireless/ath/ath10k/wmi-tlv.c | 153 
 ++
  drivers/net/wireless/ath/ath10k/wmi-tlv.h |  53 +++
  drivers/net/wireless/ath/ath10k/wmi.h |  37 
  4 files changed, 285 insertions(+)
 [...]
 +
 +   cmd = (void *)tlv-value;
 +   cmd-vdev_id = __cpu_to_le32(vdev_id);
 +   cmd-state = __cpu_to_le32(state);
 +   cmd-notification_interval_ms = __cpu_to_le32(5000);
 +   cmd-tx_discovery_threshold = __cpu_to_le32(100);
 +   cmd-tx_teardown_threshold = __cpu_to_le32(5);
 +   cmd-rssi_teardown_threshold = __cpu_to_le32(-75);
 +   cmd-rssi_delta = __cpu_to_le32(-20);
 +   cmd-tdls_options = __cpu_to_le32(options);
 +   cmd-tdls_peer_traffic_ind_window = __cpu_to_le32(2);
 +   cmd-tdls_peer_traffic_response_timeout_ms = __cpu_to_le32(5000);
 +   cmd-tdls_puapsd_mask = __cpu_to_le32(0xf);
 +   cmd-tdls_puapsd_inactivity_time_ms = __cpu_to_le32(0);
 +   cmd-tdls_puapsd_rx_frame_threshold = __cpu_to_le32(10);

 Do the above lines assume all TDLS peers support TDLS buffer-sta
 (which is required for peer UAPSD)? Especially the value of
 tdls_puapsd_mask.
 I can assure you not all peers support this :) For instance iwlwifi
 does not (for now).

 But I might be misinterpreting this - perhaps there some other code in
 the driver/FW that checks the peer's extended-capabilities IE for
 buffer-sta support (bit 28)?
 That would be the best option.

ath10k doesn't support buffer-sta as well. Firmware requires
additional tdls_options flags (WMI_TLV_TDLS_BUFFER_STA_EN and
WMI_TLV_TDLS_SLEEP_STA_EN) to be set before it considers these values.


Michał

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: Repeated firmware crash when admin down.

2015-03-23 Thread Michal Kazior
On 20 March 2015 at 22:46, Ben Greear gree...@candelatech.com wrote:
 Someone reported this bug to me.  It is repeatable on various firmware,
 including my own and official QCA firmware.

 I am not certain of the hardware platform, but I think it might be a Ventana
 imx6 board.

 Kernel is based on 3.19-mumble.

 I cannot reproduce on x86 (but testing on 3.17 kernel and different flavour of
 Linux, so who knows.)

 They simply admin-down wlanX, and then the firmware crashes over and over.
 They cannot get any register dump.
 When they admin up the interface, the crashes stop and system resumes 
 normally.

 I had them try it with my firmware and a driver patch
 which will attempt to do ping-pong register dump
 over pci register reads in case the firmware's normal PCI messaging transport
 is down, but the register value always reads as '0xdeadbeef'.

 Driver patch is linked below, 'val' is 0xdeadbeef after the million read 
 attempts.

If you read MMIO registers while the device sleeps you get 0xdeadbeef.
I've recently posted a patch which should fix some of these[1].

I'm guessing the imx6 board could be using shared irq and the line is
shared with some other (active) device(s). This would lead to checking
registers in ath10k after ath10k_pci_sleep(). In that case my patch
should be sufficient.

[1]: 
https://github.com/kvalo/ath/commit/320e14b8db51a2d635897d521db4e5c79c3a8390


Michał

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


[PATCH] ath10k: fix aid setup in station mode

2015-03-23 Thread Michal Kazior
While debugging something else I noticed AID was
set to 0. This could lead to powersave issues in
station mode. Maybe this isn't really necessary
but set it properly just to be sure.

Signed-off-by: Michal Kazior michal.kaz...@tieto.com
---
 drivers/net/wireless/ath/ath10k/mac.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath10k/mac.c 
b/drivers/net/wireless/ath/ath10k/mac.c
index 506e886..f2b4a49 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -1605,12 +1605,18 @@ static void ath10k_peer_assoc_h_basic(struct ath10k *ar,
  struct wmi_peer_assoc_complete_arg *arg)
 {
struct ath10k_vif *arvif = ath10k_vif_to_arvif(vif);
+   u32 aid;
 
lockdep_assert_held(ar-conf_mutex);
 
+   if (vif-type == NL80211_IFTYPE_STATION)
+   aid = vif-bss_conf.aid;
+   else
+   aid = sta-aid;
+
ether_addr_copy(arg-addr, sta-addr);
arg-vdev_id = arvif-vdev_id;
-   arg-peer_aid = sta-aid;
+   arg-peer_aid = aid;
arg-peer_flags |= WMI_PEER_AUTH;
arg-peer_listen_intval = ath10k_peer_assoc_h_listen_intval(ar, vif);
arg-peer_num_spatial_streams = 1;
-- 
2.1.4


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: Re: QCA6174 hw2.1?

2015-03-23 Thread Michal Kazior
On 21 March 2015 at 21:31,  jh...@gmx.com wrote:
 is there anyway you could process these files for me?. I would be willing to 
 send you the files and go through some back and forth of feedback and 
 whatnot. The issue is I just don't think I have the time or the expertise to 
 devote to this. However I investigated exchanging  the laptop to get a  Linux 
 compatible one, but its going to cost me money for the restocking fee. On top 
 of that the next user of this laptop will be disgruntled when they find a non 
 working copy of Linux on it. I investigated getting the restore cd but 
 Lenovo's charging $70 for the media. So if you could help I would really 
 appreciate it because this is the last thing that I need to get working but I 
 really need it.

 and we could also get this chipset supported. I saw I wasn't the only one 
 looking for Linux support for this driver.

Thanks for willing to help. However I finally got my hands on the
Killer 1525 card. I tried playing with it but I couldn't get ath10k to
work with it yet.

There's some firmware crash issue that needs investigating. Kalle's
doing his best to sort this out internally.

Hopefully we'll get this working soon and we'll let everyone know on
the mailing list. I can understand your situation very well. I know it
sucks.


Michał

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: Repeated firmware crash when admin down.

2015-03-23 Thread Ben Greear

The user reports this does indeed fix the problem.

Thanks,
Ben

On 03/22/2015 11:37 PM, Michal Kazior wrote:

On 20 March 2015 at 22:46, Ben Greear gree...@candelatech.com wrote:

Someone reported this bug to me.  It is repeatable on various firmware,
including my own and official QCA firmware.

I am not certain of the hardware platform, but I think it might be a Ventana
imx6 board.

Kernel is based on 3.19-mumble.

I cannot reproduce on x86 (but testing on 3.17 kernel and different flavour of
Linux, so who knows.)

They simply admin-down wlanX, and then the firmware crashes over and over.
They cannot get any register dump.
When they admin up the interface, the crashes stop and system resumes normally.

I had them try it with my firmware and a driver patch
which will attempt to do ping-pong register dump
over pci register reads in case the firmware's normal PCI messaging transport
is down, but the register value always reads as '0xdeadbeef'.

Driver patch is linked below, 'val' is 0xdeadbeef after the million read 
attempts.


If you read MMIO registers while the device sleeps you get 0xdeadbeef.
I've recently posted a patch which should fix some of these[1].

I'm guessing the imx6 board could be using shared irq and the line is
shared with some other (active) device(s). This would lead to checking
registers in ath10k after ath10k_pci_sleep(). In that case my patch
should be sufficient.

[1]: 
https://github.com/kvalo/ath/commit/320e14b8db51a2d635897d521db4e5c79c3a8390


Michał



--
Ben Greear gree...@candelatech.com
Candela Technologies Inc  http://www.candelatech.com

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k