[PATCH 1/2] ath10k: share board file loading code across FW APIs
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
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
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
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
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
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
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
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
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?
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
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
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
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
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.
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
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?
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.
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