Home | History | Annotate | Download | only in pci
History log of /src/sys/dev/pci/if_wpivar.h
RevisionDateAuthorComments
 1.23  20-Mar-2020  sevan Apply the same change as for if_iwi.c r1.114 here.

This driver sleeps during wpi_media_change(), and thus requires an adaptive
mutex for the media lock.
 1.22  20-Aug-2018  riastradh Suspend the getrfkill thread while we're suspended.

Otherwise it tries to futz with device registers, which doesn't work,
and who knows, maybe is bad.
 1.21  02-Feb-2017  nonaka branches: 1.21.12; 1.21.14;
wlan interfaces make interrupt routine running on softint context.

see http://mail-index.netbsd.org/tech-kern/2016/12/06/msg021281.html

tested device:
* ath at pci: AR5212, AR5424
* athn at pci: AR9287
* ipw at pci: 2100BG
* iwi at pci: 2915ABG
* iwm at pci: 3165, 7260, 8260
* iwn at pci: 4945, 6235
* ral at pci: RT2560
* rtwn at pci: RTL8192CE
 1.20  02-Feb-2017  jakllsch wpi(4): use MSI if available.
 1.19  06-Jan-2015  bouyer branches: 1.19.2; 1.19.4;
As proposed on tech-net@, introduce a new switch type, PSWITCH_TYPE_RADIO,
to be used to report to userland hardware radio switch changes.
powerd(8) will call a "radio_button" script to handle the event.
This script can e.g. start or stop wpa_supplicant.
Update wpi(4) to report PSWITCH_TYPE_RADIO events to sysmon.
 1.18  09-Aug-2014  jmcneill branches: 1.18.2; 1.18.4;
increase WPI_RBUF_COUNT
 1.17  07-Aug-2014  jmcneill simplify wpi_rx_intr rbuf handling and add some more bus_dmamap_sync; fixes stalls when downloading large files for me
 1.16  05-Aug-2014  jmcneill bus_dmamap_sync for rx descriptors too, derived from openbsd driver
 1.15  19-Jan-2010  pooka branches: 1.15.22; 1.15.36;
Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client. This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached. However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff. ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
 1.14  17-Jan-2010  pooka Forward declare struct bpf_if and use that as the type for bpf_if
instead of "void *". Buys us oo times the type-safety for 0 times
the price.
(no functional change)
 1.13  12-Nov-2008  joerg Cache wpi firmware in memory, free it only on invalid content or when
the last user is detached. This stops wpi from accessing the disk on
resume.
 1.12  02-Jul-2008  cube branches: 1.12.2; 1.12.4; 1.12.6;
Protect private mbuf external data storage allocater with a mutex, as it
was done in nfe(4), sk(4) and msk(4). And maybe some others.
Confirmed to fix the usual issue of data corruption by Jared McNeill.
 1.11  09-Jan-2008  degroote branches: 1.11.6; 1.11.10; 1.11.12; 1.11.14;
Add some sysctl to retrieve the radio state (and the debug level).

While here, fixe the return value in case where radio is off (suggested by
joerg@).
 1.10  09-Dec-2007  jmcneill branches: 1.10.2;
Merge jmcneill-pm branch.
 1.9  16-Nov-2007  degroote branches: 1.9.2; 1.9.4;
Use device_t instead of struct device* and use associated functions
Use callout_setfunc and callout_scheduler instead of callout_reset

No functionnal change expected
 1.8  02-Sep-2007  degroote branches: 1.8.4; 1.8.6;
The service queue isn't used anymore so don't allocate it.
It saves a bit of memory and reduces diff with other BSD.
 1.7  02-Sep-2007  degroote Fix scanning code for wpi based on the iwi code.

Keep track of the status of the scan.
On a transition IEEE80211_S_SCAN -> IEEE80211_S_SCAN, don't stop the previous
scan, finish the current scan.
When we receive some frames in the IEEE80211_S_SCAN state, set current_channel
based on the value advertised in beacons or probre reponse.

Moreover, it fixes WPA issues for me.
 1.6  09-Jul-2007  degroote branches: 1.6.2; 1.6.6; 1.6.8;
Sync the driver with the OpenBSD one

1/ Update the driver to use the new firmware images from Intel (2.14.3.)
2/ Read the list of supported channels from the EEPROM instead of having
it hard-coded in the driver.
3/ Limit output power to what is specified in EEPROM.
4/ Decrease output power for highest OFDM rates to reduce distortion.
5/ Automatically adjust output power to temperature changes for increased
throughput and range.
6/ Attach the adapter's onboard thermal sensor to the sensor framework.
7/ Replace 'magic' fields in structures with their correct definitions.
8/ Rewrite the firmware load in order to reduce the diff with OpenBSD one

NOTE2: you must install sysutils/wpi-firmware2 in order to use the new
driver

NOTE2: if you are using a channel not allowed by the regulatory domain
of your adapter, you will no longer be able to associate.

Thanks a lot for his hard work to damien@OpenBSD.org
 1.5  18-Jun-2007  degroote Add a workaround in the case where we have low number of rbuf.
It seems to fix problem of frozen network with wpi.

ok by @joerg.
 1.4  04-Mar-2007  christos branches: 1.4.2; 1.4.4;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.3  13-Jan-2007  degroote branches: 1.3.2;
Sync the wpi driver with the openbsd one. Thanks to Jean-Baptiste
Campesato for his work.
Fix PR/34463


ok dyoung@ joerg@
 1.2  31-Oct-2006  joerg branches: 1.2.2; 1.2.4; 1.2.6;
Move AMRR code out of wpi(4) and ural(4) into net80211 itself.
From OpenBSD.
 1.1  13-Aug-2006  simonb branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
Add a port of the OpenBSD Intel 3945ABG wpi(4) wireless driver, by
Jean-Baptiste Campesato.

From PR kern/33778.
 1.1.8.1  10-Dec-2006  yamt sync with head.
 1.1.6.2  09-Sep-2006  rpaulo sync with head
 1.1.6.1  13-Aug-2006  rpaulo file if_wpivar.h was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:52:18 +0000
 1.1.4.2  01-Feb-2007  ad Sync with head.
 1.1.4.1  18-Nov-2006  ad Sync with head.
 1.1.2.2  03-Sep-2006  yamt sync with head.
 1.1.2.1  13-Aug-2006  yamt file if_wpivar.h was added on branch yamt-pdpolicy on 2006-09-03 15:24:22 +0000
 1.2.6.2  30-Sep-2007  wrstuden Catch up on netbsd-4 as of a few days ago.
 1.2.6.1  03-Sep-2007  wrstuden Sync w/ NetBSD-4-RC_1
 1.2.4.6  21-Jan-2008  yamt sync with head
 1.2.4.5  07-Dec-2007  yamt sync with head
 1.2.4.4  03-Sep-2007  yamt sync with head.
 1.2.4.3  26-Feb-2007  yamt sync with head.
 1.2.4.2  30-Dec-2006  yamt sync with head.
 1.2.4.1  31-Oct-2006  yamt file if_wpivar.h was added on branch yamt-lazymbuf on 2006-12-30 20:48:46 +0000
 1.2.2.2  27-Sep-2007  xtraeme Pull up following revision(s) (requested by degroote in ticket #860):
sys/dev/pci/if_wpivar.h: revision 1.7 (via patch)
sys/dev/pci/if_wpi.c: revision 1.18 (via patch)
sys/dev/pci/if_wpi.c: revision 1.19 (via patch)
sys/dev/pci/if_wpi.c: revision 1.23 (via patch)

Call wpi_stop at the beginning of wpi_init so we are sure that wpi is really
stopped (in particular interrupt are disabled).
Fix possible "packet corruption" which appears on high load
Fix scanning code for wpi based on the iwi code.
Keep track of the status of the scan.
On a transition IEEE80211_S_SCAN -> IEEE80211_S_SCAN, don't stop the previous
scan, finish the current scan.
When we receive some frames in the IEEE80211_S_SCAN state, set current_channel
based on the value advertised in beacons or probre reponse.
Moreover, it fixes WPA issues for me.
 1.2.2.1  27-Jul-2007  liamjfoy Pullup requested by degroote in ticket 795:
Rewrite of the rbuf management
Sync with the last OpenBSD driver
Use the last firmware available from Intel (2.4.14).
Use legal limitations and Tx regulation embedded in the eeprom.
Rewrite the way we handle the firmware.

Pullup the following revisions of this files
sys/dev/pci/if_wpi.c rev 1.7 1.8 1.10 1.12 1.13 1.15 1.16 1.17 via patch
sys/dev/pci/if_wpireg.h rev 1.3 1.4 1.5 via patch
sys/dev/pci/if_wpivar.h rev 1.3 1.5 1.6 via patch
 1.3.2.1  12-Mar-2007  rmind Sync with HEAD.
 1.4.4.1  11-Jul-2007  mjf Sync with head.
 1.4.2.2  09-Oct-2007  ad Sync with head.
 1.4.2.1  15-Jul-2007  ad Sync with head.
 1.6.8.3  23-Mar-2008  matt sync with HEAD
 1.6.8.2  09-Jan-2008  matt sync with HEAD
 1.6.8.1  06-Nov-2007  matt sync with HEAD
 1.6.6.7  21-Nov-2007  joerg Sync with HEAD.
 1.6.6.6  06-Nov-2007  joerg Refactor PNP API:
- Make suspend/resume directly a device functionality. It consists of
three layers (class logic, device logic, bus logic), all of them being
optional. This replaces D0/D3 transitions.
- device_is_active returns true if the device was not disabled and was
not suspended (even partially), device_is_enabled returns true if the
device was enabled.
- Change pnp_global_transition into pnp_system_suspend and
pnp_system_resume. Before running any suspend/resume handlers, check
that all currently attached devices support power management and bail
out otherwise. The latter is not done for the shutdown/panic case.
- Make the former bus-specific generic network handlers a class handler.
- Make PNP message like volume up/down/toogle PNP events. Each device
can register what events they are interested in and whether the handler
should be global or not.
- Introduce device_active API for devices to mark themselve in use from
either the system or the device. Use this to implement the idle handling
for audio and input devices. This is intended to replace most ad-hoc
watchdogs as well.
- Fix somes situations in which audio resume would lose mixer settings.
- Make USB host controllers better deal with suspend in the light of
shared interrupts.
- Flush filesystem cache on suspend.
- Flush disk caches on suspend. Put ATA disks into standby on suspend as
well.
- Adopt drivers to use the new PNP API.
- Fix a critical bug in the generic cardbus layer that made D0->D3
break.
- Fix ral(4) to set if_stop.
- Convert cbb(4) to the new PNP API.
- Apply the PCI Express SCI fix on resume again.
 1.6.6.5  01-Oct-2007  joerg Extend device API by device_power_private and device_power_set_private.
The latter is a temporary mean until the pnp_register API itself is
overhault. This functions allow a generic power handler to store its
state independent of the driver.

Use this and revamp the PCI power handling. Pretty much all PCI devices
had power handlers that did the same thing, generalize this in
pci_generic_power_register/deregister and the handler. This interface
offers callbacks for the drivers to save and restore state on
transistions. After a long discussion with jmcneill@ it was considered
to be powerful enough until evidence is shown that devices can handle
D1/D2 with less code and higher speed than without the full
save/restore. The generic code is carefully written to handle device
without PCI-PM support and ensure that the correct registers are written
to when D3 loses all state.

Reimplement the generic PCI network device handling on
top of PCI generic power handling.

Introduce pci_disable_retry as used and implemented locally at least by
ath(4) and iwi(4). Use it in this drivers to restore behaviour from
before the introduction of generic PCI network handling.

Convert all PCI drivers that were using pnp_register to the new
framework. The only exception is vga(4) as it is commonly used as
console device. Add a note therein that this should be fixed later.
 1.6.6.4  04-Sep-2007  degroote Convert wpi_power to use pci_net_generic_power.
With this, I can use the card after resume.
 1.6.6.3  03-Sep-2007  jmcneill Sync with HEAD.
 1.6.6.2  02-Sep-2007  jmcneill Sync with HEAD.
 1.6.6.1  03-Aug-2007  jmcneill Pull in power management changes from private branch.
 1.6.2.1  03-Sep-2007  skrll Sync with HEAD.
 1.8.6.3  18-Feb-2008  mjf Sync with HEAD.
 1.8.6.2  27-Dec-2007  mjf Sync with HEAD.
 1.8.6.1  19-Nov-2007  mjf Sync with HEAD.
 1.8.4.1  18-Nov-2007  bouyer Sync with HEAD
 1.9.4.1  11-Dec-2007  yamt sync with head.
 1.9.2.1  26-Dec-2007  ad Sync with head.
 1.10.2.1  10-Jan-2008  bouyer Sync with HEAD
 1.11.14.1  03-Jul-2008  simonb Sync with head.
 1.11.12.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.11.10.2  11-Mar-2010  yamt sync with head
 1.11.10.1  04-May-2009  yamt sync with head.
 1.11.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.11.6.1  02-Jul-2008  mjf Sync with HEAD.
 1.12.6.1  16-Nov-2008  snj Pull up following revision(s) (requested by joerg in ticket #62):
sys/dev/pci/if_wpivar.h: revision 1.13
sys/dev/pci/if_wpi.c: revision 1.41
Cache wpi firmware in memory, free it only on invalid content or when
the last user is detached. This stops wpi from accessing the disk on
resume.
 1.12.4.1  19-Jan-2009  skrll Sync with HEAD.
 1.12.2.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.15.36.1  10-Aug-2014  tls Rebase.
 1.15.22.2  03-Dec-2017  jdolecek update from HEAD
 1.15.22.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.18.4.2  05-Feb-2017  skrll Sync with HEAD
 1.18.4.1  06-Apr-2015  skrll Sync with HEAD
 1.18.2.1  12-Jan-2015  snj Pull up following revision(s) (requested by bouyer in ticket #415):
share/man/man9/sysmon_pswitch.9: revision 1.6
sys/dev/pci/if_wpi.c: revision 1.70, 1.71
sys/dev/pci/if_wpivar.h: revision 1.19
sys/dev/sysmon/sysmon_power.c: revision 1.49
sys/sys/power.h: revision 1.20
As proposed on tech-net@, introduce a new switch type, PSWITCH_TYPE_RADIO,
to be used to report to userland hardware radio switch changes.
powerd(8) will call a "radio_button" script to handle the event.
This script can e.g. start or stop wpa_supplicant.
Update wpi(4) to report PSWITCH_TYPE_RADIO events to sysmon.
--
Take sc_rsw_mtx before calling wpi_getrfkill() from wpi_init(),
Problem reported and patch tested by chris at chriswareham.net
 1.19.4.1  21-Apr-2017  bouyer Sync with HEAD
 1.19.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.21.14.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.21.14.1  10-Jun-2019  christos Sync with HEAD
 1.21.12.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)

RSS XML Feed