freebsd-nq/sys/net80211
Adrian Chadd 781487cfc6 [net80211] turn the default TX key configuration (for WEP) into a vap callback.
The ath10k firmware supports hardware WEP offload, and in native wifi mode
(or 802.3 ethernet mode, for that matter) the WEP key isn't actually included
in the TX payload from net80211.  Instead, a separate firmware command is issued
that sets the default TX key to be the specified key.

However, net80211 doesn't at all inform the driver layer that this is
occuring - it just "expects" to be inserting WEP header information
when doing WEP TX, even with hardware encryption.

So, to better support the newer world order, turn the default TX key assignment
into a VAP method that can be overridden by the driver and ensure its wrapped
in a crypto begin/end set.  That way it should be correctly atomic from the
point of view of keychanges (as long as the driver does the right thing.)

It'd be nice if we passed through to the key_set call a flag that says
"also make this the default key" - that's captured here by calling the
deftxkey method after the key_set method.  Maybe I can do that later.

Note: this is a net80211 ABI change, and will require a kernel+modules
recompile.  Happy Holidays, etc.

Tested:

* ath10k driver port
* rtwn_usb, WEP station
2016-12-27 06:10:28 +00:00
..
_ieee80211.h [net80211] start laying down the foundation for 11ac support. 2016-12-16 04:43:31 +00:00
ieee80211_acl.c These files were getting sys/malloc.h and vm/uma.h with header pollution 2016-02-01 17:41:21 +00:00
ieee80211_action.c net80211: fix more compiler warnings. 2016-05-19 21:08:33 +00:00
ieee80211_action.h
ieee80211_adhoc.c [net80211] Only send out a probe request if we see an unknown IBSS node that matches our SSID. 2016-11-22 06:53:52 +00:00
ieee80211_adhoc.h
ieee80211_ageq.c These files were getting sys/malloc.h and vm/uma.h with header pollution 2016-02-01 17:41:21 +00:00
ieee80211_ageq.h
ieee80211_alq.c [net80211] extend the net80211 ALQ code to support variable payloads. 2016-11-06 19:18:25 +00:00
ieee80211_alq.h [net80211] extend the net80211 ALQ code to support variable payloads. 2016-11-06 19:18:25 +00:00
ieee80211_amrr.c net80211: ieee80211_ratectl*: switch to reusable KPI 2016-10-02 20:35:55 +00:00
ieee80211_amrr.h
ieee80211_crypto_ccmp.c [net80211] high oops on the high seas, or "god damnit compilers, it's 2016 and you're supposed to save me from this." 2016-11-22 17:36:16 +00:00
ieee80211_crypto_none.c net80211: fix more compiler warnings. 2016-05-19 21:08:33 +00:00
ieee80211_crypto_tkip.c [net80211] handle hardware encryption offload in the receive path 2016-11-19 02:00:24 +00:00
ieee80211_crypto_wep.c [net80211] WEP offload support. 2016-12-22 23:59:53 +00:00
ieee80211_crypto.c [net80211] turn the default TX key configuration (for WEP) into a vap callback. 2016-12-27 06:10:28 +00:00
ieee80211_crypto.h [net80211] turn the default TX key configuration (for WEP) into a vap callback. 2016-12-27 06:10:28 +00:00
ieee80211_ddb.c net80211: fix LOR/deadlock in ieee80211_ff_node_cleanup(). 2016-06-29 17:25:46 +00:00
ieee80211_dfs.c [net80211] migrate the time_* macros to ieee80211_* namespace. 2016-03-30 00:44:10 +00:00
ieee80211_dfs.h
ieee80211_freebsd.c [net80211] Add a variant on ieee80211_get_rx_params() that returns a pointer. 2016-10-23 08:21:35 +00:00
ieee80211_freebsd.h [net80211] add a field for storing a 64 bit TSC. 2016-12-08 07:57:16 +00:00
ieee80211_hostap.c [net80211] handle hardware encryption offload in the receive path 2016-11-19 02:00:24 +00:00
ieee80211_hostap.h
ieee80211_ht.c [net80211] Remove extra \n. 2016-11-22 02:02:13 +00:00
ieee80211_ht.h [net80211] implement "first RX defines the BAW" hack. 2016-11-10 18:36:40 +00:00
ieee80211_hwmp.c net80211: fix more compiler warnings. 2016-05-19 21:08:33 +00:00
ieee80211_input.c net80211: convert all ieee80211_input_mimo*() consumers 2016-10-12 20:50:13 +00:00
ieee80211_input.h net80211: hide subtype mask & shift in function call. 2016-04-20 21:15:55 +00:00
ieee80211_ioctl.c [net80211] turn the default TX key configuration (for WEP) into a vap callback. 2016-12-27 06:10:28 +00:00
ieee80211_ioctl.h [net80211] add an ioctl for LDPC configuration. 2016-04-26 01:26:11 +00:00
ieee80211_mesh.c net80211: fix more compiler warnings. 2016-05-19 21:08:33 +00:00
ieee80211_mesh.h Migrate the 802.11s locks out into ieee80211_freebsd.h, so they can be 2015-05-26 04:25:11 +00:00
ieee80211_monitor.c Begin plumbing ieee80211_rx_stats through the receive path. 2015-05-25 16:37:41 +00:00
ieee80211_monitor.h
ieee80211_node.c [net80211] store references to VHT and related IEs. 2016-11-22 02:51:06 +00:00
ieee80211_node.h [net80211] start laying down the foundation for 11ac support. 2016-12-16 04:43:31 +00:00
ieee80211_output.c [net80211] announce 11n capabilities in probe requests in IBSS mode. 2016-11-15 01:47:37 +00:00
ieee80211_phy.c net80211: fix more compiler warnings. 2016-05-19 21:08:33 +00:00
ieee80211_phy.h [net80211] rename 11n rate macros into a useful spot 2016-04-05 22:01:56 +00:00
ieee80211_power.c [net80211] migrate the time_* macros to ieee80211_* namespace. 2016-03-30 00:44:10 +00:00
ieee80211_power.h
ieee80211_proto.c net80211: fix 'pending CAC -> RUN transition lost' bug. 2016-12-24 23:43:14 +00:00
ieee80211_proto.h net80211: convert all ieee80211_input_mimo*() consumers 2016-10-12 20:50:13 +00:00
ieee80211_radiotap.c Remove unused include. 2015-05-25 14:54:10 +00:00
ieee80211_radiotap.h
ieee80211_ratectl_none.c net80211: ieee80211_ratectl*: switch to reusable KPI 2016-10-02 20:35:55 +00:00
ieee80211_ratectl.c [net80211] Begin implementing rate control module stats. 2016-03-16 02:07:04 +00:00
ieee80211_ratectl.h net80211: ieee80211_ratectl*: switch to reusable KPI 2016-10-02 20:35:55 +00:00
ieee80211_regdomain.c ifconfig: set by default FCC regulatory domain for wireless interfaces. 2016-05-26 13:14:08 +00:00
ieee80211_regdomain.h
ieee80211_rssadapt.c net80211: ieee80211_ratectl*: switch to reusable KPI 2016-10-02 20:35:55 +00:00
ieee80211_rssadapt.h
ieee80211_scan_sta.c [net80211] Don't check bgscanidle setting in net80211 for full-offload scan. 2016-11-17 21:52:00 +00:00
ieee80211_scan_sw.c [net80211] don't abort a background scan upon reception of a single packet. 2016-10-28 02:09:45 +00:00
ieee80211_scan_sw.h Break out the current 802.11 software scan methods into an indirect table. 2015-06-08 02:35:43 +00:00
ieee80211_scan.c [net80211] add comments! 2016-10-28 02:10:07 +00:00
ieee80211_scan.h Break out the current 802.11 software scan methods into an indirect table. 2015-06-08 02:35:43 +00:00
ieee80211_sta.c [net80211] handle hardware encryption offload in the receive path 2016-11-19 02:00:24 +00:00
ieee80211_sta.h
ieee80211_superg.c net80211: remove obsolete comment. 2016-12-07 23:33:59 +00:00
ieee80211_superg.h net80211: fix LOR/deadlock in ieee80211_ff_node_cleanup(). 2016-06-29 17:25:46 +00:00
ieee80211_tdma.c net80211: switch from ieee80211_iterate_nodes() to 2016-11-14 23:51:28 +00:00
ieee80211_tdma.h Begin plumbing ieee80211_rx_stats through the receive path. 2015-05-25 16:37:41 +00:00
ieee80211_var.h [net80211] turn the default TX key configuration (for WEP) into a vap callback. 2016-12-27 06:10:28 +00:00
ieee80211_wds.c [net80211] handle hardware encryption offload in the receive path 2016-11-19 02:00:24 +00:00
ieee80211_wds.h
ieee80211_xauth.c These files were getting sys/malloc.h and vm/uma.h with header pollution 2016-02-01 17:41:21 +00:00
ieee80211.c [net80211] turn the default TX key configuration (for WEP) into a vap callback. 2016-12-27 06:10:28 +00:00
ieee80211.h [net80211] Add a macro to see if a frame is a management frame or not. 2016-10-23 08:19:43 +00:00