* [PATCH 2/2] ath10k: handle tdls peer events
From: mpubbise @ 2017-10-10 6:50 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless, Manikanta Pubbisetty
In-Reply-To: <1507618202-25473-1-git-send-email-mpubbise@qti.qualcomm.com>
From: Manikanta Pubbisetty <mpubbise@qti.qualcomm.com>
Handle tdls peer events from the target. TDLS events for the peer
could be discover, teardown, etc. As of now, adding the logic to
handle tdls teardown events alone.
Teardown due to peer traffic indication(PTR) timeout is one such
teardown event from the target.
Tested this change on QCA9888 with 10.4-3.5.1-00018 fw version.
Signed-off-by: Manikanta Pubbisetty <mpubbise@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/wmi.c | 59 +++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 38a9708..344f19c 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -29,6 +29,7 @@
#include "p2p.h"
#include "hw.h"
#include "hif.h"
+#include "txrx.h"
#define ATH10K_WMI_BARRIER_ECHO_ID 0xBA991E9
#define ATH10K_WMI_BARRIER_TIMEOUT_HZ (3 * HZ)
@@ -4456,6 +4457,61 @@ void ath10k_wmi_event_pdev_tpc_config(struct ath10k *ar, struct sk_buff *skb)
__le32_to_cpu(ev->rate_max));
}
+void ath10k_wmi_handle_tdls_peer_event(struct ath10k *ar, struct sk_buff *skb)
+{
+ struct wmi_tdls_peer_event *ev;
+ struct ath10k_peer *peer;
+ struct ath10k_vif *arvif;
+ u8 reason;
+
+ ev = (struct wmi_tdls_peer_event *)skb->data;
+
+ spin_lock_bh(&ar->data_lock);
+ peer = ath10k_peer_find(ar, ev->vdev_id, ev->peer_macaddr.addr);
+ spin_unlock_bh(&ar->data_lock);
+
+ if (!peer) {
+ ath10k_warn(ar, "failed to find peer entry for %pM\n",
+ ev->peer_macaddr.addr);
+ return;
+ }
+
+ switch (ev->peer_status) {
+ case WMI_TDLS_SHOULD_TEARDOWN:
+ switch (ev->peer_reason) {
+ case WMI_TDLS_TEARDOWN_REASON_PTR_TIMEOUT:
+ case WMI_TDLS_TEARDOWN_REASON_NO_RESPONSE:
+ case WMI_TDLS_TEARDOWN_REASON_RSSI:
+ reason = WLAN_REASON_TDLS_TEARDOWN_UNREACHABLE;
+ break;
+ default:
+ reason = WLAN_REASON_TDLS_TEARDOWN_UNSPECIFIED;
+ break;
+ }
+
+ arvif = ath10k_get_arvif(ar, ev->vdev_id);
+ if (!arvif) {
+ ath10k_warn(ar, "received tdls peer event for invalid vdev id %u\n",
+ ev->vdev_id);
+ return;
+ }
+
+ ieee80211_tdls_oper_request(arvif->vif, ev->peer_macaddr.addr,
+ NL80211_TDLS_TEARDOWN, reason,
+ GFP_ATOMIC);
+
+ ath10k_dbg(ar, ATH10K_DBG_WMI,
+ "received tdls teardown event for peer %pM reason %u\n",
+ ev->peer_macaddr.addr, ev->peer_reason);
+ break;
+ default:
+ ath10k_dbg(ar, ATH10K_DBG_WMI,
+ "received unknown tdls peer event %u\n",
+ ev->peer_status);
+ break;
+ }
+}
+
void ath10k_wmi_event_pdev_ftm_intg(struct ath10k *ar, struct sk_buff *skb)
{
ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_PDEV_FTM_INTG_EVENTID\n");
@@ -5477,6 +5533,9 @@ static void ath10k_wmi_10_4_op_rx(struct ath10k *ar, struct sk_buff *skb)
case WMI_10_4_PDEV_TPC_CONFIG_EVENTID:
ath10k_wmi_event_pdev_tpc_config(ar, skb);
break;
+ case WMI_10_4_TDLS_PEER_EVENTID:
+ ath10k_wmi_handle_tdls_peer_event(ar, skb);
+ break;
default:
ath10k_warn(ar, "Unknown eventid: %d\n", id);
break;
--
1.7.9.5
^ permalink raw reply related
* 4.14.0-rc3 iwlwifi: Hardware became unavailable during restart
From: Seraphime Kirkovski @ 2017-10-10 7:44 UTC (permalink / raw)
To: linux-wireless; +Cc: linux-kernel
Hello,
I've got this splat after a couple of suspend-resume cycles on my
HP-laptop. I haven't had the time to bisect or test other rcs for now.
Pasting some logs before the actual WARN_ON, as they may be relevant.
Just after the splat the connection is successfully reestablished.
[14293.758404] iwlwifi 0000:24:00.0: Error sending REPLY_SCAN_ABORT_CMD:
time out after 2000ms.
[14293.758429] iwlwifi 0000:24:00.0: Current CMD queue read_ptr 67 write_ptr 68
[14293.758518] iwlwifi 0000:24:00.0: Loaded firmware version: 18.168.6.1
[14293.758734] iwlwifi 0000:24:00.0: 0x00000000 | OK
[14293.758740] iwlwifi 0000:24:00.0: 0x00000000 | uPc
[14293.758746] iwlwifi 0000:24:00.0: 0x00000000 | branchlink1
[14293.758750] iwlwifi 0000:24:00.0: 0x00000000 | branchlink2
[14293.758756] iwlwifi 0000:24:00.0: 0x00000000 | interruptlink1
[14293.758762] iwlwifi 0000:24:00.0: 0x00000000 | interruptlink2
[14293.758767] iwlwifi 0000:24:00.0: 0x00000000 | data1
[14293.758773] iwlwifi 0000:24:00.0: 0x00000000 | data2
[14293.758778] iwlwifi 0000:24:00.0: 0x00000000 | line
[14293.758784] iwlwifi 0000:24:00.0: 0x00000000 | beacon time
[14293.758789] iwlwifi 0000:24:00.0: 0x00000000 | tsf low
[14293.758795] iwlwifi 0000:24:00.0: 0x00000000 | tsf hi
[14293.758800] iwlwifi 0000:24:00.0: 0x00000000 | time gp1
[14293.758805] iwlwifi 0000:24:00.0: 0x00000000 | time gp2
[14293.758810] iwlwifi 0000:24:00.0: 0x00000000 | time gp3
[14293.758816] iwlwifi 0000:24:00.0: 0x00000000 | uCode version
[14293.758821] iwlwifi 0000:24:00.0: 0x00000000 | hw version
[14293.758827] iwlwifi 0000:24:00.0: 0x00000000 | board version
[14293.758833] iwlwifi 0000:24:00.0: 0x00000000 | hcmd
[14293.758838] iwlwifi 0000:24:00.0: 0x00000000 | isr0
[14293.758844] iwlwifi 0000:24:00.0: 0x00000000 | isr1
[14293.758850] iwlwifi 0000:24:00.0: 0x00000000 | isr2
[14293.758855] iwlwifi 0000:24:00.0: 0x00000000 | isr3
[14293.758861] iwlwifi 0000:24:00.0: 0x00000000 | isr4
[14293.758866] iwlwifi 0000:24:00.0: 0x00000000 | isr_pref
[14293.758872] iwlwifi 0000:24:00.0: 0x00000000 | wait_event
[14293.758877] iwlwifi 0000:24:00.0: 0x00000000 | l2p_control
[14293.758882] iwlwifi 0000:24:00.0: 0x00000000 | l2p_duration
[14293.758888] iwlwifi 0000:24:00.0: 0x00000000 | l2p_mhvalid
[14293.758894] iwlwifi 0000:24:00.0: 0x00000000 | l2p_addr_match
[14293.758899] iwlwifi 0000:24:00.0: 0x00000000 | lmpm_pmg_sel
[14293.758905] iwlwifi 0000:24:00.0: 0x00000000 | timestamp
[14293.758911] iwlwifi 0000:24:00.0: 0x00000000 | flow_handler
[14293.759009] iwlwifi 0000:24:00.0: Start IWL Event Log Dump: nothing in log
[14293.759028] iwlwifi 0000:24:00.0: Command REPLY_RXON failed: FW Error
[14293.759034] iwlwifi 0000:24:00.0: Error clearing ASSOC_MSK on BSS (-5)
[14293.771378] ieee80211 phy0: Hardware restart was requested
[14293.777841] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[14294.082086] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[14294.184741] IPv6: ADDRCONF(NETDEV_UP): wlo1: link is not ready
[14294.191364] iwlwifi 0000:24:00.0: Radio type=0x1-0x2-0x0
[14299.198235] iwlwifi 0000:24:00.0: Failed to load firmware chunk!
[14299.198255] iwlwifi 0000:24:00.0: Could not load the [0] uCode section
[14299.210483] iwlwifi 0000:24:00.0: Failed to run INIT ucode: -110
[14299.210534] iwlwifi 0000:24:00.0: Unable to initialize device.
[14299.210537] Hardware became unavailable during restart.
[14299.210582] ------------[ cut here ]------------
[14299.210639] WARNING: CPU: 2 PID: 13367 at net/mac80211/util.c:1866 ieee80211_reconfig+0x415/0x1f50 [mac80211]
[14299.210640] Modules linked in: bridge stp llc cuse vhost_net tun vhost tap fuse btrfs xor zstd_decompress zstd_compress xxhash zlib_deflate raid6_pq ipt_MASQUERADE nf_nat_masquerade_ipv4 xt_addrtype iptable_nat nf_nat_ipv4 nf_nat uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 x86_pkg_temp_thermal kvm_intel videobuf2_core kvm irqbypass iwldvm crc32_pclmul mac80211 iwlwifi input_leds cfg80211 rfkill i915 button ext4 mbcache jbd2 fscrypto ahci libahci libata ehci_pci ehci_hcd
[14299.210678] CPU: 2 PID: 13367 Comm: kworker/2:1 Not tainted 4.14.0-rc3+ #2
[14299.210680] Hardware name: Hewlett-Packard HP EliteBook 2560p/162B, BIOS 68SSU Ver. F.02 07/26/2011
[14299.210717] Workqueue: events_freezable ieee80211_restart_work [mac80211]
[14299.210720] task: ffff8801f0ece740 task.stack: ffff8801f1d78000
[14299.210757] RIP: 0010:ieee80211_reconfig+0x415/0x1f50 [mac80211]
[14299.210759] RSP: 0018:ffff8801f1d7fc78 EFLAGS: 00010282
[14299.210761] RAX: 000000000000002b RBX: ffff8801f2c28c16 RCX: 0000000000000000
[14299.210763] RDX: 000000000000002b RSI: dffffc0000000000 RDI: ffffed003e3aff85
[14299.210765] RBP: ffff8801f1d7fda8 R08: fffffbfff05924fb R09: ffffffff82c927d7
[14299.210767] R10: ffff8801f2c2a632 R11: fffffbfff05924fb R12: ffff8801f2c28fb8
[14299.210768] R13: ffff8801f2c293d8 R14: ffff8801f2c28780 R15: ffff8801f2c28780
[14299.210770] FS: 0000000000000000(0000) GS:ffff8801f5c80000(0000) knlGS:0000000000000000
[14299.210772] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[14299.210773] CR2: 00007fce94113019 CR3: 00000001efe42004 CR4: 00000000000606e0
[14299.210774] Call Trace:
[14299.210781] ? get_work_pool+0x12/0x50
[14299.210783] ? get_work_pool+0x12/0x50
[14299.210786] ? flush_work+0x8a/0x2b0
[14299.210788] ? work_busy+0xe0/0xe0
[14299.210828] ? ieee80211_stop_device+0x60/0x60 [mac80211]
[14299.210864] ieee80211_restart_work+0xc2/0xf0 [mac80211]
[14299.210867] process_one_work+0x3f2/0x760
[14299.210872] worker_thread+0x90/0x710
[14299.210876] kthread+0x18c/0x1e0
[14299.210879] ? trace_event_raw_event_workqueue_work+0x120/0x120
[14299.210881] ? kthread_create_on_node+0xb0/0xb0
[14299.210884] ret_from_fork+0x22/0x30
[14299.210887] Code: e0 41 c6 87 94 04 00 00 00 4c 89 ff e8 45 72 fa ff 85 c0 89 85 70 ff ff ff 0f 84 ac 01 00 00 48 c7 c7 20 a0 71 a0 e8 5c 50 a5 e0 <0f> ff e9 35 fd ff ff 48 89 df e8 3c 6c 03 00 e9 9d fe ff ff 4d
[14299.210924] ---[ end trace 5ddc2533368c0064 ]---
[14299.211014] wlo1: Failed check-sdata-in-driver check, flags: 0x0
[14299.211045] ------------[ cut here ]------------
[14299.211102] WARNING: CPU: 2 PID: 13367 at net/mac80211/driver-ops.h:17 drv_remove_interface+0x1b3/0x1c0 [mac80211]
[14299.211104] Modules linked in: bridge stp llc cuse vhost_net tun vhost tap fuse btrfs xor zstd_decompress zstd_compress xxhash zlib_deflate raid6_pq ipt_MASQUERADE nf_nat_masquerade_ipv4 xt_addrtype iptable_nat nf_nat_ipv4 nf_nat uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 x86_pkg_temp_thermal kvm_intel videobuf2_core kvm irqbypass iwldvm crc32_pclmul mac80211 iwlwifi input_leds cfg80211 rfkill i915 button ext4 mbcache jbd2 fscrypto ahci libahci libata ehci_pci ehci_hcd
[14299.211138] CPU: 2 PID: 13367 Comm: kworker/2:1 Tainted: G W 4.14.0-rc3+ #2
[14299.211140] Hardware name: Hewlett-Packard HP EliteBook 2560p/162B, BIOS 68SSU Ver. F.02 07/26/2011
[14299.211173] Workqueue: events_freezable ieee80211_restart_work [mac80211]
[14299.211175] task: ffff8801f0ece740 task.stack: ffff8801f1d78000
[14299.211209] RIP: 0010:drv_remove_interface+0x1b3/0x1c0 [mac80211]
[14299.211210] RSP: 0018:ffff8801f1d7f888 EFLAGS: 00010282
[14299.211212] RAX: 0000000000000035 RBX: 0000000000000000 RCX: 0000000000000000
[14299.211214] RDX: 0000000000000035 RSI: dffffc0000000000 RDI: ffffed003e3aff07
[14299.211215] RBP: ffff8801f1d7f8b0 R08: fffffbfff0592651 R09: ffffffff82c93285
[14299.211217] R10: ffff8801f5ca094b R11: fffffbfff0592651 R12: ffff8801f32fab40
[14299.211218] R13: ffff8801f2c28780 R14: ffff8801f2c28f10 R15: ffff8801f32fab30
[14299.211220] FS: 0000000000000000(0000) GS:ffff8801f5c80000(0000) knlGS:0000000000000000
[14299.211222] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[14299.211223] CR2: 00007fce94113019 CR3: 00000001efe42004 CR4: 00000000000606e0
[14299.211224] Call Trace:
[14299.211260] ieee80211_do_stop+0x8fd/0xeb0 [mac80211]
[14299.211264] ? inetdev_event+0x9e/0x730
[14299.211300] ? ieee80211_add_virtual_monitor+0x3e0/0x3e0 [mac80211]
[14299.211303] ? preempt_count_sub+0x18/0xc0
[14299.211306] ? __local_bh_enable_ip+0x3e/0x70
[14299.211308] ? preempt_count_sub+0x18/0xc0
[14299.211311] ? __local_bh_enable_ip+0x3e/0x70
[14299.211314] ? _raw_spin_unlock_bh+0x23/0x30
[14299.211317] ? dev_deactivate_many+0x335/0x370
[14299.211352] ieee80211_stop+0x1a/0x20 [mac80211]
[14299.211356] __dev_close_many+0xfe/0x190
[14299.211359] ? call_netdevice_notifiers+0x70/0x70
[14299.211362] ? do_trap+0xd6/0x1e0
[14299.211365] dev_close_many+0x158/0x2a0
[14299.211368] ? netdev_notify_peers+0xa0/0xa0
[14299.211371] ? vprintk_emit+0x271/0x2b0
[14299.211373] dev_close.part.100+0x9d/0xe0
[14299.211376] ? dev_close_many+0x2a0/0x2a0
[14299.211378] ? do_invalid_op+0x20/0x30
[14299.211381] ? invalid_op+0x18/0x20
[14299.211383] dev_close+0x2a/0x30
[14299.211424] cfg80211_shutdown_all_interfaces+0x54/0xe0 [cfg80211]
[14299.211462] ieee80211_handle_reconfig_failure+0x11f/0x140 [mac80211]
[14299.211500] ieee80211_reconfig+0x159/0x1f50 [mac80211]
[14299.211503] ? get_work_pool+0x12/0x50
[14299.211505] ? get_work_pool+0x12/0x50
[14299.211507] ? flush_work+0x8a/0x2b0
[14299.211510] ? work_busy+0xe0/0xe0
[14299.211547] ? ieee80211_stop_device+0x60/0x60 [mac80211]
[14299.211582] ieee80211_restart_work+0xc2/0xf0 [mac80211]
[14299.211584] process_one_work+0x3f2/0x760
[14299.211588] worker_thread+0x90/0x710
[14299.211591] kthread+0x18c/0x1e0
[14299.211594] ? trace_event_raw_event_workqueue_work+0x120/0x120
[14299.211596] ? kthread_create_on_node+0xb0/0xb0
[14299.211599] ret_from_fork+0x22/0x30
[14299.211601] Code: 24 e0 01 00 00 49 81 c4 00 02 00 00 e8 f7 23 c4 e0 49 8b 74 24 e0 89 da 48 c7 c7 e0 4c 71 a0 48 85 f6 49 0f 44 f4 e8 3e d5 aa e0 <0f> ff 5b 41 5c 41 5d 41 5e 41 5f 5d c3 66 66 66 66 90 55 48 89
[14299.211638] ---[ end trace 5ddc2533368c0065 ]---
[14299.211665] ------------[ cut here ]------------
[14299.211699] WARNING: CPU: 2 PID: 13367 at net/mac80211/driver-ops.c:39 drv_stop+0x1a9/0x1c0 [mac80211]
[14299.211699] Modules linked in: bridge stp llc cuse vhost_net tun vhost tap fuse btrfs xor zstd_decompress zstd_compress xxhash zlib_deflate raid6_pq ipt_MASQUERADE nf_nat_masquerade_ipv4 xt_addrtype iptable_nat nf_nat_ipv4 nf_nat uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 x86_pkg_temp_thermal kvm_intel videobuf2_core kvm irqbypass iwldvm crc32_pclmul mac80211 iwlwifi input_leds cfg80211 rfkill i915 button ext4 mbcache jbd2 fscrypto ahci libahci libata ehci_pci ehci_hcd
[14299.211729] CPU: 2 PID: 13367 Comm: kworker/2:1 Tainted: G W 4.14.0-rc3+ #2
[14299.211731] Hardware name: Hewlett-Packard HP EliteBook 2560p/162B, BIOS 68SSU Ver. F.02 07/26/2011
[14299.211763] Workqueue: events_freezable ieee80211_restart_work [mac80211]
[14299.211765] task: ffff8801f0ece740 task.stack: ffff8801f1d78000
[14299.211798] RIP: 0010:drv_stop+0x1a9/0x1c0 [mac80211]
[14299.211800] RSP: 0018:ffff8801f1d7f878 EFLAGS: 00010246
[14299.211802] RAX: 0000000000000000 RBX: ffff8801f2c28780 RCX: ffffffffa0665f72
[14299.211803] RDX: 1ffff1003e585182 RSI: dffffc0000000000 RDI: ffff8801f2c28c14
[14299.211805] RBP: ffff8801f1d7f898 R08: 0000000000000000 R09: 0000000000000000
[14299.211806] R10: ffff8801f1d7f8a8 R11: fffffbfff0592651 R12: ffff8801f2c28780
[14299.211808] R13: ffff8801f2c28c14 R14: ffff8801f2c28f10 R15: 0000000000000010
[14299.211809] FS: 0000000000000000(0000) GS:ffff8801f5c80000(0000) knlGS:0000000000000000
[14299.211811] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[14299.211812] CR2: 00007fce94113019 CR3: 00000001efe42004 CR4: 00000000000606e0
[14299.211813] Call Trace:
[14299.211851] ieee80211_stop_device+0x4f/0x60 [mac80211]
[14299.211887] ieee80211_do_stop+0x8e0/0xeb0 [mac80211]
[14299.211889] ? inetdev_event+0x9e/0x730
[14299.211926] ? ieee80211_add_virtual_monitor+0x3e0/0x3e0 [mac80211]
[14299.211928] ? preempt_count_sub+0x18/0xc0
[14299.211930] ? __local_bh_enable_ip+0x3e/0x70
[14299.211932] ? preempt_count_sub+0x18/0xc0
[14299.211935] ? __local_bh_enable_ip+0x3e/0x70
[14299.211938] ? _raw_spin_unlock_bh+0x23/0x30
[14299.211940] ? dev_deactivate_many+0x335/0x370
[14299.211976] ieee80211_stop+0x1a/0x20 [mac80211]
[14299.211979] __dev_close_many+0xfe/0x190
[14299.211982] ? call_netdevice_notifiers+0x70/0x70
[14299.211984] ? do_trap+0xd6/0x1e0
[14299.211987] dev_close_many+0x158/0x2a0
[14299.211990] ? netdev_notify_peers+0xa0/0xa0
[14299.211992] ? vprintk_emit+0x271/0x2b0
[14299.211995] dev_close.part.100+0x9d/0xe0
[14299.211997] ? dev_close_many+0x2a0/0x2a0
[14299.212000] ? do_invalid_op+0x20/0x30
[14299.212002] ? invalid_op+0x18/0x20
[14299.212004] dev_close+0x2a/0x30
[14299.212037] cfg80211_shutdown_all_interfaces+0x54/0xe0 [cfg80211]
[14299.212075] ieee80211_handle_reconfig_failure+0x11f/0x140 [mac80211]
[14299.212112] ieee80211_reconfig+0x159/0x1f50 [mac80211]
[14299.212115] ? get_work_pool+0x12/0x50
[14299.212117] ? get_work_pool+0x12/0x50
[14299.212119] ? flush_work+0x8a/0x2b0
[14299.212122] ? work_busy+0xe0/0xe0
[14299.212159] ? ieee80211_stop_device+0x60/0x60 [mac80211]
[14299.212193] ieee80211_restart_work+0xc2/0xf0 [mac80211]
[14299.212196] process_one_work+0x3f2/0x760
[14299.212200] worker_thread+0x90/0x710
[14299.212203] kthread+0x18c/0x1e0
[14299.212206] ? trace_event_raw_event_workqueue_work+0x120/0x120
[14299.212208] ? kthread_create_on_node+0xb0/0xb0
[14299.212211] ret_from_fork+0x22/0x30
[14299.212213] Code: 41 ff d6 4c 89 e7 e8 97 29 c4 e0 4d 8b 34 24 4d 85 f6 75 d6 65 ff 0d e7 f2 9a 5f 0f 85 bf fe ff ff e8 89 b7 99 e0 e9 b5 fe ff ff <0f> ff 5b 41 5c 41 5d 41 5e 5d c3 66 90 66 2e 0f 1f 84 00 00 00
[14299.212250] ---[ end trace 5ddc2533368c0066 ]---
^ permalink raw reply
* Re: Contributing to Linux-wireless drivers.
From: Johannes Berg @ 2017-10-10 7:46 UTC (permalink / raw)
To: Himanshu Jha, linux-wireless
In-Reply-To: <20171010060504.GA3130@himanshu-Vostro-3559>
On Tue, 2017-10-10 at 11:35 +0530, Himanshu Jha wrote:
>
> The wiki page https://wireless.wiki.kernel.org/ is not working
> correctly, for every page it shows
>
> "This topic does not exist yet
> You've followed a link to a topic that doesn't exist yet. If
> permissions
> allow, you may create it by clicking on “Create this page”.
> Earlier I used to visit this without any issues, don't know what is
> the problem now ?
FWIW, I fixed this - some idiot deleted almost all pages on the wiki.
johannes
^ permalink raw reply
* [PATCH 0/5] Add TDLS feature for ath10k
From: yintang @ 2017-10-10 7:55 UTC (permalink / raw)
To: ath10k-ath10k; +Cc: linux-wireless
In-Reply-To: <TDLS for ath10k patch V4>
From: Yingying Tang <yintang@qti.qualcomm.com>
This patchset is for Rome PCIE chip, it will not affect other hardware
Yingying Tang (5):
mac80211: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer inactivity detection
ath10k: Avoid to set WEP key for TDLS peer
ath10k: Fix TDLS peer TX data failure issue on encryped AP
drivers/net/wireless/ath/ath10k/mac.c | 9 ++++-
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 55 +++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/wmi-tlv.h | 23 ++++++++++++
drivers/net/wireless/ath/ath10k/wmi.h | 1 +
include/net/cfg80211.h | 3 ++
net/mac80211/tdls.c | 5 ++-
6 files changed, 94 insertions(+), 2 deletions(-)
--
1.7.9.5
^ permalink raw reply
* [PATCH 0/5] Add TDLS feature for ath10k
From: yintang @ 2017-10-10 7:55 UTC (permalink / raw)
To: ath10k-ath10k; +Cc: linux-wireless
In-Reply-To: <1507622125-8841-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
This patchset is for Rome PCIE chip, it will not affect other hardware
Yingying Tang (5):
mac80211: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer inactivity detection
ath10k: Avoid to set WEP key for TDLS peer
ath10k: Fix TDLS peer TX data failure issue on encryped AP
drivers/net/wireless/ath/ath10k/mac.c | 9 ++++-
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 55 +++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/wmi-tlv.h | 23 ++++++++++++
drivers/net/wireless/ath/ath10k/wmi.h | 1 +
include/net/cfg80211.h | 3 ++
net/mac80211/tdls.c | 5 ++-
6 files changed, 94 insertions(+), 2 deletions(-)
--
1.7.9.5
^ permalink raw reply
* [PATCH 1/5] mac80211: Enable TDLS peer buffer STA feature
From: yintang @ 2017-10-10 7:55 UTC (permalink / raw)
To: ath10k-ath10k; +Cc: linux-wireless
In-Reply-To: <1507622125-8841-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
Enable TDLS peer buffer STA feature.
Set extended capability bit to enable buffer STA when driver
support it.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
include/net/cfg80211.h | 3 +++
net/mac80211/tdls.c | 5 ++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index f12fa52..edefc25 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -3249,6 +3249,8 @@ struct cfg80211_ops {
* beaconing mode (AP, IBSS, Mesh, ...).
* @WIPHY_FLAG_HAS_STATIC_WEP: The device supports static WEP key installation
* before connection.
+ * @WIPHY_FLAG_SUPPORT_TDLS_BUFFER_ST: Device support buffer STA when TDLS is
+ * established.
*/
enum wiphy_flags {
/* use hole at 0 */
@@ -3275,6 +3277,7 @@ enum wiphy_flags {
WIPHY_FLAG_SUPPORTS_5_10_MHZ = BIT(22),
WIPHY_FLAG_HAS_CHANNEL_SWITCH = BIT(23),
WIPHY_FLAG_HAS_STATIC_WEP = BIT(24),
+ WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA = BIT(25),
};
/**
diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c
index 91093d4..f99e379 100644
--- a/net/mac80211/tdls.c
+++ b/net/mac80211/tdls.c
@@ -49,6 +49,8 @@ static void ieee80211_tdls_add_ext_capab(struct ieee80211_sub_if_data *sdata,
!ifmgd->tdls_wider_bw_prohibited;
struct ieee80211_supported_band *sband = ieee80211_get_sband(sdata);
bool vht = sband && sband->vht_cap.vht_supported;
+ bool buffer_sta =
+ local->hw.wiphy->flags & WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA;
u8 *pos = skb_put(skb, 10);
*pos++ = WLAN_EID_EXT_CAPABILITY;
@@ -56,7 +58,8 @@ static void ieee80211_tdls_add_ext_capab(struct ieee80211_sub_if_data *sdata,
*pos++ = 0x0;
*pos++ = 0x0;
*pos++ = 0x0;
- *pos++ = chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0;
+ *pos++ = (chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0) |
+ (buffer_sta ? WLAN_EXT_CAPA4_TDLS_BUFFER_STA : 0);
*pos++ = WLAN_EXT_CAPA5_TDLS_ENABLED;
*pos++ = 0;
*pos++ = 0;
--
1.7.9.5
^ permalink raw reply related
* [PATCH 2/5] ath10k: Enable TDLS peer buffer STA feature
From: yintang @ 2017-10-10 7:55 UTC (permalink / raw)
To: ath10k-ath10k; +Cc: linux-wireless
In-Reply-To: <1507622125-8841-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
Enable TDLS peer buffer STA feature.
QCA6174 firmware(version: WLAN.RM.4.4) support TDLS peer buffer STA,
it reports this capability through wmi service map in wmi service ready
event. Set related parameter in TDLS WMI command to enable this feature.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 3 +++
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 3 +++
2 files changed, 6 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 5683f1a..399f9ba 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8204,6 +8204,9 @@ int ath10k_mac_register(struct ath10k *ar)
ieee80211_hw_set(ar->hw, TDLS_WIDER_BW);
}
+ if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
+ ar->hw->wiphy->flags |= WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA;
+
ar->hw->wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
ar->hw->wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
ar->hw->wiphy->max_remain_on_channel_duration = 5000;
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
index 7616c1c..f60b46e 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -2747,6 +2747,9 @@ static void *ath10k_wmi_tlv_put_wmm(void *ptr,
*/
u32 options = 0;
+ if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
+ options |= WMI_TLV_TDLS_BUFFER_STA_EN;
+
len = sizeof(*tlv) + sizeof(*cmd);
skb = ath10k_wmi_alloc_skb(ar, len);
if (!skb)
--
1.7.9.5
^ permalink raw reply related
* [PATCH 3/5] ath10k: Enable TDLS peer inactivity detection
From: yintang @ 2017-10-10 7:55 UTC (permalink / raw)
To: ath10k-ath10k; +Cc: linux-wireless
In-Reply-To: <1507622125-8841-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
Enable TDLS peer inactivity detetion feature.
QCA6174 firmware(version: WLAN.RM.4.4) support TDLS link inactivity detecting.
Set related parameters in TDLS WMI command to enable this feature.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 52 +++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/wmi-tlv.h | 23 +++++++++++++
drivers/net/wireless/ath/ath10k/wmi.h | 1 +
3 files changed, 76 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
index f60b46e..63bb2c4 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -412,6 +412,49 @@ static int ath10k_wmi_tlv_event_tx_pause(struct ath10k *ar,
return 0;
}
+void ath10k_wmi_event_tdls_peer(struct ath10k *ar, struct sk_buff *skb)
+{
+ struct ieee80211_sta *station;
+ const struct wmi_tlv_tdls_peer_event *ev;
+ const void **tb;
+ struct ath10k_vif *arvif;
+
+ tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC);
+ if (IS_ERR(tb)) {
+ ath10k_warn(ar, "tdls peer failed to parse tlv");
+ return;
+ }
+ ev = tb[WMI_TLV_TAG_STRUCT_TDLS_PEER_EVENT];
+ if (!ev) {
+ kfree(tb);
+ ath10k_warn(ar, "tdls peer NULL event");
+ return;
+ }
+
+ switch (ev->peer_reason) {
+ case WMI_TDLS_TEARDOWN_REASON_TX:
+ case WMI_TDLS_TEARDOWN_REASON_RSSI:
+ case WMI_TDLS_TEARDOWN_REASON_PTR_TIMEOUT:
+ station = ieee80211_find_sta_by_ifaddr(ar->hw,
+ ev->peer_macaddr.addr,
+ NULL);
+ if (!station) {
+ ath10k_warn(ar, "did not find station from tdls peer event");
+ kfree(tb);
+ return;
+ }
+ arvif = ath10k_get_arvif(ar, ev->vdev_id);
+ ieee80211_tdls_oper_request(
+ arvif->vif, station->addr,
+ NL80211_TDLS_TEARDOWN,
+ WLAN_REASON_TDLS_TEARDOWN_UNREACHABLE,
+ GFP_ATOMIC
+ );
+ break;
+ }
+ kfree(tb);
+}
+
/***********/
/* TLV ops */
/***********/
@@ -552,6 +595,9 @@ static void ath10k_wmi_tlv_op_rx(struct ath10k *ar, struct sk_buff *skb)
case WMI_TLV_TX_PAUSE_EVENTID:
ath10k_wmi_tlv_event_tx_pause(ar, skb);
break;
+ case WMI_TLV_TDLS_PEER_EVENTID:
+ ath10k_wmi_event_tdls_peer(ar, skb);
+ break;
default:
ath10k_warn(ar, "Unknown eventid: %d\n", id);
break;
@@ -2750,6 +2796,12 @@ static void *ath10k_wmi_tlv_put_wmm(void *ptr,
if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
options |= WMI_TLV_TDLS_BUFFER_STA_EN;
+ /* WMI_TDLS_ENABLE_ACTIVE_EXTERNAL_CONTROL means firm will handle TDLS
+ * link inactivity detecting logic.
+ */
+ if (state == WMI_TDLS_ENABLE_ACTIVE)
+ state = WMI_TDLS_ENABLE_ACTIVE_EXTERNAL_CONTROL;
+
len = sizeof(*tlv) + sizeof(*cmd);
skb = ath10k_wmi_alloc_skb(ar, len);
if (!skb)
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.h b/drivers/net/wireless/ath/ath10k/wmi-tlv.h
index 22cf011..00d68c5 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.h
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.h
@@ -1641,6 +1641,29 @@ struct wmi_tlv_tx_pause_ev {
__le32 tid_map;
} __packed;
+struct wmi_tlv_tdls_peer_event {
+ struct wmi_mac_addr peer_macaddr;
+ __le32 peer_status;
+ __le32 peer_reason;
+ __le32 vdev_id;
+} __packed;
+
+enum wmi_tdls_peer_reason {
+ WMI_TDLS_TEARDOWN_REASON_TX,
+ WMI_TDLS_TEARDOWN_REASON_RSSI,
+ WMI_TDLS_TEARDOWN_REASON_SCAN,
+ WMI_TDLS_DISCONNECTED_REASON_PEER_DELETE,
+ WMI_TDLS_TEARDOWN_REASON_PTR_TIMEOUT,
+ WMI_TDLS_TEARDOWN_REASON_BAD_PTR,
+ WMI_TDLS_TEARDOWN_REASON_NO_RESPONSE,
+ WMI_TDLS_ENTER_BUF_STA,
+ WMI_TDLS_EXIT_BUF_STA,
+ WMI_TDLS_ENTER_BT_BUSY_MODE,
+ WMI_TDLS_EXIT_BT_BUSY_MODE,
+ WMI_TDLS_SCAN_STARTED_EVENT,
+ WMI_TDLS_SCAN_COMPLETED_EVENT,
+};
+
void ath10k_wmi_tlv_attach(struct ath10k *ar);
#endif
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 7a3606d..74a6c78 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -6720,6 +6720,7 @@ enum wmi_tdls_state {
WMI_TDLS_DISABLE,
WMI_TDLS_ENABLE_PASSIVE,
WMI_TDLS_ENABLE_ACTIVE,
+ WMI_TDLS_ENABLE_ACTIVE_EXTERNAL_CONTROL,
};
enum wmi_tdls_peer_state {
--
1.7.9.5
^ permalink raw reply related
* [PATCH] MAINTAINERS: update Johannes Berg's entries
From: Johannes Berg @ 2017-10-10 7:57 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
Update my MAINTAINERS file entries to list all the right files.
Since I'm also the de-facto wireless extensions maintainer,
there's little point in excluding those.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
MAINTAINERS | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index f0c37be4e04a..e90cdecd7b5d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3329,17 +3329,22 @@ S: Maintained
F: drivers/auxdisplay/cfag12864bfb.c
F: include/linux/cfag12864b.h
-CFG80211 and NL80211
+802.11 (including CFG80211/NL80211)
M: Johannes Berg <johannes@sipsolutions.net>
L: linux-wireless@vger.kernel.org
W: http://wireless.kernel.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
S: Maintained
+F: net/wireless/
F: include/uapi/linux/nl80211.h
+F: include/linux/ieee80211.h
+F: include/net/wext.h
F: include/net/cfg80211.h
-F: net/wireless/*
-X: net/wireless/wext*
+F: include/net/iw_handler.h
+F: include/net/ieee80211_radiotap.h
+F: Documentation/driver-api/80211/cfg80211.rst
+F: Documentation/networking/regulatory.txt
CHAR and MISC DRIVERS
M: Arnd Bergmann <arnd@arndb.de>
@@ -8207,6 +8212,7 @@ F: Documentation/networking/mac80211-injection.txt
F: include/net/mac80211.h
F: net/mac80211/
F: drivers/net/wireless/mac80211_hwsim.[ch]
+F: Documentation/networking/mac80211_hwsim/README
MAILBOX API
M: Jassi Brar <jassisinghbrar@gmail.com>
@@ -11491,6 +11497,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
S: Maintained
F: Documentation/rfkill.txt
+F: Documentation/ABI/stable/sysfs-class-rfkill
F: net/rfkill/
RHASHTABLE
--
2.14.2
^ permalink raw reply related
* [PATCH 0/5] Add TDLS feature for ath10k
From: yintang @ 2017-10-10 8:02 UTC (permalink / raw)
To: ath10k-ath10k; +Cc: linux-wireless
In-Reply-To: <TDLS for ath10k patch V4>
From: Yingying Tang <yintang@qti.qualcomm.com>
This patchset is for Rome PCIE chip, it will not affect other hardware
Yingying Tang (5):
mac80211: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer inactivity detection
ath10k: Avoid to set WEP key for TDLS peer
ath10k: Fix TDLS peer TX data failure issue on encryped AP
drivers/net/wireless/ath/ath10k/mac.c | 9 ++++-
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 55 +++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/wmi-tlv.h | 23 ++++++++++++
drivers/net/wireless/ath/ath10k/wmi.h | 1 +
include/net/cfg80211.h | 3 ++
net/mac80211/tdls.c | 5 ++-
6 files changed, 94 insertions(+), 2 deletions(-)
--
1.7.9.5
^ permalink raw reply
* [PATCH 4/5] ath10k: Avoid to set WEP key for TDLS peer
From: yintang @ 2017-10-10 8:02 UTC (permalink / raw)
To: ath10k-ath10k; +Cc: linux-wireless
In-Reply-To: <1507622551-9156-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
TDLS peer do not need WEP key. Setting WEP key will lead
to TDLS setup failure. Add fix to avoid setting WEP key
for TDLS peer.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 399f9ba..f6702cb 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -2966,7 +2966,7 @@ static int ath10k_station_assoc(struct ath10k *ar,
}
/* Plumb cached keys only for static WEP */
- if (arvif->def_wep_key_idx != -1) {
+ if ((arvif->def_wep_key_idx != -1) && (!sta->tdls)) {
ret = ath10k_install_peer_wep_keys(arvif, sta->addr);
if (ret) {
ath10k_warn(ar, "failed to install peer wep keys for vdev %i: %d\n",
--
1.7.9.5
^ permalink raw reply related
* [PATCH 5/5] ath10k: Fix TDLS peer TX data failure issue on encryped AP
From: yintang @ 2017-10-10 8:02 UTC (permalink / raw)
To: ath10k-ath10k; +Cc: linux-wireless
In-Reply-To: <1507622551-9156-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
For WPA encryption, QCA6174 firmware(version: WLAN.RM.4.4) will unblock
data when M4 was sent successfully. For other encryption which didn't need
4-way handshake firmware will unblock the data when peer authorized. Since
TDLS is 3-way handshake host need send authorize cmd to firmware to unblock
data.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index f6702cb..d2530f7 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -5841,6 +5841,10 @@ static int ath10k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
ath10k_warn(ar, "Peer %pM disappeared!\n", peer_addr);
spin_unlock_bh(&ar->data_lock);
+ if (sta && sta->tdls)
+ ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
+ WMI_PEER_AUTHORIZE, 1);
+
exit:
mutex_unlock(&ar->conf_mutex);
return ret;
--
1.7.9.5
^ permalink raw reply related
* [PATCH V5 0/5] Add TDLS feature for ath10k
From: yintang @ 2017-10-10 8:11 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless
In-Reply-To: <TDLS for ath10k patch>
From: Yingying Tang <yintang@qti.qualcomm.com>
This patchset is for Rome PCIE chip, it will not affect other hardware
Yingying Tang (5):
mac80211: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer inactivity detection
ath10k: Avoid to set WEP key for TDLS peer
ath10k: Fix TDLS peer TX data failure issue on encryped AP
drivers/net/wireless/ath/ath10k/mac.c | 9 ++++-
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 55 +++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/wmi-tlv.h | 23 ++++++++++++
drivers/net/wireless/ath/ath10k/wmi.h | 1 +
include/net/cfg80211.h | 3 ++
net/mac80211/tdls.c | 5 ++-
6 files changed, 94 insertions(+), 2 deletions(-)
--
1.7.9.5
^ permalink raw reply
* [PATCH V5 1/5] mac80211: Enable TDLS peer buffer STA feature
From: yintang @ 2017-10-10 8:11 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless
In-Reply-To: <1507623080-9311-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
Enable TDLS peer buffer STA feature.
Set extended capability bit to enable buffer STA when driver
support it.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
include/net/cfg80211.h | 3 +++
net/mac80211/tdls.c | 5 ++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index f12fa52..edefc25 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -3249,6 +3249,8 @@ struct cfg80211_ops {
* beaconing mode (AP, IBSS, Mesh, ...).
* @WIPHY_FLAG_HAS_STATIC_WEP: The device supports static WEP key installation
* before connection.
+ * @WIPHY_FLAG_SUPPORT_TDLS_BUFFER_ST: Device support buffer STA when TDLS is
+ * established.
*/
enum wiphy_flags {
/* use hole at 0 */
@@ -3275,6 +3277,7 @@ enum wiphy_flags {
WIPHY_FLAG_SUPPORTS_5_10_MHZ = BIT(22),
WIPHY_FLAG_HAS_CHANNEL_SWITCH = BIT(23),
WIPHY_FLAG_HAS_STATIC_WEP = BIT(24),
+ WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA = BIT(25),
};
/**
diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c
index 91093d4..f99e379 100644
--- a/net/mac80211/tdls.c
+++ b/net/mac80211/tdls.c
@@ -49,6 +49,8 @@ static void ieee80211_tdls_add_ext_capab(struct ieee80211_sub_if_data *sdata,
!ifmgd->tdls_wider_bw_prohibited;
struct ieee80211_supported_band *sband = ieee80211_get_sband(sdata);
bool vht = sband && sband->vht_cap.vht_supported;
+ bool buffer_sta =
+ local->hw.wiphy->flags & WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA;
u8 *pos = skb_put(skb, 10);
*pos++ = WLAN_EID_EXT_CAPABILITY;
@@ -56,7 +58,8 @@ static void ieee80211_tdls_add_ext_capab(struct ieee80211_sub_if_data *sdata,
*pos++ = 0x0;
*pos++ = 0x0;
*pos++ = 0x0;
- *pos++ = chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0;
+ *pos++ = (chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0) |
+ (buffer_sta ? WLAN_EXT_CAPA4_TDLS_BUFFER_STA : 0);
*pos++ = WLAN_EXT_CAPA5_TDLS_ENABLED;
*pos++ = 0;
*pos++ = 0;
--
1.7.9.5
^ permalink raw reply related
* [PATCH V5 2/5] ath10k: Enable TDLS peer buffer STA feature
From: yintang @ 2017-10-10 8:11 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless
In-Reply-To: <1507623080-9311-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
Enable TDLS peer buffer STA feature.
QCA6174 firmware(version: WLAN.RM.4.4) support TDLS peer buffer STA,
it reports this capability through wmi service map in wmi service ready
event. Set related parameter in TDLS WMI command to enable this feature.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 3 +++
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 3 +++
2 files changed, 6 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 5683f1a..399f9ba 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8204,6 +8204,9 @@ int ath10k_mac_register(struct ath10k *ar)
ieee80211_hw_set(ar->hw, TDLS_WIDER_BW);
}
+ if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
+ ar->hw->wiphy->flags |= WIPHY_FLAG_SUPPORT_TDLS_BUFFER_STA;
+
ar->hw->wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
ar->hw->wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
ar->hw->wiphy->max_remain_on_channel_duration = 5000;
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
index 7616c1c..f60b46e 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -2747,6 +2747,9 @@ static void *ath10k_wmi_tlv_put_wmm(void *ptr,
*/
u32 options = 0;
+ if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
+ options |= WMI_TLV_TDLS_BUFFER_STA_EN;
+
len = sizeof(*tlv) + sizeof(*cmd);
skb = ath10k_wmi_alloc_skb(ar, len);
if (!skb)
--
1.7.9.5
^ permalink raw reply related
* [PATCH V5 3/5] ath10k: Enable TDLS peer inactivity detection
From: yintang @ 2017-10-10 8:11 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless
In-Reply-To: <1507623080-9311-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
Enable TDLS peer inactivity detetion feature.
QCA6174 firmware(version: WLAN.RM.4.4) support TDLS link inactivity detecting.
Set related parameters in TDLS WMI command to enable this feature.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 52 +++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/wmi-tlv.h | 23 +++++++++++++
drivers/net/wireless/ath/ath10k/wmi.h | 1 +
3 files changed, 76 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
index f60b46e..63bb2c4 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -412,6 +412,49 @@ static int ath10k_wmi_tlv_event_tx_pause(struct ath10k *ar,
return 0;
}
+void ath10k_wmi_event_tdls_peer(struct ath10k *ar, struct sk_buff *skb)
+{
+ struct ieee80211_sta *station;
+ const struct wmi_tlv_tdls_peer_event *ev;
+ const void **tb;
+ struct ath10k_vif *arvif;
+
+ tb = ath10k_wmi_tlv_parse_alloc(ar, skb->data, skb->len, GFP_ATOMIC);
+ if (IS_ERR(tb)) {
+ ath10k_warn(ar, "tdls peer failed to parse tlv");
+ return;
+ }
+ ev = tb[WMI_TLV_TAG_STRUCT_TDLS_PEER_EVENT];
+ if (!ev) {
+ kfree(tb);
+ ath10k_warn(ar, "tdls peer NULL event");
+ return;
+ }
+
+ switch (ev->peer_reason) {
+ case WMI_TDLS_TEARDOWN_REASON_TX:
+ case WMI_TDLS_TEARDOWN_REASON_RSSI:
+ case WMI_TDLS_TEARDOWN_REASON_PTR_TIMEOUT:
+ station = ieee80211_find_sta_by_ifaddr(ar->hw,
+ ev->peer_macaddr.addr,
+ NULL);
+ if (!station) {
+ ath10k_warn(ar, "did not find station from tdls peer event");
+ kfree(tb);
+ return;
+ }
+ arvif = ath10k_get_arvif(ar, ev->vdev_id);
+ ieee80211_tdls_oper_request(
+ arvif->vif, station->addr,
+ NL80211_TDLS_TEARDOWN,
+ WLAN_REASON_TDLS_TEARDOWN_UNREACHABLE,
+ GFP_ATOMIC
+ );
+ break;
+ }
+ kfree(tb);
+}
+
/***********/
/* TLV ops */
/***********/
@@ -552,6 +595,9 @@ static void ath10k_wmi_tlv_op_rx(struct ath10k *ar, struct sk_buff *skb)
case WMI_TLV_TX_PAUSE_EVENTID:
ath10k_wmi_tlv_event_tx_pause(ar, skb);
break;
+ case WMI_TLV_TDLS_PEER_EVENTID:
+ ath10k_wmi_event_tdls_peer(ar, skb);
+ break;
default:
ath10k_warn(ar, "Unknown eventid: %d\n", id);
break;
@@ -2750,6 +2796,12 @@ static void *ath10k_wmi_tlv_put_wmm(void *ptr,
if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
options |= WMI_TLV_TDLS_BUFFER_STA_EN;
+ /* WMI_TDLS_ENABLE_ACTIVE_EXTERNAL_CONTROL means firm will handle TDLS
+ * link inactivity detecting logic.
+ */
+ if (state == WMI_TDLS_ENABLE_ACTIVE)
+ state = WMI_TDLS_ENABLE_ACTIVE_EXTERNAL_CONTROL;
+
len = sizeof(*tlv) + sizeof(*cmd);
skb = ath10k_wmi_alloc_skb(ar, len);
if (!skb)
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.h b/drivers/net/wireless/ath/ath10k/wmi-tlv.h
index 22cf011..00d68c5 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.h
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.h
@@ -1641,6 +1641,29 @@ struct wmi_tlv_tx_pause_ev {
__le32 tid_map;
} __packed;
+struct wmi_tlv_tdls_peer_event {
+ struct wmi_mac_addr peer_macaddr;
+ __le32 peer_status;
+ __le32 peer_reason;
+ __le32 vdev_id;
+} __packed;
+
+enum wmi_tdls_peer_reason {
+ WMI_TDLS_TEARDOWN_REASON_TX,
+ WMI_TDLS_TEARDOWN_REASON_RSSI,
+ WMI_TDLS_TEARDOWN_REASON_SCAN,
+ WMI_TDLS_DISCONNECTED_REASON_PEER_DELETE,
+ WMI_TDLS_TEARDOWN_REASON_PTR_TIMEOUT,
+ WMI_TDLS_TEARDOWN_REASON_BAD_PTR,
+ WMI_TDLS_TEARDOWN_REASON_NO_RESPONSE,
+ WMI_TDLS_ENTER_BUF_STA,
+ WMI_TDLS_EXIT_BUF_STA,
+ WMI_TDLS_ENTER_BT_BUSY_MODE,
+ WMI_TDLS_EXIT_BT_BUSY_MODE,
+ WMI_TDLS_SCAN_STARTED_EVENT,
+ WMI_TDLS_SCAN_COMPLETED_EVENT,
+};
+
void ath10k_wmi_tlv_attach(struct ath10k *ar);
#endif
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 7a3606d..74a6c78 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -6720,6 +6720,7 @@ enum wmi_tdls_state {
WMI_TDLS_DISABLE,
WMI_TDLS_ENABLE_PASSIVE,
WMI_TDLS_ENABLE_ACTIVE,
+ WMI_TDLS_ENABLE_ACTIVE_EXTERNAL_CONTROL,
};
enum wmi_tdls_peer_state {
--
1.7.9.5
^ permalink raw reply related
* [PATCH V5 4/5] ath10k: Avoid to set WEP key for TDLS peer
From: yintang @ 2017-10-10 8:11 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless
In-Reply-To: <1507623080-9311-1-git-send-email-yintang@qti.qualcomm.com>
From: Yingying Tang <yintang@qti.qualcomm.com>
TDLS peer do not need WEP key. Setting WEP key will lead
to TDLS setup failure. Add fix to avoid setting WEP key
for TDLS peer.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 399f9ba..f6702cb 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -2966,7 +2966,7 @@ static int ath10k_station_assoc(struct ath10k *ar,
}
/* Plumb cached keys only for static WEP */
- if (arvif->def_wep_key_idx != -1) {
+ if ((arvif->def_wep_key_idx != -1) && (!sta->tdls)) {
ret = ath10k_install_peer_wep_keys(arvif, sta->addr);
if (ret) {
ath10k_warn(ar, "failed to install peer wep keys for vdev %i: %d\n",
--
1.7.9.5
^ permalink raw reply related
* [PATCH V5 5/5] ath10k: Fix TDLS peer TX data failure issue on encryped AP
From: yintang @ 2017-10-10 8:13 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless
In-Reply-To: <TDLS for ath10k patch>
From: Yingying Tang <yintang@qti.qualcomm.com>
For WPA encryption, QCA6174 firmware(version: WLAN.RM.4.4) will unblock
data when M4 was sent successfully. For other encryption which didn't need
4-way handshake firmware will unblock the data when peer authorized. Since
TDLS is 3-way handshake host need send authorize cmd to firmware to unblock
data.
Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index f6702cb..d2530f7 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -5841,6 +5841,10 @@ static int ath10k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
ath10k_warn(ar, "Peer %pM disappeared!\n", peer_addr);
spin_unlock_bh(&ar->data_lock);
+ if (sta && sta->tdls)
+ ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
+ WMI_PEER_AUTHORIZE, 1);
+
exit:
mutex_unlock(&ar->conf_mutex);
return ret;
--
1.7.9.5
^ permalink raw reply related
* Re: [v2] p54: don't unregister leds when they are not initialized
From: Kalle Valo @ 2017-10-10 8:18 UTC (permalink / raw)
To: Andrey Konovalov
Cc: Christian Lamparter, linux-wireless, netdev, linux-kernel,
Dmitry Vyukov, Kostya Serebryany, Andrey Konovalov
In-Reply-To: <17c60ebcc8ce7f20de41a55087d24dfdfca09c67.1506438620.git.andreyknvl@google.com>
Andrey Konovalov <andreyknvl@google.com> wrote:
> ieee80211_register_hw() in p54_register_common() may fail and leds won't
> get initialized. Currently p54_unregister_common() doesn't check that and
> always calls p54_unregister_leds(). The fix is to check priv->registered
> flag before calling p54_unregister_leds().
>
> Found by syzkaller.
>
> INFO: trying to register non-static key.
> the code is fine but needs lockdep annotation.
> turning off the locking correctness validator.
> CPU: 1 PID: 1404 Comm: kworker/1:1 Not tainted
> 4.14.0-rc1-42251-gebb2c2437d80-dirty #205
> Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
> Workqueue: usb_hub_wq hub_event
> Call Trace:
> __dump_stack lib/dump_stack.c:16
> dump_stack+0x292/0x395 lib/dump_stack.c:52
> register_lock_class+0x6c4/0x1a00 kernel/locking/lockdep.c:769
> __lock_acquire+0x27e/0x4550 kernel/locking/lockdep.c:3385
> lock_acquire+0x259/0x620 kernel/locking/lockdep.c:4002
> flush_work+0xf0/0x8c0 kernel/workqueue.c:2886
> __cancel_work_timer+0x51d/0x870 kernel/workqueue.c:2961
> cancel_delayed_work_sync+0x1f/0x30 kernel/workqueue.c:3081
> p54_unregister_leds+0x6c/0xc0 drivers/net/wireless/intersil/p54/led.c:160
> p54_unregister_common+0x3d/0xb0 drivers/net/wireless/intersil/p54/main.c:856
> p54u_disconnect+0x86/0x120 drivers/net/wireless/intersil/p54/p54usb.c:1073
> usb_unbind_interface+0x21c/0xa90 drivers/usb/core/driver.c:423
> __device_release_driver drivers/base/dd.c:861
> device_release_driver_internal+0x4f4/0x5c0 drivers/base/dd.c:893
> device_release_driver+0x1e/0x30 drivers/base/dd.c:918
> bus_remove_device+0x2f4/0x4b0 drivers/base/bus.c:565
> device_del+0x5c4/0xab0 drivers/base/core.c:1985
> usb_disable_device+0x1e9/0x680 drivers/usb/core/message.c:1170
> usb_disconnect+0x260/0x7a0 drivers/usb/core/hub.c:2124
> hub_port_connect drivers/usb/core/hub.c:4754
> hub_port_connect_change drivers/usb/core/hub.c:5009
> port_event drivers/usb/core/hub.c:5115
> hub_event+0x1318/0x3740 drivers/usb/core/hub.c:5195
> process_one_work+0xc7f/0x1db0 kernel/workqueue.c:2119
> process_scheduled_works kernel/workqueue.c:2179
> worker_thread+0xb2b/0x1850 kernel/workqueue.c:2255
> kthread+0x3a1/0x470 kernel/kthread.c:231
> ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:431
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> Acked-by: Christian Lamparter <chunkeey@googlemail.com>
Patch applied to wireless-drivers-next.git, thanks.
fc09785de0a3 p54: don't unregister leds when they are not initialized
--
https://patchwork.kernel.org/patch/9972281/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [2/2] rtlwifi: silence underflow warning
From: Kalle Valo @ 2017-10-10 8:20 UTC (permalink / raw)
To: Dan Carpenter; +Cc: Larry Finger, Chaoming Li, linux-wireless, kernel-janitors
In-Reply-To: <20170929075234.dgyuiwbowu3jq6r4@mwanda>
Dan Carpenter <dan.carpenter@oracle.com> wrote:
> My static checker complains that we have an upper bound but no lower
> bound. I suspect neither are really required but it doesn't hurt to add
> a check for negatives.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c b/drivers/net/wireless/realtek/rtlwifi/core.c
> index c53cbf3d52bd..294a6b43d1bc 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/core.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/core.c
> @@ -453,7 +453,8 @@ static void _rtl_add_wowlan_patterns(struct ieee80211_hw *hw,
> for (i = 0; i < wow->n_patterns; i++) {
> memset(&rtl_pattern, 0, sizeof(struct rtl_wow_pattern));
> memset(mask, 0, MAX_WOL_BIT_MASK_SIZE);
> - if (patterns[i].pattern_len > MAX_WOL_PATTERN_SIZE) {
> + if (patterns[i].pattern_len < 0 ||
> + patterns[i].pattern_len > MAX_WOL_PATTERN_SIZE) {
> RT_TRACE(rtlpriv, COMP_POWER, DBG_WARNING,
> "Pattern[%d] is too long\n", i);
> continue;
Patch applied to wireless-drivers-next.git, thanks.
64e79426c204 rtlwifi: silence underflow warning
--
https://patchwork.kernel.org/patch/9977201/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: mwifiex: Random MAC address during scanning
From: Kalle Valo @ 2017-10-10 8:21 UTC (permalink / raw)
To: Ganapathi Bhat
Cc: linux-wireless, Brian Norris, Cathy Luo, Xinming Hu, Zhiyuan Yang,
James Cao, Mangesh Malusare, Karthik Ananthapadmanabha,
Ganapathi Bhat
In-Reply-To: <1506682390-27716-1-git-send-email-gbhat@marvell.com>
Ganapathi Bhat <gbhat@marvell.com> wrote:
> From: Karthik Ananthapadmanabha <karthida@marvell.com>
>
> Driver will advertise RANDOM_MAC support only if the device
> supports this feature.
>
> Signed-off-by: Karthik Ananthapadmanabha <karthida@marvell.com>
> Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
Patch applied to wireless-drivers-next.git, thanks.
073a435d55a6 mwifiex: Random MAC address during scanning
--
https://patchwork.kernel.org/patch/9977525/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: net/wireless/ray_cs: Convert timers to use
From: Kalle Valo @ 2017-10-10 8:26 UTC (permalink / raw)
To: Kees Cook; +Cc: linux-kernel, linux-wireless, netdev, Thomas Gleixner
In-Reply-To: <20171005005020.GA23219@beast>
Kees Cook <keescook@chromium.org> wrote:
> In preparation for unconditionally passing the struct timer_list pointer to
> all timer callbacks, switch to using the new timer_setup() and from_timer()
> to pass the timer pointer explicitly.
>
> Cc: Kalle Valo <kvalo@codeaurora.org>
> Cc: linux-wireless@vger.kernel.org
> Cc: netdev@vger.kernel.org
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Signed-off-by: Kees Cook <keescook@chromium.org>
I'll apply this once I have fast forwarded wireless-drivers-next to
-rc3. I'll also fix the title, what was it supposed to say?
Patch set to Awaiting Upstream.
--
https://patchwork.kernel.org/patch/9986253/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Contributing to Linux-wireless drivers.
From: Himanshu Jha @ 2017-10-10 11:44 UTC (permalink / raw)
To: linux-wireless
Hello everyone,
Apologies for that forwarded email which I hurriedly sent without
editing here!
I am an undergraduate student in ECE(3rd year) and wish to contribute to linux-wireless
drivers. I am familiar with the kernel development process and have many
patches accepted in the past 2 months with variety of tools used such as
coccinelle, Kasan, smatch, sparse and checkpatch.
My past contributions can be found here:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/log/?qt=grep&q=Himanshu+Jha
Also, James Cameron suggested me to *not self promot* and other useful
stuff. But I'm not self promoting and the purpose is to avoid the
initial steps that you generally recommend to a newbie like reading the
conding guideline, submitting patches, learn Git etc.
I have basic knowledge of Linux kernel internals and competent C skills,
also planning to learn Device Drivers in future.
Also, since I am beginner is there any small project that I could work on
to enhance my knowledge.
For eg:
https://wireless.wiki.kernel.org/en/developers/gsoc/2010/wifi-test-nl80211
It is an excellent page for a beginner like me that states what should
you follow and what documenation to read and other useful stuffs.
Please share any links to Documentation/tutorials which I can follow and
help the community.
Lastly, I will next year surely apply for GSoC under Linux-wireless and
I don't seem to find any participation since 2012. Could someone please
explain ? Also, will Linux-wireless participate next year ?
Basically, I want to be prepared beforehand so that I could contribute
successfully!
Thanks
Eagerly awaiting your response,
Himanshu Jha
^ permalink raw reply
* Re: [PATCH v2] mac80211: fix STA_SLOW_THRESHOLD htmldocs failure
From: Stanislaw Gruszka @ 2017-10-10 13:41 UTC (permalink / raw)
To: linux-wireless, johannes; +Cc: toke
In-Reply-To: <1506426485-7539-1-git-send-email-sgruszka@redhat.com>
On Tue, Sep 26, 2017 at 01:48:05PM +0200, Stanislaw Gruszka wrote:
> Patch fixes htmldocs build problem:
>
> Error(.//net/mac80211/sta_info.h:416): cannot understand prototype: 'STA_SLOW_THRESHOLD 6000 '
>
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> ---
> v1 -> v2: just fix documentation build, do not move the code.
Johannes, would you apply this? I think patch is safe to apply :-)
> net/mac80211/sta_info.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
> index 3acbdfa..a35c964 100644
> --- a/net/mac80211/sta_info.h
> +++ b/net/mac80211/sta_info.h
> @@ -398,7 +398,7 @@ struct ieee80211_sta_rx_stats {
> u64 msdu[IEEE80211_NUM_TIDS + 1];
> };
>
> -/**
> +/*
> * The bandwidth threshold below which the per-station CoDel parameters will be
> * scaled to be more lenient (to prevent starvation of slow stations). This
> * value will be scaled by the number of active stations when it is being
> --
> 1.7.1
>
^ permalink raw reply
* Re: [PATCH v2] mac80211: fix STA_SLOW_THRESHOLD htmldocs failure
From: Johannes Berg @ 2017-10-10 13:49 UTC (permalink / raw)
To: Stanislaw Gruszka, linux-wireless; +Cc: toke
In-Reply-To: <20171010134107.GA3328@redhat.com>
On Tue, 2017-10-10 at 15:41 +0200, Stanislaw Gruszka wrote:
> On Tue, Sep 26, 2017 at 01:48:05PM +0200, Stanislaw Gruszka wrote:
> > Patch fixes htmldocs build problem:
> >
> > Error(.//net/mac80211/sta_info.h:416): cannot understand prototype:
> > 'STA_SLOW_THRESHOLD 6000 '
> >
> > Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> > ---
> > v1 -> v2: just fix documentation build, do not move the code.
>
> Johannes, would you apply this? I think patch is safe to apply :-)
I already did :)
johannes
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox