#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
298848 |
|
30-Apr-2016 |
pfg |
sys: Make use of our rounddown() macro when sys/param.h is available.
No functional change.
|
#
298822 |
|
29-Apr-2016 |
avos |
wpi: convert to ieee80211_add_channel() (mostly noop).
Tested with Intel 3945BG, STA / HOSTAP modes.
|
#
298815 |
|
29-Apr-2016 |
avos |
wpi: remove unused variable.
|
#
297524 |
|
03-Apr-2016 |
avos |
wpi, iwn: fix check in find_eeprom_channel()
Return correct eeprom_chan structure pointer for 7, 8, 11 and 12 5Ghz channels.
|
#
297173 |
|
21-Mar-2016 |
avos |
wpi: remove internal taskqueue
- Replace sc_reinittask() by ieee80211_restart_all() (mostly the same). - Revert r282377 (seems to be unneeded now).
Tested with Intel 3945BG, STA mode.
Differential Revision: https://reviews.freebsd.org/D5056
|
#
293716 |
|
11-Jan-2016 |
avos |
wpi, iwn: implement ic_getradiocaps method
This will allow to restore channel list after switching interface to more restrictive regdomain.
Tested with Intel 3945BG (wpi) only.
Approved by: adrian (mentor) Differential Revision: https://reviews.freebsd.org/D4863
|
#
292176 |
|
13-Dec-2015 |
avos |
wpi, rum and urtwn: update copyright headers
Approved by: adrian (mentor) Differential Revision: https://reviews.freebsd.org/D4489
|
#
291493 |
|
30-Nov-2015 |
avos |
wpi: ignore ic_update_promisc() call when device is not running
This change will fix kernel panic with uninitialized (zeroed) RXON structure.
Tested with Intel 3945BG, IBSS mode.
Approved by: adrian (mentor) Differential Revision: https://reviews.freebsd.org/D4304
|
#
290950 |
|
16-Nov-2015 |
avos |
wpi(4): import r289674
Switch PCI register reads from using magic numbers to using the names defined in pcireg.h
Approved by: adrian (mentor) Differential Revision: https://reviews.freebsd.org/D4185
|
#
289679 |
|
21-Oct-2015 |
kevlo |
Remove BUS_DMA_NOWAIT from bus_dma_tag_create() invocations as it's no valid flag there.
|
#
289165 |
|
12-Oct-2015 |
adrian |
net80211: move ieee80211_free_node() call on error from ic_raw_xmit() to ieee80211_raw_output().
This doesn't free the mbuf upon error; the driver ic_raw_xmit method is still doing that.
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3774
|
#
289163 |
|
12-Oct-2015 |
adrian |
wpi(4): add support for TX fragmentation.
Tested:
* Tested with Intel 3945BG, HOSTAP and STA modes
Differential Revision: https://reviews.freebsd.org/D3770
|
#
289129 |
|
11-Oct-2015 |
adrian |
wpi(4): do not count failures twice for ic_raw_xmit().
Tested:
* Tested with Intel 3945BG, STA mode
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3768
|
#
289128 |
|
11-Oct-2015 |
adrian |
wpi(4): move error handling upper (wpi_tx_data()/wpi_cmd2() -> wpi_raw_xmit()/wpi_transmit()).
Tested:
* Tested with Intel 3945BG, STA mode
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3767
|
#
289127 |
|
11-Oct-2015 |
adrian |
wpi(4): fix possible race between TX/RX threads.
Tested:
* Tested with Intel 3945BG, STA mode
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3766
|
#
289126 |
|
11-Oct-2015 |
adrian |
wpi(4): do not allocate space for unused rings.
Tested:
* Tested with Intel 3945BG, STA mode
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3765
|
#
289125 |
|
10-Oct-2015 |
adrian |
wpi(4): do not override iv_recv_mgmt() in non-adhoc modes.
Tested:
* Tested with Intel 3945BG, IBSS and STA modes
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3764
|
#
289124 |
|
10-Oct-2015 |
adrian |
wpi(4): use more correct types.
This change fixes some amount of -Wsign-conversion and -Wconversion warnings and sets correct sizes for some variables (as a result, some loop counters were touched too).
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3763
|
#
289012 |
|
08-Oct-2015 |
adrian |
wpi(4): check size before transmitting frames
In addition to https://bz-attachments.freebsd.org/attachment.cgi?id=156112; fixes https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=144987.
Tested:
* Tested with Intel 3945BG, STA mode
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3762
|
#
289011 |
|
08-Oct-2015 |
adrian |
wpi(4): fix some byteorder conversions
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3761
|
#
289010 |
|
08-Oct-2015 |
adrian |
wpi(4): fix 'maybe uninitialized' warnings
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3760
|
#
289008 |
|
08-Oct-2015 |
adrian |
wpi(4): add some branch predictions.
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3759
|
#
289006 |
|
08-Oct-2015 |
adrian |
wpi(4): drop unnecessary locking in wpi_set_pslevel().
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3758
|
#
288999 |
|
07-Oct-2015 |
adrian |
wpi(4): remove software queues
Use direct dispatch into the destination hardware ring instead of using a staging queue.
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3757
|
#
288636 |
|
03-Oct-2015 |
adrian |
net80211: drop ieee80211_beacon_offsets parameter from ieee80211_beacon_alloc() and ieee80211_beacon_update()
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3659
|
#
288635 |
|
03-Oct-2015 |
adrian |
net80211: drop redundant 3rd parameter from iv_key_set().
The MAC can be fetched from the key struct.
I added the ndis updates to make it compile.
Submitted by: <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3657
|
#
288263 |
|
26-Sep-2015 |
adrian |
Don't duplicate checks; net80211 now does this for us.
Submitted by: s3erios@gmail.com
|
#
288095 |
|
22-Sep-2015 |
adrian |
net80211: include one copy of struct ieee80211_beacon_offsets into ieee80211vap
Submitted by: Andriy Voskoboinyk <s3erios@gmail.com> Differential Revision: https://reviews.freebsd.org/D3658
|
#
287197 |
|
27-Aug-2015 |
glebius |
Replay r286410. Change KPI of how device drivers that provide wireless connectivity interact with the net80211 stack.
Historical background: originally wireless devices created an interface, just like Ethernet devices do. Name of an interface matched the name of the driver that created. Later, wlan(4) layer was introduced, and the wlanX interfaces become the actual interface, leaving original ones as "a parent interface" of wlanX. Kernelwise, the KPI between net80211 layer and a driver became a mix of methods that pass a pointer to struct ifnet as identifier and methods that pass pointer to struct ieee80211com. From user point of view, the parent interface just hangs on in the ifconfig list, and user can't do anything useful with it.
Now, the struct ifnet goes away. The struct ieee80211com is the only KPI between a device driver and net80211. Details:
- The struct ieee80211com is embedded into drivers softc. - Packets are sent via new ic_transmit method, which is very much like the previous if_transmit. - Bringing parent up/down is done via new ic_parent method, which notifies driver about any changes: number of wlan(4) interfaces, number of them in promisc or allmulti state. - Device specific ioctls (if any) are received on new ic_ioctl method. - Packets/errors accounting are done by the stack. In certain cases, when driver experiences errors and can not attribute them to any specific interface, driver updates ic_oerrors or ic_ierrors counters.
Details on interface configuration with new world order: - A sequence of commands needed to bring up wireless DOESN"T change. - /etc/rc.conf parameters DON'T change. - List of devices that can be used to create wlan(4) interfaces is now provided by net.wlan.devices sysctl.
Most drivers in this change were converted by me, except of wpi(4), that was done by Andriy Voskoboinyk. Big thanks to Kevin Lo for testing changes to at least 8 drivers. Thanks to pluknet@, Oliver Hartmann, Olivier Cochard, gjb@, mmoll@, op@ and lev@, who also participated in testing.
Reviewed by: adrian Sponsored by: Netflix Sponsored by: Nginx, Inc.
|
#
286865 |
|
17-Aug-2015 |
adrian |
Convert more ifp->if_softc -> ic->ic_softc.
These should be a big no-op.
Tested:
* make universe
|
#
286437 |
|
07-Aug-2015 |
adrian |
Revert the wifi ifnet changes until things are more baked and tested.
* 286410 * 286413 * 286416
The initial commit broke a variety of debug and features that aren't in the GENERIC kernels but are enabled in other platforms.
|
#
286410 |
|
07-Aug-2015 |
glebius |
Change KPI of how device drivers that provide wireless connectivity interact with the net80211 stack.
Historical background: originally wireless devices created an interface, just like Ethernet devices do. Name of an interface matched the name of the driver that created. Later, wlan(4) layer was introduced, and the wlanX interfaces become the actual interface, leaving original ones as "a parent interface" of wlanX. Kernelwise, the KPI between net80211 layer and a driver became a mix of methods that pass a pointer to struct ifnet as identifier and methods that pass pointer to struct ieee80211com. From user point of view, the parent interface just hangs on in the ifconfig list, and user can't do anything useful with it.
Now, the struct ifnet goes away. The struct ieee80211com is the only KPI between a device driver and net80211. Details:
- The struct ieee80211com is embedded into drivers softc. - Packets are sent via new ic_transmit method, which is very much like the previous if_transmit. - Bringing parent up/down is done via new ic_parent method, which notifies driver about any changes: number of wlan(4) interfaces, number of them in promisc or allmulti state. - Device specific ioctls (if any) are received on new ic_ioctl method. - Packets/errors accounting are done by the stack. In certain cases, when driver experiences errors and can not attribute them to any specific interface, driver updates ic_oerrors or ic_ierrors counters.
Details on interface configuration with new world order: - A sequence of commands needed to bring up wireless DOESN"T change. - /etc/rc.conf parameters DON'T change. - List of devices that can be used to create wlan(4) interfaces is now provided by net.wlan.devices sysctl.
Most drivers in this change were converted by me, except of wpi(4), that was done by Andriy Voskoboinyk. Big thanks to Kevin Lo for testing changes to at least 8 drivers. Thanks to Olivier Cochard, gjb@, mmoll@, op@ and lev@, who also participated in testing. Details here:
https://wiki.freebsd.org/projects/ifnet/net80211
Still, drivers: ndis, wtap, mwl, ipw, bwn, wi, upgt, uath were not tested. Changes to mwl, ipw, bwn, wi, upgt are trivial and chances of problems are low. The wtap wasn't compilable even before this change. But the ndis driver is complex, and it is likely to be broken with this commit. Help with testing and debugging it is appreciated.
Differential Revision: D2655, D2740 Sponsored by: Nginx, Inc. Sponsored by: Netflix
|
#
283540 |
|
25-May-2015 |
glebius |
Change three methods in struct ieee80211com, namely ic_updateslot, ic_update_mcast and ic_update_promisc, to pass pointer to the ieee80211com, not to the ifnet.
Sponsored by: Netflix Sponsored by: Nginx, Inc.
|
#
283537 |
|
25-May-2015 |
glebius |
Set ic_softc in all 802.11 drivers. Not required right now, but will be used quite soon.
Sponsored by: Netflix Sponsored by: Nginx, Inc.
|
#
283536 |
|
25-May-2015 |
adrian |
Update wpi(4) to use the new mgmt RX API.
|
#
283527 |
|
25-May-2015 |
glebius |
Make net80211 drivers supply their device name to the net80211 layer, so that the latter doesn't need to go through struct ifnet to get their name.
Sponsored by: Netflix Sponsored by: Nginx, Inc.
|
#
282402 |
|
03-May-2015 |
adrian |
[iwn] Do not filter control frames in monitor mode.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282401 |
|
03-May-2015 |
adrian |
Handle properly IBSS merges (works with patch from bug 199632).
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282400 |
|
03-May-2015 |
adrian |
Fix various powersave races + optimize tx/rx pointer update when powersave is off.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282399 |
|
03-May-2015 |
adrian |
[iwn?] Use correct sequence numbers with non-QoS STAs.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282398 |
|
03-May-2015 |
adrian |
Fix warning about comparison of integers of different signs.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282397 |
|
03-May-2015 |
adrian |
[iwn?] Fix memory leak in wpi_reset_tx_ring().
PR: kern/197143 Differential Revision: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282396 |
|
03-May-2015 |
adrian |
Use nitems() for counting elements in arrays.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282395 |
|
03-May-2015 |
adrian |
Do not include WPI_START_SCAN event processing into non-debug builds.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282394 |
|
03-May-2015 |
adrian |
Fix sequence number generation for beacon frames.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282393 |
|
03-May-2015 |
adrian |
Add debug output for WPI_BEACON_SENT event.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282392 |
|
03-May-2015 |
adrian |
Try to fix passive scanning hang on beacon miss.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282391 |
|
03-May-2015 |
adrian |
Add comment about AUTH -> AUTH state transition + fix some style issues.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282390 |
|
03-May-2015 |
adrian |
Display more information for beacon miss debugging.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282389 |
|
03-May-2015 |
adrian |
Limit minimum threshold of missed beacons.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282388 |
|
03-May-2015 |
adrian |
Improve beacon miss detection.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282387 |
|
03-May-2015 |
adrian |
Create another debug category for WPI_BEACON_MISSED notification.
Differential Revision: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282386 |
|
03-May-2015 |
adrian |
Unbreak scanning after RUN -> SCAN state transition.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282385 |
|
03-May-2015 |
adrian |
Check channels which are passed in IBSS mode.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282384 |
|
03-May-2015 |
adrian |
Do not disable beacon notifications (unbreaks scanning on passive channels).
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282383 |
|
03-May-2015 |
adrian |
Fix pause scan time calculation (the remainder must be less than beacon interval).
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282382 |
|
03-May-2015 |
adrian |
Fix active/passive dwell calculation.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282381 |
|
03-May-2015 |
adrian |
Turn off led when leaving RUN state.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282378 |
|
03-May-2015 |
adrian |
Add TX status codes (obtained from iwlegacy)
PR: kern/197143 Differential Revision: Andriy Voskoboinyk <s3erios@gmail.com> Obtained from: Linux drivers/net/wireless/iwlegacy
|
#
282377 |
|
03-May-2015 |
adrian |
Move radiooff_task to the internal taskqueue.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282376 |
|
03-May-2015 |
adrian |
Use another workaround for scanning.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282375 |
|
03-May-2015 |
adrian |
Add wpi_check_bss_filter()
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282373 |
|
03-May-2015 |
adrian |
Remove workaround for bug 199676.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282371 |
|
03-May-2015 |
adrian |
Add a few local variables to improve readability.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282370 |
|
03-May-2015 |
adrian |
Remove this; it's currently a no-op.
History note: it's good to document what the driver expects like this even if it's currently a no-op.
Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
282369 |
|
03-May-2015 |
adrian |
Retry twice at the same rate.
Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
281288 |
|
09-Apr-2015 |
adrian |
Do not access peripheral before clock stabilization.
Tested:
* Intel 3945ABG NIC, STA mode
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
281287 |
|
09-Apr-2015 |
adrian |
Fix buffer overflow introduced in previous commits (unbreaks 802.11a capable NICs).
Tested:
* PCIe Intel 3945ABG NIC
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280127 |
|
15-Mar-2015 |
kib |
Fix build with clang 3.6, silence -Wcast-qual warning.
Sponsored by: The FreeBSD Foundation Acked by: adrian
|
#
280120 |
|
15-Mar-2015 |
adrian |
Add a new taskqueue (device specific, not net80211 ic->tq); use it for device restart.
(Committers note - once scan overhaul and a few other things have been fixed in net80211 to not block things in the taskqueue, this can disappear and the device specific taskqueues in other drivers can also go away.)
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280119 |
|
15-Mar-2015 |
adrian |
Workaround delays caused by vmem_check().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280118 |
|
15-Mar-2015 |
adrian |
Fix scan timeouts with powersave enabled.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280116 |
|
15-Mar-2015 |
adrian |
Don't unlock mutex in interrupt thread (except for wpi_rx_done() - for now) - fixes various races between wpi_notif_intr() and wpi_stop_locked().
(attachment 154381)
Committers note: yes, unlock/if_input/lock has to go away, but that'll have to be done later.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280114 |
|
15-Mar-2015 |
adrian |
Use correct types
(attachment 154379)
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280113 |
|
15-Mar-2015 |
adrian |
Add another lock for the TX path.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280112 |
|
15-Mar-2015 |
adrian |
Add an extra mutex for qfullmsk / ring->queued variables.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280111 |
|
15-Mar-2015 |
adrian |
Regroup ring state checks in wpi_tx_done().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280110 |
|
15-Mar-2015 |
adrian |
Don't use sc->qfullmsk in wpi_start().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280109 |
|
15-Mar-2015 |
adrian |
turn sc_tx_timeout into its own callout, rather than a global watchdog timer.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280108 |
|
15-Mar-2015 |
adrian |
Add mutex for RXON structure; convert some callouts/lock use to use RXON rather than the global WPI lock.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280107 |
|
15-Mar-2015 |
adrian |
Use WPI_FILTER_BSS for checking current state.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280106 |
|
15-Mar-2015 |
adrian |
Split TX and scan timeouts; use a callout now for the scan timeout.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280105 |
|
15-Mar-2015 |
adrian |
Add experimental HOSTAP support.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280104 |
|
15-Mar-2015 |
adrian |
Merge wpi_start() and wpi_start_locked().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280103 |
|
15-Mar-2015 |
adrian |
Minor optimisation in wpi_limit_dwell()
PR: kenr/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280102 |
|
15-Mar-2015 |
adrian |
Rearrange checks in wpi_send_rxon().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280101 |
|
15-Mar-2015 |
adrian |
Fix some printfs(); add some debugging.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280100 |
|
15-Mar-2015 |
adrian |
Add more KASSERTs.
(Committer note: these checks will have to be re-established in a future commit as /well/ as having the KASSERTs.)
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280099 |
|
15-Mar-2015 |
adrian |
Disable powersave in IBSS mode (packet loss > 90%.)
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280098 |
|
15-Mar-2015 |
adrian |
Do some cleanup before device startup.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280097 |
|
15-Mar-2015 |
adrian |
Acquire ifq lock when checking / modifying IFF_DRV_OACTIVE flag.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280096 |
|
15-Mar-2015 |
adrian |
Merge wpi_init() and wpi_init_locked().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280095 |
|
15-Mar-2015 |
adrian |
Refactor wpi_ioctl().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280094 |
|
15-Mar-2015 |
adrian |
Add WPI_DEBUG_NODE + some debugging.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280093 |
|
15-Mar-2015 |
adrian |
* Add new debug category * Refactor out / restructure / extend debugging information
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280092 |
|
15-Mar-2015 |
adrian |
Remove unrelated comment.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280091 |
|
15-Mar-2015 |
adrian |
Remove unnecessary assignment.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280089 |
|
15-Mar-2015 |
adrian |
Remove unnecessary debug output.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280088 |
|
15-Mar-2015 |
adrian |
Add support for AES-CCMP group keys.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280087 |
|
15-Mar-2015 |
adrian |
Encrypt frame if IEEE80211_BPF_CRYPTO is set.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280086 |
|
15-Mar-2015 |
adrian |
Use separate mutex for wv_bcbuf and wv_boff structures.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280085 |
|
15-Mar-2015 |
adrian |
Add prefixes to field names.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280084 |
|
15-Mar-2015 |
adrian |
Use ieee80211_beacon_update() for dynamic beacon contents.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280083 |
|
15-Mar-2015 |
adrian |
Move beacon initialisation to wpi_init_beacon()
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280082 |
|
15-Mar-2015 |
adrian |
Use a static buffer in wpi_cmd - rather than alloc/free'ing the beacon buffer frequently.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280081 |
|
15-Mar-2015 |
adrian |
Use WPI_RSSI_OFFSET instead of stat->noise (always 0 for me)
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280080 |
|
15-Mar-2015 |
adrian |
Fix debug category in wpi_read_eeprom_band()
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280079 |
|
15-Mar-2015 |
adrian |
Move IBSS assocation processing to wpi_newassoc().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280078 |
|
15-Mar-2015 |
adrian |
wpi_tx_done() shouldn't wait for wpi_start().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280077 |
|
15-Mar-2015 |
adrian |
Add node table lock - addresses LOR in wpi_node_free().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280076 |
|
15-Mar-2015 |
adrian |
Optimise sc->rev processing.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280075 |
|
15-Mar-2015 |
adrian |
Use ring->queued for WPI_CMD_TX_DATA only.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280074 |
|
15-Mar-2015 |
adrian |
Move some code under WPI_LOCK().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280073 |
|
15-Mar-2015 |
adrian |
Remove unnecessary locking.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280072 |
|
15-Mar-2015 |
adrian |
Eliminate the WPI_FLAG_BUSY flag.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280071 |
|
15-Mar-2015 |
adrian |
Add separate lock for TX queues.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280070 |
|
15-Mar-2015 |
adrian |
Wrap node addition in STA mode into wpi_add_sta_node().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280069 |
|
15-Mar-2015 |
adrian |
Replace kernel unit allocator with local set of functions.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280068 |
|
15-Mar-2015 |
adrian |
Move key processing in wpi_tx_data.
(This is in preparation for further work to support hardware encryption.)
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280067 |
|
15-Mar-2015 |
adrian |
Remove some un-needed variables.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280066 |
|
15-Mar-2015 |
adrian |
Reformatting - break lines ~ 80 characters.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280065 |
|
15-Mar-2015 |
adrian |
wpi_intr(): remove duplicate code
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280064 |
|
15-Mar-2015 |
adrian |
Replace few numbers with named constants.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280063 |
|
15-Mar-2015 |
adrian |
Wrap cast to (struct wpi_node *) into WPI_NODE macros
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280062 |
|
15-Mar-2015 |
adrian |
msleep() -> mtx_sleep()
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280061 |
|
15-Mar-2015 |
adrian |
Fix warning: Value stored to 'supportsa' is never read.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280060 |
|
15-Mar-2015 |
adrian |
Fix error handling in wpi_scan().
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280059 |
|
15-Mar-2015 |
adrian |
Fix indentation - non-functional change.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280058 |
|
15-Mar-2015 |
adrian |
Check some variables only on active TX rings
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280057 |
|
15-Mar-2015 |
adrian |
Use correct pointer for wpi_softc
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280056 |
|
15-Mar-2015 |
adrian |
Fix panics in wpi_tx_done() when powersave is enabled
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280055 |
|
15-Mar-2015 |
adrian |
Fix races between wpi_rx_done() and wpi_stop()
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280054 |
|
15-Mar-2015 |
adrian |
Divide ackfailcnt by 2 (firmware decreases rate after two unsuccessful retries)
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280053 |
|
15-Mar-2015 |
adrian |
Run callout_reset() with mutex held.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280052 |
|
15-Mar-2015 |
adrian |
Add missed ieee80211_draintask()
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280051 |
|
15-Mar-2015 |
adrian |
Fix a typo (IEEE80211_S_SCAN -> IEEE80211_F_SCAN)
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
280050 |
|
15-Mar-2015 |
adrian |
Fix mbuf mapping errors in wpi_cmd2() + add check for nsegs
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
279763 |
|
07-Mar-2015 |
adrian |
Undo some issues from the previous big patch - there's no padding on RX, so remove DATAPAD and re-do the padding in the TX path manually.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
279762 |
|
07-Mar-2015 |
adrian |
Use the correct mac addresses when initialising things.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3rios@gmail.com>
|
#
278764 |
|
14-Feb-2015 |
adrian |
More fixes to wpi(4), again not by me! Woo!
- Use IEEE80211_F_DATAPAD; - (c->ic_flags & IEEE80211_CHAN_PASSIVE) -> IEEE80211_IS_CHAN_PASSIVE(c); - Convert ackfailcnt to int (there is dereference to *(int *) in ieee80211_ratectl_tx_complete()); - Fix & move cleanup to the end in wpi_rx_done(); - Add missed lock in wpi_update_beacon(); - Try to fix powersave.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
278366 |
|
07-Feb-2015 |
adrian |
Big wpi(4) overhaul! Not by me!
This is a sync against iwn(4) and openbsd.
- Add power management support; - Add background scanning support; - Fix few LORs; - Handle rfkill switch state changes properly; - Fix recovering after firmware failure; - Add more error checking; - Cleanup & disable by default debug output; - Update macroses names; - Other various fixes; - Add IBSS support: - don't set data_ntries field for management frames; - Add AHDEMO support: - fix padding; - Sync eeprom functions; - Use CMD_RXON_ASSOC where possible; - Enable HW CCMP encryption/decryption for pairwise keys; - Fix filter flags for CMD_RXON.
Tested (by submitter) - iwn 3945 NIC. I have one somewhere; I'll validate this later on and revert it if it's a problem.
Thanks!
PR: 197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
275966 |
|
20-Dec-2014 |
adrian |
Remove some hard-coded IE assembly over to use net80211 methods.
PR: kern/196069 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
|
#
271849 |
|
19-Sep-2014 |
glebius |
Mechanically convert to if_inc_counter().
|
#
267992 |
|
28-Jun-2014 |
hselasky |
Pull in r267961 and r267973 again. Fix for issues reported will follow.
|
#
267985 |
|
27-Jun-2014 |
gjb |
Revert r267961, r267973:
These changes prevent sysctl(8) from returning proper output, such as:
1) no output from sysctl(8) 2) erroneously returning ENOMEM with tools like truss(1) or uname(1) truss: can not get etype: Cannot allocate memory
|
#
267961 |
|
27-Jun-2014 |
hselasky |
Extend the meaning of the CTLFLAG_TUN flag to automatically check if there is an environment variable which shall initialize the SYSCTL during early boot. This works for all SYSCTL types both statically and dynamically created ones, except for the SYSCTL NODE type and SYSCTLs which belong to VNETs. A new flag, CTLFLAG_NOFETCH, has been added to be used in the case a tunable sysctl has a custom initialisation function allowing the sysctl to still be marked as a tunable. The kernel SYSCTL API is mostly the same, with a few exceptions for some special operations like iterating childrens of a static/extern SYSCTL node. This operation should probably be made into a factored out common macro, hence some device drivers use this. The reason for changing the SYSCTL API was the need for a SYSCTL parent OID pointer and not only the SYSCTL parent OID list pointer in order to quickly generate the sysctl path. The motivation behind this patch is to avoid parameter loading cludges inside the OFED driver subsystem. Instead of adding special code to the OFED driver subsystem to post-load tunables into dynamically created sysctls, we generalize this in the kernel.
Other changes: - Corrected a possibly incorrect sysctl name from "hw.cbb.intr_mask" to "hw.pcic.intr_mask". - Removed redundant TUNABLE statements throughout the kernel. - Some minor code rewrites in connection to removing not needed TUNABLE statements. - Added a missing SYSCTL_DECL(). - Wrapped two very long lines. - Avoid malloc()/free() inside sysctl string handling, in case it is called to initialize a sysctl from a tunable, hence malloc()/free() is not ready when sysctls from the sysctl dataset are registered. - Bumped FreeBSD version to indicate SYSCTL API change.
MFC after: 2 weeks Sponsored by: Mellanox Technologies
|
#
267580 |
|
17-Jun-2014 |
jhb |
Fix teardown of static DMA allocations in various NIC drivers: - Add missing calls to bus_dmamap_unload() in et(4). - Check the bus address against 0 to decide when to call bus_dmamap_unload() instead of comparing the bus_dma map against NULL. - Check the virtual address against NULL to decide when to call bus_dmamem_free() instead of comparing the bus_dma map against NULL. - Don't clear bus_dma map pointers to NULL for static allocations. Instead, treat the value as completely opaque. - Pass the correct virtual address to bus_dmamem_free() in wpi(4) instead of trying to free a pointer to the virtual address.
Reviewed by: yongari
|
#
260444 |
|
08-Jan-2014 |
kevlo |
Rename definition of IEEE80211_FC1_WEP to IEEE80211_FC1_PROTECTED.
The origin of WEP comes from IEEE Std 802.11-1997 where it defines whether the frame body of MAC frame has been encrypted using WEP algorithm or not. IEEE Std. 802.11-2007 changes WEP to Protected Frame, indicates whether the frame is protected by a cryptographic encapsulation algorithm.
Reviewed by: adrian, rpaulo
|
#
260064 |
|
29-Dec-2013 |
marius |
- Probe with BUS_PROBE_DEFAULT instead of 0. - Nuke code setting PCI_POWERSTATE_D0; pci(4) already does that for type 0 devices. - There's no need to keep track of resource IDs. - Quiesce the interrupt before actually detaching. - Use DEVMETHOD_END. - Use NULL instead of 0 for pointers.
MFC after: 1 week
|
#
257176 |
|
26-Oct-2013 |
glebius |
The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare to this event, adding if_var.h to files that do need it. Also, include all includes that now are included due to implicit pollution via if_var.h
Sponsored by: Netflix Sponsored by: Nginx, Inc.
|
#
243857 |
|
04-Dec-2012 |
glebius |
Mechanically substitute flags from historic mbuf allocator with malloc(9) flags in sys/dev.
|
#
236381 |
|
01-Jun-2012 |
adrian |
Add a missing #include, required for IEEE80211_DEBUG.
|
#
233387 |
|
23-Mar-2012 |
bschmidt |
Use suspend/resume methods provided by net80211. This ensures that the appropriate state handling takes place, not doing so results in the device doing nothing until manual intervention.
Reviewed by: iwasaki Tested by: iwasaki (iwi) MFC after: 4 weeks
|
#
228621 |
|
17-Dec-2011 |
bschmidt |
Fix some net80211 enum nits: - ic_vap_create() uses an ieee80211_opmode argument - ieee80211_rate2media() takes an ieee80211_phymode argument - ieee80211_plcp2rate() takes an ieee80211_phytype argument - cast to enum ieee80211_protmode and ieee80211_roamingmode to silence compiler warnings
Submitted by: arundel@
|
#
222543 |
|
31-May-2011 |
bschmidt |
Add module version to iwi/ipw/wpi and iwn.
The version is used to check if a module is already preset, not setting it results in:
can't re-use a leaf (ipw)! module_register: module pci/ipw already exists! Module pci/ipw failed to register: 17
while trying to load the module due to an entry in loader.conf. With this commit we get the expected:
module ipw already present!
Reported by: Dru Lavigne, bz Tested by: bz MFC after: 1 week
|
#
221299 |
|
01-May-2011 |
bschmidt |
No need for htole32(), which is an uint8_t.
|
#
218909 |
|
21-Feb-2011 |
brucec |
Fix typos - remove duplicate "the".
PR: bin/154928 Submitted by: Eitan Adler <lists at eitanadler.com> MFC after: 3 days
|
#
217511 |
|
17-Jan-2011 |
bschmidt |
Pull ieee80211_ratectl_node_init() calls from drivers into net80211. This fixes hostap mode for at least ral(4) and run(4), because there is no sufficient call into drivers which could be used initialize the node related ratectl variables.
MFC after: 3 days
|
#
216824 |
|
30-Dec-2010 |
bschmidt |
The RX path is missing a few bus_dmamap_*() calls, this results in modification of memory which was already free'd and eventually in: wpi0: could not map mbuf (error 12) wpi0: wpi_rx_intr: bus_dmamap_load failed, error 12 and an usuable device.
PR: kern/144898 MFC after: 3 days
|
#
216557 |
|
19-Dec-2010 |
bschmidt |
Fix panic trying to use monitor mode. The iwn_cmd() calls issued by iwn_config() want to msleep() on the mutex.
PR: kern/138427 Submitted by: Henry Hu <henry.hu.sh at gmail.com> MFC after: 3 days
|
#
216523 |
|
18-Dec-2010 |
bschmidt |
Add 2 missing bus_dmamap_sync() calls. Those fix random 'scan timeout', 'could not set power mode', 'device config failed' and other errors due reading invalid memory.
Obtained from: OpenBSD MFC after: 3 days
|
#
216522 |
|
18-Dec-2010 |
bschmidt |
Fix association on 5GHz channels. The device is initially configured using a 2GHz channel with appropriate flags set to sc->config. Due to not zeroing sc->config for auth/assoc those flags are still set while trying to connect on a 5GHz channel.
MFC after: 3 days
|
#
216521 |
|
18-Dec-2010 |
bschmidt |
Fix a panic while disabling the RF kill button, caller of the wpi_rfkill_resume() function will take care of the lock.
PR: kern/144898 MFC after: 3 days
|
#
216238 |
|
06-Dec-2010 |
bschmidt |
Fix scanning after loosing a connection. The firmware assumes that as long as an association ID is set any scan is supposed to be a background scan. This implies that the firmware will switch back to the associated channel after a certain threshold, though, we are not notified about that. We currently catch this case by a timer which will reset the firmware after a 'scan timeout', though, upper layers are not notified about that and will simply hang until manual intervention. Fix this by resetting the firmware's knowledge about any association on RUN -> ASSOC and !INIT -> SCAN transitions.
Tested by: Zhihao Yuan <lichray at gmail.com> MFC after: 1 week
|
#
214894 |
|
06-Nov-2010 |
bschmidt |
Instead of using the AMRR ratectl algo as default for drivers which have the IEEE80211_C_RATECTL flag set, default to NONE for all drivers. Only if a driver calls ieee80211_ratectl_init() check if the NONE algo is still selected and try to use AMRR in that case. Drivers are still free to use any other algo by calling ieee80211_ratectl_set() prior to the ieee80211_ratectl_init() call.
After this change it is now safe to assume that a ratectl algo is always available and selected, which renders the IEEE80211_C_RATECTL flag pretty much useless. Therefore revert r211314 and 211546.
Reviewed by: rpaulo MFC after: 2 weeks
|
#
211314 |
|
14-Aug-2010 |
bschmidt |
Introduce IEEE80211_C_RATECTL, drivers which use the ratectl framework should set this capability.
MFC after: 2 weeks
|
#
207554 |
|
03-May-2010 |
sobomax |
Add new tunable 'net.link.ifqmaxlen' to set default send interface queue length. The default value for this parameter is 50, which is quite low for many of today's uses and the only way to modify this parameter right now is to edit if_var.h file. Also add read-only sysctl with the same name, so that it's possible to retrieve the current value.
MFC after: 1 month
|
#
206416 |
|
09-Apr-2010 |
rpaulo |
Fix recent breakage: wpi_newassoc() wasn't supposed to be removed and it needs to call ieee80211_ratectl_node_init().
Submitted by: bschmidt MFC after: 1 month
|
#
206358 |
|
07-Apr-2010 |
rpaulo |
net80211 rate control framework (net80211 ratectl).
This framework allows drivers to abstract the rate control algorithm and just feed the framework with the usable parameters. The rate control framework will now deal with passing the parameters to the selected algorithm. Right now we have AMRR (the default) and RSSADAPT but there's no way to select one with ifconfig, yet. The objective is to have more rate control algorithms in the net80211 stack so all drivers[0] can use it. Ideally, we'll have the well-known sample rate control algorithm in the net80211 at some point so all drivers can use it (not just ath).
[0] all drivers that do rate control in software, that is.
Reviewed by: bschmidt, thompsa, weyongo MFC after: 1 months
|
#
200530 |
|
14-Dec-2009 |
gavin |
Don't panic on failure to attach if we fail before or during the if_alloc() of ifp. This fixes the panic reported in the PR, but not the attach failure.
PR: kern/139079 Tested by: Steven Noonan <steven uplinklabs.net> Reviewed by: thompsa Approved by: ed (mentor) MFC after: 2 weeks`
|
#
199037 |
|
08-Nov-2009 |
dougb |
Properly turn off debugging
LART applied (gently) by: sam
|
#
199018 |
|
07-Nov-2009 |
dougb |
Turn off WPI_DEBUG by default as the driver seems sufficiently stable at this point.
Reviewed by: benjsc, thompsa
|
#
195562 |
|
10-Jul-2009 |
rpaulo |
For ic_opmode switch cases, provide a default label with a printf saying this opmode is not supported.
Approved by: re (kib)
|
#
192468 |
|
20-May-2009 |
sam |
Overhaul monitor mode handling: o replace DLT_IEEE802_11 support in net80211 with DLT_IEEE802_11_RADIO and remove explicit bpf support from wireless drivers; drivers now use ieee80211_radiotap_attach to setup shared data structures that hold the radiotap header for each packet tx/rx o remove rx timestamp from the rx path; it was used only by the tdma support for debugging and was mostly useless due to it being 32-bits and mostly unavailable o track DLT_IEEE80211_RADIO bpf attachments and maintain per-vap and per-com state when there are active taps o track the number of monitor mode vaps o use bpf tap and monitor mode vap state to decide when to collect radiotap state and dispatch frames; drivers no longer explicitly directly check bpf state or use bpf calls to tap frames o handle radiotap state updates on channel change in net80211; drivers should not do this (unless they bypass net80211 which is almost always a mistake) o update various drivers to be more consistent/correct in handling radiotap o update ral to include TSF in radiotap'd frames o add promisc mode callback to wi
Reviewed by: cbzimmer, rpaulo, thompsa
|
#
191956 |
|
10-May-2009 |
thompsa |
Abort any scan on a fatal firmware. ic_scan_curchan is overridden to perform the scan in firmware and this relies on the firmware to wake up the scan task on completion.
|
#
191746 |
|
02-May-2009 |
thompsa |
Create a taskqueue for each wireless interface which provides a serialised sleepable context for net80211 driver callbacks. This removes the need for USB and firmware based drivers to roll their own code to defer the chip programming for state changes, scan requests, channel changes and mcast/promisc updates. When a driver callback completes the hardware state is now guaranteed to have been updated and is in sync with net80211 layer.
This nukes around 1300 lines of code from the wireless device drivers making them more readable and less race prone.
The net80211 layer has been updated as follows - all state/channel changes are serialised on the taskqueue. - ieee80211_new_state() always queues and can now be called from any context - scanning runs from a single taskq function and executes to completion. driver callbacks are synchronous so the channel, phy mode and rx filters are guaranteed to be set in hardware before probe request frames are transmitted.
Help and contributions from Sam Leffler.
Reviewed by: sam
|
#
190579 |
|
30-Mar-2009 |
sam |
Hoist 802.11 encapsulation up into net80211: o call ieee80211_encap in ieee80211_start so frames passed down to drivers are already encapsulated o remove ieee80211_encap calls in drivers o fixup wi so it recreates the 802.3 head it requires from the 802.11 header contents o move fast-frame aggregation from ath to net80211 (conditional on IEEE80211_SUPPORT_SUPERG): - aggregation is now done in ieee80211_start; it is enabled when the packets/sec exceeds ieee80211_ffppsmin (net.wlan.ffppsmin) and frames are held on a staging queue according to ieee80211_ffagemax (net.wlan.ffagemax) to wait for a frame to combine with - drivers must call back to age/flush the staging queue (ath does this on tx done, at swba, and on rx according to the state of the tx queues and/or the contents of the staging queue) - remove fast-frame-related data structures from ath - add ieee80211_ff_node_init and ieee80211_ff_node_cleanup to handle per-node fast-frames state (we reuse 11n tx ampdu state) o change ieee80211_encap calling convention to include an explicit vap so frames coming through a WDS vap are recognized w/o setting M_WDS
With these changes any device able to tx/rx 3Kbyte+ frames can use fast-frames.
Reviewed by: thompsa, rpaulo, avatar, imp, sephe
|
#
190526 |
|
29-Mar-2009 |
sam |
Eliminate ic_myaddr so changing the mac address of a device works correctly: o remove ic_myaddr from ieee80211com o change ieee80211_ifattach to take the mac address of the physical device and use that to setup the lladdr. o replace all references to ic_myaddr in drivers by IF_LLADDR o related cleanups (e.g. kill dead code)
PR: kern/133178 Reviewed by: thompsa, rpaulo
|
#
190462 |
|
27-Mar-2009 |
jmallett |
Put the "%d retries" debug message in the transmit path behind WPI_DEBUG_TX rather than behind a seemingly accidental constant likely left over from one of the related drivers which uses log levels rather than per-facility debugging flags. This should get rid of contextless messages on the console for people who have not set (or cleared the default) debugging flags.
|
#
190458 |
|
27-Mar-2009 |
jmallett |
o) Check that no overrun or CRC errors were encountered in receiving a packet. Linux, OpenBSD and our iwn(4) all do this. It also results in a huge performance improvement (and the rejection of a fair number of apparently-bad packets on receive) on my hardware. o) Like the wpi(4) driver in OpenBSD, and like our iwn(4), also drop runt packets. o) Don't bother doing IFQ_POLL and then IFQ_DRV_DEQUEUE, just do IFQ_DRV_DEQUEUE outright. This is more similar to how OpenBSD and our iwn(4) work.
Reviewed by: sam
|
#
188582 |
|
13-Feb-2009 |
sam |
remove references to ic_stats
Spotted by: Lucius Windschuh <lwindschuh@googlemail.com>
|
#
184345 |
|
27-Oct-2008 |
sam |
o use the new association callback to notify the driver when joining a bss in sta and adhoc modes; this should've been done forever ago as most all drivers use this hook to set per-station transmit parameters such as for tx rate control o adjust drivers to remove explicit calls to the driver newassoc method
|
#
182127 |
|
24-Aug-2008 |
benjsc |
Correct detection of particular wpi cards which only support b/g and fix the output to indicate b/g not a/g
Submitted by: ischram at telenet.be Reviewed by: thompsa Approved by: sam (co-mentor) MFC after: 1 month
|
#
179957 |
|
23-Jun-2008 |
thompsa |
- Fix compile if WPI_DEBUG is not defined - Allow debug.wpi to be set from a tunable - Put ring reset messages back under debug - Add more debug output around channel init
|
#
179643 |
|
07-Jun-2008 |
sam |
Change the calling convention for ic_node_alloc to deal with some longstanding issues: o pass the vap since it's now the "coin of the realm" and required to do things like set initial tx parameters in private node state for use prior to association o pass the mac address as cards that maintain outboard station tables require this to create an entry (e.g. in ibss mode) o remove the node table reference, we only have one node table and it's unlikely this will change so this is not needed to find the com structure
|
#
179037 |
|
16-May-2008 |
thompsa |
The beacon miss notification must run without locks held has it calls back into wpi_raw_xmit();
|
#
178957 |
|
11-May-2008 |
sam |
Minor cleanup of vap create work: o add IEEE80211_C_STA capability to indicate sta mode is supported (was previously assumed) and mark drivers as capable o add ieee80211_opcap array to map an opmode to the equivalent capability bit o move IEEE80211_C_OPMODE definition to where capabilities are defined so it's clear it should be kept in sync (on future additions) o check device capabilities in clone create before trying to create a vap; this makes driver checks unneeded o make error codes return on failed clone request unique o temporarily add console printfs on clone request failures to aid in debugging; these will move under DIAGNOSTIC or similar before release
|
#
178704 |
|
01-May-2008 |
thompsa |
Unify all the wifi *_ioctl routines - Limit grabbing the lock to SIOCSIFFLAGS. - Move ieee80211_start_all() to SIOCSIFFLAGS. - Remove SIOCSIFMEDIA as it is not useful. - Limit ether_ioctl to only SIOCGIFADDR. SIOCSIFADDR and SIOCSIFMTU have no affect as there is no input/output path in the vap parent. The vap code will handle the reinit of the mac address changes. - Split off ndis_ioctl_80211 as it was getting too different to wired devices.
This fixes a copyout while locked and a lock recursion.
Reviewed by: sam
|
#
178354 |
|
20-Apr-2008 |
sam |
Multi-bss (aka vap) support for 802.11 devices.
Note this includes changes to all drivers and moves some device firmware loading to use firmware(9) and a separate module (e.g. ral). Also there no longer are separate wlan_scan* modules; this functionality is now bundled into the wlan module.
Supported by: Hobnob and Marvell Reviewed by: many Obtained from: Atheros (some bits)
|
#
177119 |
|
12-Mar-2008 |
sam |
fix inverted test that disabled ACK's on xmit
|
#
177043 |
|
10-Mar-2008 |
thompsa |
Update wpi(4) with stability fixes - remove second taskqueue - busdma 16k alignment workaround - use busdma instead of external mbuf storage on Rx - locking fixes - net80211 state change fixes - improve scanning reliability - improve radio hw switch interaction - consolidate callouts
Parts obtained from: benjsc, sam Tested by: many
|
#
175872 |
|
01-Feb-2008 |
phk |
Give MEXTADD() another argument to make both void pointers to the free function controlable, instead of passing the KVA of the buffer storage as the first argument.
Fix all conventional users of the API to pass the KVA of the buffer as the first argument, to make this a no-op commit.
Likely break the only non-convetional user of the API, after informing the relevant committer.
Update the mbuf(9) manual page, which was already out of sync on this point.
Bump __FreeBSD_version to 800016 as there is no way to tell how many arguments a CPP macro needs any other way.
This paves the way for giving sendfile(9) a way to wait for the passed storage to have been accessed before returning.
This does not affect the memory layout or size of mbufs.
Parental oversight by: sam and rwatson.
No MFC is anticipated.
|
#
175695 |
|
26-Jan-2008 |
sam |
rx mbufs must have a pkthdr; use m_gethdr to populate the rx ring (and while here correct the mbuf type)
Submitted by: Sam Banks <w0lfie@clear.net.nz> MFC after: 1 week
|
#
175418 |
|
17-Jan-2008 |
jhb |
- Retire npe_defrag(), gem_defrag(), msk_defrag(), nfe_defrag(), and re_defrag() and use m_collapse() instead. - Replace a reference to ath_defrag() in a comment in if_wpi.c with m_collapse().
|
#
173977 |
|
27-Nov-2007 |
benjsc |
Fix up a race condition with the callout_stop method in newstate.
The call should happen with the driver lock held. We don't hold the driver lock in newstate as it's a separate thread where we can't sleep (and we only call wpi_cmd in async mode).
Discovered By: Attillo's callout rework Approved By: mlaier (comentor)
|
#
173976 |
|
27-Nov-2007 |
benjsc |
Handle missed beacons correctly
Approved by: mlaier (comentor)
|
#
173585 |
|
13-Nov-2007 |
rink |
Remove the IEEE80211_C_WEP capability flag - setting it makes net80211 expect that the driver will handle WEP encryption. However, this does not seem to be implemented by this driver (or maybe the chipset doesn't support it?)
Removing the flag makes my wpi card work using wpa_supplicant(8) on a network with 802.1x security (without this change it authenticated fine, but tcpdump only saw garbage packets)
Reviewed by: benjsc, imp (mentor) Approved by: imp (mentor), sam
|
#
173489 |
|
08-Nov-2007 |
benjsc |
Turn off debug output, its been confusing users.
Approved by: mlaier (comentor)
|
#
173362 |
|
05-Nov-2007 |
benjsc |
Initial Import of wpi driver based on p4 changeset 128641.
This import includes: o wpi Wireless driver for the Intel 3945 Wireless Lan Controller (802.11abg) (sys/dev/wpi) o Intel firmware revision 2.14.4 & associated LICENSE (sys/dev/contrib/wpi, sys/contrib/dev/wpi/LICENSE) o wpifw Firmware driver (sys/modules/wpifw)
Approved by: mlaier, sam (co-mentors)
|