-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
athp_send_mgmt() filters out too much #43
Comments
erikarn
pushed a commit
that referenced
this issue
Sep 20, 2020
I was .. over-zealous when filtering out frames and filtered out some that were not quite right. QOSNULL and NO_DATA are data frames, not mgmt frames and their subtype ends up matching some DEAUTH stuff we DO want to send out.
Geramy
added a commit
to Geramy/athp
that referenced
this issue
Dec 28, 2021
commit 84e2d59 Author: Adrian Chadd <adrian@FreeBSD.org> Date: Sun Apr 18 10:15:19 2021 -0700 Disable LDPC transmit in the rate control for now. I have somehow messed up LDPC negotiation here and it's breaking when speaking to non-LDPC devices. I'll re-enable this once I figure out what the heck is going on here with the negotiation bits. commit dec5c8d Author: Adrian Chadd <adrian@FreeBSD.org> Date: Sat Mar 20 19:48:31 2021 -0700 Start methodising the is_in_peer_table stuff so I can doubly check locking. So, quick background. net80211 doesn't do any buffering/queueing in the network stack between adding a node and transmitting a frame. It expects that adding a node, allocating/setting/changing a key, etc are all immediate things that don't sleep - and then once the call returns, a frame can be transmitted. This is true for like, fullmac devices like ath(4), but it's definitely not true for firmware things. So, athp and a lot of other drivers just push those updates into a deferred queue. Trouble is, they may then just transmit stuff with a not-yet-programmed peer, and some hardware may or may not get angery at you for doing. So yes, although net80211 needs to grow this support to make firmware NICs a LOT easier to implement, for now we're stuck having to track this ourselves. Hence, is_in_peer_table and its various checks. The checks aren't enforced or methodized yet - I have to go convert them to use the CONF lock everywhere. But setting it between 1 and 0 was easy to do, so it's done here. commit 3fb2a0a Author: Adrian Chadd <adrian@FreeBSD.org> Date: Wed Mar 17 22:22:45 2021 -0700 whoops ! :-) Well, now I know that code path is tested thoroughly :-) commit 371ac55 Author: Adrian Chadd <adrian@FreeBSD.org> Date: Wed Mar 17 16:40:53 2021 -0700 * Extract out the deferred-tx-queue-is-empty check into a method, so I can enforce locking * Fix a DATA lock issue I missed when futzing with this; now it doesn't crash on probe responses (and they're being correctly deferred now!) commit aa7eecc Author: Adrian Chadd <adrian@FreeBSD.org> Date: Tue Mar 16 22:41:43 2021 -0700 More subtle locking things! * Delete old/dead comments * Comment and add lock / no-lock assertions where I found I messed up * When doing deferred tx, drain the whole deferred queue into a local queue whilst holding DATA lock, so we don't have to hold it whilst transmitting. * Ensure DATA_LOCK is around any other peer-list flag stuff commit 86e8d01 Author: Adrian Chadd <adrian@FreeBSD.org> Date: Tue Mar 16 19:19:12 2021 -0700 Migrate the arvif stuff to sit behind its own lock. I hate it, but it's made the conf/data lock ordering problem go away. I still hate it though and we need a better locking strategy here. commit 634703c Author: Adrian Chadd <adrian@FreeBSD.org> Date: Tue Mar 16 19:17:13 2021 -0700 Fix athp_newstate() locking a bit. Yeah it's ugly, sigh. commit 202ed98 Author: Adrian Chadd <adrian@FreeBSD.org> Date: Fri Mar 12 13:32:05 2021 -0800 Comment about the locks and some hints on how the lock acquisitions should look! commit 19a040e Author: Adrian Chadd <adrian@FreeBSD.org> Date: Thu Mar 11 23:44:54 2021 -0800 Initial UNTESTED (cause I want a backup) work in progress to bring sanity to the locking in if_athp_main.c. I'm trying to get CONF_LOCK for most of the new things, and use DATA_LOCK for the in-peer-table bits and the deferred transmit work. I don't want to hold DATA_LOCK across calling the frame transmit routine, for example commit 0756ba0 Merge: 090f3ce 2493868 Author: Adrian Chadd <adrian@FreeBSD.org> Date: Thu Mar 11 23:06:14 2021 -0800 Merge branch 'ahc_20200804_transmit_fixes' of github.com:erikarn/athp into ahc_20200804_transmit_fixes commit 090f3ce Author: Adrian Chadd <adrian@FreeBSD.org> Date: Thu Mar 11 22:55:33 2021 -0800 Don't use the ATHP_LOCK here; I'm not sure whether we're going to keep it and what to use it for, but this is the only place it's currently used. commit e82b171 Author: Adrian Chadd <adrian@FreeBSD.org> Date: Fri Feb 12 17:54:49 2021 -0800 Yeha, new machine. oops. commit 51d86e2 Author: Adrian Chadd <adrian@freebsd.org> Date: Fri Nov 27 07:52:22 2020 -0800 Turn the "deferred transmit schedule" into a method rather than calling the taskqueue directly. Whilst here, update/add some comments! commit 8a68f8a Author: Adrian Chadd <adrian@freebsd.org> Date: Thu Nov 26 19:44:27 2020 -0800 More documentation around where i need to figure out all of this locking. commit e0f6e50 Author: adrian chadd <adrian@freebsd.org> Date: Wed Sep 16 15:52:50 2020 -0700 First pass at deferred transmit queue management. I'm doing this completely with no locking right now and I'll likely have to pick /a/ lock before i land this, but it should be good enough to at least test out that I can defer things: * if the peer isn't added, defer * if there's frames in the deferred queue, still defer * once a peer is added, run the taskqueue to send pending frames This doesn't yet do locking, keep statistics or actually be neatly methodized. commit 549de8d Author: adrian chadd <adrian@freebsd.org> Date: Sat Aug 1 12:58:26 2020 -0700 Begin fleshing out what will hopefully become the target deferred transmit queue bits. commit a717d32 Author: adrian chadd <adrian@freebsd.org> Date: Sat Sep 19 20:43:34 2020 -0700 * move the flush/dequeue until after the firmware peer has been marked as down; * add some debugging This fixes some crashes I was seeing because of racing with no locks. Yes, I gotta add locks. commit 7a17a15 Author: adrian chadd <adrian@freebsd.org> Date: Wed Sep 16 15:52:50 2020 -0700 First pass at deferred transmit queue management. I'm doing this completely with no locking right now and I'll likely have to pick /a/ lock before i land this, but it should be good enough to at least test out that I can defer things: * if the peer isn't added, defer * if there's frames in the deferred queue, still defer * once a peer is added, run the taskqueue to send pending frames This doesn't yet do locking, keep statistics or actually be neatly methodized. commit 6b70fcd Author: adrian chadd <adrian@freebsd.org> Date: Sat Aug 1 12:58:26 2020 -0700 Begin fleshing out what will hopefully become the target deferred transmit queue bits. commit 76ce949 Author: Adrian Chadd <adrian@FreeBSD.org> Date: Fri Feb 12 18:06:57 2021 -0800 Remove some unused fields commit 2493868 Author: Adrian Chadd <adrian@freebsd.org> Date: Fri Nov 27 07:52:22 2020 -0800 Turn the "deferred transmit schedule" into a method rather than calling the taskqueue directly. Whilst here, update/add some comments! commit 3d0563e Author: Adrian Chadd <adrian@freebsd.org> Date: Thu Nov 26 19:44:27 2020 -0800 More documentation around where i need to figure out all of this locking. commit 6d763a2 Merge: a09f4b6 671fe99 Author: adrian chadd <adrian@freebsd.org> Date: Sat Sep 19 20:45:55 2020 -0700 Merge branch 'ahc_20200804_transmit_fixes' of github.com:erikarn/athp into ahc_20200804_transmit_fixes commit a09f4b6 Author: adrian chadd <adrian@freebsd.org> Date: Sat Sep 19 20:43:34 2020 -0700 * move the flush/dequeue until after the firmware peer has been marked as down; * add some debugging This fixes some crashes I was seeing because of racing with no locks. Yes, I gotta add locks. commit a62aabb Author: adrian chadd <adrian@freebsd.org> Date: Wed Sep 16 15:52:50 2020 -0700 First pass at deferred transmit queue management. I'm doing this completely with no locking right now and I'll likely have to pick /a/ lock before i land this, but it should be good enough to at least test out that I can defer things: * if the peer isn't added, defer * if there's frames in the deferred queue, still defer * once a peer is added, run the taskqueue to send pending frames This doesn't yet do locking, keep statistics or actually be neatly methodized. commit 640e09d Author: adrian chadd <adrian@freebsd.org> Date: Sat Aug 1 12:58:26 2020 -0700 Begin fleshing out what will hopefully become the target deferred transmit queue bits. commit 12e36d5 Author: adrian chadd <adrian@freebsd.org> Date: Sat Sep 19 20:41:48 2020 -0700 Fix issue erikarn#43 - don't filter out frames we shouldn't be. I was .. over-zealous when filtering out frames and filtered out some that were not quite right. QOSNULL and NO_DATA are data frames, not mgmt frames and their subtype ends up matching some DEAUTH stuff we DO want to send out. commit 671fe99 Author: adrian chadd <adrian@freebsd.org> Date: Wed Sep 16 15:52:50 2020 -0700 First pass at deferred transmit queue management. I'm doing this completely with no locking right now and I'll likely have to pick /a/ lock before i land this, but it should be good enough to at least test out that I can defer things: * if the peer isn't added, defer * if there's frames in the deferred queue, still defer * once a peer is added, run the taskqueue to send pending frames This doesn't yet do locking, keep statistics or actually be neatly methodized. commit 89aba6f Author: adrian chadd <adrian@freebsd.org> Date: Sat Aug 1 12:58:26 2020 -0700 Begin fleshing out what will hopefully become the target deferred transmit queue bits. commit f5a4e9d Author: adrian chadd <adrian@freebsd.org> Date: Wed Sep 16 15:20:24 2020 -0700 Fix an llvm11 complaint commit 02d173e Author: bzfbd <24442726+bzfbd@users.noreply.github.com> Date: Tue Aug 25 22:11:26 2020 +0000 athp: make compile with clang11 (erikarn#41) Rather than using a void * for a buffer, when we use it as a char * declare the variable as a char *; in addition there is no need to pre-initialise it with the current code, so remove the = NULL assignment. Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate") Co-authored-by: Bjoern A. Zeeb <bz@FreeBSD.ORG> commit 984c78b Author: bzfbd <24442726+bzfbd@users.noreply.github.com> Date: Tue Aug 25 22:10:29 2020 +0000 athp: adjust ieee80211_add_channel_list*() to NET80211_CBW_FLAG_* flags. (erikarn#42) After FreeBSD SVN r364673 ieee80211_add_channel_list_[25]ghz() take bitflags to indicate HT40/VHT80/.. While the 1 for HT40 was preserved switch to the bitflags to be able to also pass VHT80 in. Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate") Co-authored-by: Bjoern A. Zeeb <bz@FreeBSD.ORG> commit 2c8fbd9 Author: adrian chadd <adrian@freebsd.org> Date: Wed Aug 12 20:58:39 2020 -0700 Remove now incorrect statement about freeing the mbufs. But yes, we should handle fragments by tossing them; this hardware does fragment offload so we shouldn't be doing it in net80211. commit 2f761a4 Author: adrian chadd <adrian@freebsd.org> Date: Wed Aug 12 20:57:18 2020 -0700 Whoops, add missing bit commit f5ca77f Author: adrian chadd <adrian@freebsd.org> Date: Sat Aug 1 13:25:02 2020 -0700 Refactor out the transmit handling into a separate function. athp_transmit() and athp_raw_xmit() now use the same shared function to do their dirty work. Unfortuntely, sigh, due to how those two functions /super subtly/ have different calling conventions, the implementation leaves a lot to be desired. This needs a /lot/ more testing before it's merged into master. commit f693279 Author: adrian chadd <adrian@freebsd.org> Date: Thu Jul 30 16:07:26 2020 -0700 [athp] Fix firmware startup + VAP running tracking; remove current restart logic * remove the current restart logic; I think we should reimplement it in a slightly less recursive way and make it go through the ATH10K_STATE logic. * Don't use sc_isrunning for whether firmware is running or not - this breaks when creating the first interface (which starts firmware, adds interfaces via WMI but doesn't start them) and doing the first ifconfig up. Before this change, the first VAP would load firmware and set sc_isrunning=1; but when athp_parent() is called it wouldn't call ieee80211_start_all() to kick all the VAP state machines. Now ar->state is used to see if the firwmare is up or not, which is what it's for. sc_isrunning is now exclusively used for tracking whether we've started VAPs or not. commit 5d38462 Merge: 638ab98 f825f23 Author: adrian chadd <adrian@freebsd.org> Date: Sat Jul 18 19:58:27 2020 -0700 Merge branch 'ahc_2020707_crypto_key_fixes' commit 638ab98 Author: adrian chadd <adrian@freebsd.org> Date: Tue Jul 14 22:44:56 2020 -0700 [athp] Fix the phymode configuration when associating nodes in AP mode. I'm testing an AR9380 STA (HT20) on a 5GHz VHT20 channel AP. Because the phymode was set to ic_curchan, this is VHT20 and the firmware thus tries VHT rates that just fail. The per-node phymode needs to be the node channel information, NOT the AP channel. This should also be fine in STA mode as the BSS channel should be set A-OK. (cherry picked from commit f825f23) commit f825f23 Author: adrian chadd <adrian@freebsd.org> Date: Tue Jul 14 22:44:56 2020 -0700 [athp] Fix the phymode configuration when associating nodes in AP mode. I'm testing an AR9380 STA (HT20) on a 5GHz VHT20 channel AP. Because the phymode was set to ic_curchan, this is VHT20 and the firmware thus tries VHT rates that just fail. The per-node phymode needs to be the node channel information, NOT the AP channel. This should also be fine in STA mode as the BSS channel should be set A-OK. commit f69c692 Author: adrian chadd <adrian@freebsd.org> Date: Tue Jul 7 23:19:12 2020 -0700 [athp] Migrate over to using a private copy of the key state. We can't rely on ieee80211_key contents being stable after the call to our crypto routines, so don't! Take a copy of the data into our own struct and pass that around. This should also let me clear up the pairwise magic value crap afterwards. Tested: * STA mode, WPA TODO: * Test AP, STA modes in WPA thoroughly, through group rekey and station join/leave * ACTUALLY TEST WEP and OPEN! Aiee! This is a section of code where subtle messes can break everything. commit c9e6576 Author: adrian chadd <adrian@freebsd.org> Date: Thu Jun 18 09:28:57 2020 -0700 [athp] Fix the SKB RX hash function for in-order receive buffer tracking. This path is only used by the later QCA6174 hardware (hw 3.2), not the earlier QCA6174 hardware. This fixes a boot-time panic when the driver loads, but there's still some issues sending WMI commands to this particular hardware revision. My guess is that things aren't fully initialised enough for HTC to operate after the firmware is loaded and the BMI response occurs. commit 3d759a2 Author: adrian chadd <adrian@freebsd.org> Date: Tue Jun 16 20:55:49 2020 -0700 Turn the inline into hopefully a compiled-out no-op without INVARIANTS. I'll go test this a bit more after this commit on a non-INVARIANTS -HEAD build (on a much faster machine, heh) to see if it works! commit c967f7c Author: adrian chadd <adrian@freebsd.org> Date: Tue Jun 16 16:40:23 2020 -0700 hal/chip_id.h already contains the chip IDs; so use that instead. commit c2c2e69 Author: adrian chadd <adrian@freebsd.org> Date: Tue Jun 16 16:38:26 2020 -0700 From bz - fix up indenting commit 6d6dd62 Author: adrian chadd <adrian@freebsd.org> Date: Tue Jun 16 16:33:16 2020 -0700 From bz - convert over QUAD to UQUAD; the types are uint64_t. commit e3b8fd9 Author: adrian chadd <adrian@freebsd.org> Date: Mon Jun 15 18:53:44 2020 -0700 Remove the private uapsd definitions now; use the net80211 ones. commit a404a85 Author: adrian chadd <adrian@freebsd.org> Date: Mon Jun 15 17:55:03 2020 -0700 Initial UAPSD/WME updates. I think this is correct for both hostap and station mode operation. It unblocks setting up uapsd if it's configured in hostap or station modes and I'm doing some further tinkering with it before moving onto the next thing (likely crypto key deletion with a now-freed ieee80211_key reference. ugh.) commit 40570cb Author: adrian chadd <adrian@freebsd.org> Date: Mon Jun 15 12:47:27 2020 -0700 Create a new tx buffer pool for management/wmi/beacons. This fixes a big issue i've seen during active traffic tests where the TX buffer pool gets temporarily exhausted leading to beacon buffers and wmi commands failing. Beacons and HTC (ie, WMI and other control paths) now come out of a smaller buffer pool that's separate from the main TX data path. If any buffers are alloc/freed into different pools the buffer management code will log a warning. Tested: * QCA6174 STA mode * QCA9880 AP + STA modes commit 587417a Author: adrian chadd <adrian@freebsd.org> Date: Mon Jun 15 12:00:17 2020 -0700 In case the commit hash changes, add in the commit message this is based off of. commit 3261e96 Author: adrian chadd <adrian@freebsd.org> Date: Sat Jun 13 23:06:11 2020 -0700 add some more debugging behind HTT_TX, including adding the node MAC address (/not/ the destintation MAC!) for HTT TX'ed frames. Also log errors when we fail to allocate msdu related bits rather than just throwing a silent error. This helped me figure out that my traffic issues are actually due to CABQ not being serviced correctly and the firmware contiuing to buffer multicast frames until it fills 1024; then the firmware goes to lunch. commit c5d0372 Author: adrian chadd <adrian@freebsd.org> Date: Sat Jun 13 23:04:56 2020 -0700 Add some debugging around peer map/unmap and wmi peer add/remove. I'm using this to narrow down situations where we're not adding and removing peers whilst flushing TX right. commit 6ed05cc Author: adrian chadd <adrian@freebsd.org> Date: Sat Jun 13 23:04:04 2020 -0700 Add a separate debug section for HTT TX frames. I'll commit the code that uses this soon. commit 0859a6b Author: adrian chadd <adrian@freebsd.org> Date: Sat Jun 13 23:02:50 2020 -0700 Convert over to use the new split node alloc/init. init isn't yet deferred so we still HAVE to defer it, but at least now we can correctly hold node references whilst doing it. This should help fix the issue where we are seeing use-after-free. It still may not be quite right when net80211 goes and spams node delete/add; I need to dig into that some more, especially how it does this with the BSS node for dumb reasons. commit 4cf9678 Author: Bjoern A. Zeeb <bz@FreeBSD.ORG> Date: Tue Jun 2 13:51:24 2020 +0000 Add missing pci_if.h to Makefile SRCS glue. Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate") (cherry picked from commit 72bc95b) commit 9e847ef Author: adrian chadd <adrian@freebsd.org> Date: Fri Jun 12 20:13:24 2020 -0700 Create a new buffer pool - tx management - eventually for TX'ing non data frames. commit 99792cc Author: adrian chadd <adrian@freebsd.org> Date: Fri Jun 12 20:11:38 2020 -0700 Add a new buffer type - tx management - for some later upcoming stuff where the TX buffers and HTC/WMI/beacon buffers come from a different pool. This should hopefully address/fix issues where the transmit ring fills up and it stops processing WMI commands, sending beacons, etc.) commit 4db87e7 Author: adrian chadd <adrian@freebsd.org> Date: Fri Jun 12 08:53:57 2020 -0700 * correct documentation for the hostap/ibss station add method * log the current tx queue depth when a flush fails commit 29b197b Author: adrian chadd <adrian@freebsd.org> Date: Wed Jun 10 22:27:00 2020 -0700 [athp] implement clear peer keys Tested: QCA9880 AP mode! commit eb04336 Author: Adrian Chadd <adrian@FreeBSD.org> Date: Tue Jun 2 10:11:09 2020 +0000 * Add support for per-vap slot time config. * Remove the global slot time method and global wme update method. * Delete old/dead code. This removes one of the long-standing TODO's - the per-VAP slot time configuration. commit e4f191e Author: Bjoern A. Zeeb <bz@FreeBSD.ORG> Date: Tue Jun 2 10:11:09 2020 +0000 Initialise the firmware_log early on before the tunables are read as after that we might get into the log functions passing the bitmask and would panic as the mutex would not be initialised. Fixes Issue erikarn#31. Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate") (cherry picked from commit 1fa1cd5) commit eb82cf2 Author: adrian chadd <adrian@freebsd.org> Date: Wed Jun 3 16:19:21 2020 -0700 [athp] Fix beacon buffer assignment. This finishes fixing the beacon buffer assignment code from the previous pull request. Will need to do some more testing. commit dd8ba8d Author: bzfbd <24442726+bzfbd@users.noreply.github.com> Date: Tue Jun 2 21:05:20 2020 +0000 A double-free problem (erikarn#26) * Disable an athp_freebuf() call in ath10k_wmi_event_host_swba() which lead to double-free panics and also still was assigned for use later on. Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate") * In ath10k_wmi_event_host_swba() rather than freeing the bcn athp_buf (which leads to a double-free) in case we do not have a beacon buffer, map the beacon, and pass it on to the downstream layers to pass it on and out. Fixes Issue erikarn#29. Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate") Co-authored-by: Bjoern A. Zeeb <bz@FreeBSD.ORG> commit ea7f1ad Author: adrian chadd <adrian@freebsd.org> Date: Tue May 12 11:38:42 2020 -0700 Free the node ref if we're not returning an error here and we just consume the mbuf. I'm about to go and redo both the raw transmit and the data transmit paths in preparation for potential software queueing, so I'd like to at least have this code be right before I screw with it further. commit 89e8cb9 Author: adrian chadd <adrian@freebsd.org> Date: Mon May 11 22:53:35 2020 -0700 Get rid of sc_snd; it's a holdover from the initial work I did during super early bring-up. There's no need for a global send queue; but there IS a need for a per-vif and per-peer send queue in order to queue up frames until an asynchronous node change and encryption key programming. (The firmware does some queueing internally for encryption key programming and reprogramming but once the queue is there for node add, it's trivial to buffer frames for everything that needs it.) commit 6c1b344 Author: adrian chadd <adrian@freebsd.org> Date: Mon May 11 22:40:02 2020 -0700 Don't do beacon init under locks; this trips up the locking protocol for busdma. Instead, do it when the vif is created and destroyed, outside of interface add/remove. I've created/destroyed a hostap VAP (and yes, brought it up so it comes up) and it seems to work? :P Thanks to Geramy Loveless for finding this was a problem! commit a34835f Author: adrian chadd <adrian@freebsd.org> Date: Mon May 11 22:39:51 2020 -0700 Comment that yes, initialisation is deferred! commit 8be3f2e Author: adrian chadd <adrian@freebsd.org> Date: Mon May 11 22:39:18 2020 -0700 We do locking now in fwlog; however .. well, I do need to fix the locking some more. commit cda0415 Author: adrian chadd <adrian@freebsd.org> Date: Mon May 11 22:20:18 2020 -0700 Use WITNESS_WARN() to note if locks are held across busdma calls that require no locks be held. This definitely lights up the fact that the hostapd vif descdma is allocated inside the conf lock. Tsk adrian. commit 31bd35d Author: adrian chadd <adrian@freebsd.org> Date: Tue Mar 24 14:59:08 2020 -0700 Add epoch tracker support for running on FreeBSD-HEAD. (Yes, this should eventually turn into something that only happens on -HEAD..) commit 1dd3164 Author: adrian chadd <adrian@freebsd.org> Date: Tue Mar 24 14:53:13 2020 -0700 Silence a warning that popped up in the latest freebsd-head update. commit 6c644e7 Author: Adrian Chadd <adrian@freebsd.org> Date: Thu Feb 7 14:40:24 2019 -0800 Path update commit 4512572 Author: Adrian Chadd <adrian@freebsd.org> Date: Thu Feb 7 14:38:58 2019 -0800 Revert "New athp arvif lock (erikarn#9)" This reverts commit de9e6e1. commit 79e0eef Author: Geramy <admin@glscripting.org> Date: Thu Feb 7 14:36:07 2019 -0800 test request (erikarn#10) * changed timeout to 2 seconds for sloweer systems I have changed the ATH10K_HTC_WAIT_TIMEOUT_MSEC to 2 seconds instead. * took back the change. Instead i'll implement a system that unloads the firmware when the capabilities don't come in correctly and the firmware load crashes. kldload and unload should not have to deal with internal driver issues. * add code to force the driver to attempt to retry to load the interface up to 6 times. add code to force the driver to attempt to retry to load the interface up to 6 times. This should fix kldload issues, as long as the wifi card will work during boot we can automate bringing up the interface in scripts. Thats our first goal. * re-order * re-trying probe fw until sucessful or errors at the 6th try. * undo changes * attempt at retrying to wait for htc to complete and return stopping hif and restarting hif if htc wait target doesnt finish succesfully. * removed return on hif_stop * attemping to recall ath10k_core_probe_fw trying to reset the atheros chip to to load up properly on error. * add sleep statement sleep a little to let the device catch up and be ready. * dumb auto programming features of VSCode capatilized Sleep * not use to freebsd kernel developing. I decided to use pause_sig in the case a signal called us to release before we end sleeping. * added in a ath10k_core_stop need to stop the core its not being called on error. I also have set bmi.done_sent = false. * oops forgot semicolon * test removing ath10k_core_stop from retrying probe and just hack bmi.done_sent * cleaened up my hack for probe retrying turned the probe retry in to functional code and added a retry limit to core.h called ATH10K_FW_PROBE_RETRYS * forgot struct def * added function to cleanup memory leaks added a function to the process that allows us to cleanup any memory leaks if there are any. * removed pause_sig pause_sig isn't being used anywhere else and pause_sig is a delay based function which does not put the thread in the sleep queue so I switched it to tsleep instead. * removed line of code from ath10k * add null check. Grammer correction and add a null check for fwlog locking mutext variable as well as adding a longer timeout for htc connect. * used wrong case used wrong case for null, woops so use to the many other programming languages with lowercase null. * added some mutex checking added mutext checking inside of if_athp_fwlog for some reason its still trying to log on an unitialized mutex, which means somewhere something is still initialized for the first firmware failed load, need to check this out in detail, its weird. * forgot & * chaned from 3 seconds to 1 didnt do anything. * removing annoying warnings removing annoying warnings that come out of my serial device, so i cant see or type anything. * Revert "removing annoying warnings" This reverts commit ad31d5d. * Revert "Revert "removing annoying warnings"" This reverts commit b535d14. * first commit Initialize commit on trying to move the hostap buffer allocation to the athp_parent instead of the add interface section. * fixed type error wrong type was used. * remove extra pointers remove extra pointers. * out of order moved functions in the right order. * forgot initializer * formatting * removed call to deallocate inside of allocate and the label. removed call to deallocate inside of allocate and the label. * added static for compile via git on phone * added dereference via git on phone * moved dma allocate to attach. * moved dma allocate in to if_athp_pci attach * required to add mac.h * moved beacon allocate before the start of all the task queues. * changed from pointer to object. * pointer change didn't make it. * remove assignment address from non_pointer * fixed issue with issue #3 and the htt_rx_ring_refill ath10k_htt_rx_ring_refill does a dma allocate so no other lock can be held during this processor that can't be slept, I found that wmi_tx_beacons was holding the conf lock so I created a wait for that. * Create README.md * change default power to 8 dbM tx_power_recalc takes txpower and * 2 checking to see if lowering increases thw power level of tx because it seems as if tx is not being set because its value is too high. * changed power level to 9 which equals 18. 18 is the power level for below: 11ac HT40 MCS0 18 -93 * moved ath10k_wmi_wait_for_tx_beacons_ready moved ath10k_wmi_wait_for_tx_beacons_ready to ath10k_wmi_cmd_send * ATHP_ARVIF_LOCK changed all conf lock that involved the arvif array to a new arvif lock instead. * changed to conf lock * changed arvif lock for txpower changed the locks on txpower to arvifs lock instead of conf lock. * removed a few not needed arvif locks and changed a few locks. * Revert "removed a few not needed arvif locks and changed a few locks." This reverts commit 2a664da. * Revert "changed arvif lock for txpower" This reverts commit c24e4c2. * fixed locks/kernel crash via git on phone * Update README.md * Update README.md * Update README.md * Update README.md commit de9e6e1 Author: Geramy <admin@glscripting.org> Date: Thu Feb 7 14:20:23 2019 -0800 New athp arvif lock (erikarn#9) * changed timeout to 2 seconds for sloweer systems I have changed the ATH10K_HTC_WAIT_TIMEOUT_MSEC to 2 seconds instead. * took back the change. Instead i'll implement a system that unloads the firmware when the capabilities don't come in correctly and the firmware load crashes. kldload and unload should not have to deal with internal driver issues. * add code to force the driver to attempt to retry to load the interface up to 6 times. add code to force the driver to attempt to retry to load the interface up to 6 times. This should fix kldload issues, as long as the wifi card will work during boot we can automate bringing up the interface in scripts. Thats our first goal. * re-order * re-trying probe fw until sucessful or errors at the 6th try. * undo changes * attempt at retrying to wait for htc to complete and return stopping hif and restarting hif if htc wait target doesnt finish succesfully. * removed return on hif_stop * attemping to recall ath10k_core_probe_fw trying to reset the atheros chip to to load up properly on error. * add sleep statement sleep a little to let the device catch up and be ready. * dumb auto programming features of VSCode capatilized Sleep * not use to freebsd kernel developing. I decided to use pause_sig in the case a signal called us to release before we end sleeping. * added in a ath10k_core_stop need to stop the core its not being called on error. I also have set bmi.done_sent = false. * oops forgot semicolon * test removing ath10k_core_stop from retrying probe and just hack bmi.done_sent * cleaened up my hack for probe retrying turned the probe retry in to functional code and added a retry limit to core.h called ATH10K_FW_PROBE_RETRYS * forgot struct def * added function to cleanup memory leaks added a function to the process that allows us to cleanup any memory leaks if there are any. * removed pause_sig pause_sig isn't being used anywhere else and pause_sig is a delay based function which does not put the thread in the sleep queue so I switched it to tsleep instead. * removed line of code from ath10k * add null check. Grammer correction and add a null check for fwlog locking mutext variable as well as adding a longer timeout for htc connect. * used wrong case used wrong case for null, woops so use to the many other programming languages with lowercase null. * added some mutex checking added mutext checking inside of if_athp_fwlog for some reason its still trying to log on an unitialized mutex, which means somewhere something is still initialized for the first firmware failed load, need to check this out in detail, its weird. * forgot & * chaned from 3 seconds to 1 didnt do anything. * removing annoying warnings removing annoying warnings that come out of my serial device, so i cant see or type anything. * Revert "removing annoying warnings" This reverts commit ad31d5d. * Revert "Revert "removing annoying warnings"" This reverts commit b535d14. * first commit Initialize commit on trying to move the hostap buffer allocation to the athp_parent instead of the add interface section. * fixed type error wrong type was used. * remove extra pointers remove extra pointers. * out of order moved functions in the right order. * forgot initializer * formatting * removed call to deallocate inside of allocate and the label. removed call to deallocate inside of allocate and the label. * added static for compile via git on phone * added dereference via git on phone * moved dma allocate to attach. * moved dma allocate in to if_athp_pci attach * required to add mac.h * moved beacon allocate before the start of all the task queues. * changed from pointer to object. * pointer change didn't make it. * remove assignment address from non_pointer * fixed issue with issue #3 and the htt_rx_ring_refill ath10k_htt_rx_ring_refill does a dma allocate so no other lock can be held during this processor that can't be slept, I found that wmi_tx_beacons was holding the conf lock so I created a wait for that. * Create README.md * change default power to 8 dbM tx_power_recalc takes txpower and * 2 checking to see if lowering increases thw power level of tx because it seems as if tx is not being set because its value is too high. * changed power level to 9 which equals 18. 18 is the power level for below: 11ac HT40 MCS0 18 -93 * moved ath10k_wmi_wait_for_tx_beacons_ready moved ath10k_wmi_wait_for_tx_beacons_ready to ath10k_wmi_cmd_send * ATHP_ARVIF_LOCK changed all conf lock that involved the arvif array to a new arvif lock instead. * changed to conf lock * changed arvif lock for txpower changed the locks on txpower to arvifs lock instead of conf lock. * removed a few not needed arvif locks and changed a few locks. * Revert "removed a few not needed arvif locks and changed a few locks." This reverts commit 2a664da. * Revert "changed arvif lock for txpower" This reverts commit c24e4c2. * fixed locks/kernel crash via git on phone * Update README.md * Update README.md * Update README.md * Update README.md
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This manifests as a station thinking it's still associated but the athp + hostap combo not; net80211 sends unauthed error mgmt frames back to the station but because the subtype matches QOSNULL they're dropped.
my athp_send_mgmt() routine was an initial hack to filter out scan related frames before we had proper offloaded scan support and yes, QOSNULL / NO_DATA frames won't show up in this transmit path.
The text was updated successfully, but these errors were encountered: