Commit graph

371 commits

Author SHA1 Message Date
cinap_lenrek e32940f726 acpi: skip disabled LAPIC entries
disabled LAPIC entries overwrote the bootstrap processor
apic causing the machine panic with: "no bootstrap processor".
(problem with lenovo X230)

just ignore entries that are disabled or collide with
entries already found. (should not happen)
2013-07-07 12:44:30 +02:00
cinap_lenrek c333697c41 pci: add intel panter point lpc south bridge 2013-07-06 15:19:15 +02:00
cinap_lenrek b31d6f0665 audiohda: x230 pci magic 2013-07-06 13:44:25 +02:00
cinap_lenrek 6d24cced8f mtrr: fix mtrr index out of range for vcnt > Nmtrr 2013-07-05 00:55:48 +02:00
cinap_lenrek 3fbf35112f wifi: move scanning/probe into wifi layer, avoid associating with wpa network until rsne is setup 2013-07-04 00:04:47 +02:00
cinap_lenrek 82ccf5b26a wifi: send probe requests for hidden ssid 2013-07-01 00:55:34 +02:00
cinap_lenrek 6c2e9a98e2 wifi: handle authentication independent of current bss to allow multiple ap's (roaming) 2013-07-01 23:32:21 +02:00
cinap_lenrek cf38ab75fc reintroduce *notsc= option
the issues with the previous tsc change where not related to the tsc
but where problems with timesync using an old frequency file. a
patch to fix timesync was commited, so so we reintroduce the *notsc=
again.
2013-06-25 20:32:43 +02:00
cinap_lenrek 5165864dbb wifi: add watchdog to drop bss if stuck in ap association or get deauthenticated by the ap 2013-06-24 17:24:50 +02:00
cinap_lenrek 196b39126c etheriwl: add rxon() debug print 2013-06-24 17:20:08 +02:00
cinap_lenrek a3b35c224b wifi: fix debug print #l1 -> #1 2013-06-24 23:22:05 +02:00
cinap_lenrek 4da4785412 wifi: signal ap deassociation to aux/wpa with a zero length read.
aux/wpa needs to reset its reply counter on deassociation to
properly restart key negotiation. we signal this with a zero
length read on the connections filtering for eapol protocol.
2013-06-24 22:47:07 +02:00
cinap_lenrek 5c0106b7cf etheriwl: allow switching channels in promisc mode
promisc mode prevented the call to rxon() in transmit
possibly causing association to fail while running snoopy.
2013-06-23 18:27:17 +02:00
cinap_lenrek f39374b47e wifi: fix missed eapol frames
allow the driver to associate the node with a new aid right after
we receive the association response, not just when we transmit
a packet which usualy does not happen as eapol is initiated by
the access point so there are no transmit calls. we just call
transmit from the wifiproc with a nil block to introduce the node.
2013-06-23 07:14:52 +02:00
cinap_lenrek fb22c34833 wifi: simplify 2013-06-23 01:01:36 +02:00
ppatience0 9f3cdd7249 wifi: fix typo 2013-06-22 20:36:56 -04:00
cinap_lenrek 677746244d wifi: have to check for both, bssid/essid in wifictl too 2013-06-23 00:32:16 +02:00
cinap_lenrek a8cc5cff0e wifi: allow selecting specific access point with bssid= parameter and wifictl command 2013-06-23 23:54:15 +02:00
cinap_lenrek 43323512f0 wifi: add a debug flag and printing
add a debug flag that can be set in the ethernet options which
causes status transitions and wifictl messages to be printed.
2013-06-23 22:09:16 +02:00
cinap_lenrek 04b7803291 apic: eleminate splhi and apictimerlock, per cpu apictimer structure
the splhi() and apictimerlock in the Mach isnt neccesary, as
portclock always holds the ilock of the per mach timer queue
when calling timerset().

as fastticks() and the portclock timers are all handled on a
per processor basis, i think it should be theoretically possible
for the lapics to run at different frequencies. so we measure
the lapic frequency for each individual lapic and keep them in
a per processor Apictimer structure instead of assuming them
to be the same.
2013-06-22 09:50:34 +02:00
cinap_lenrek e38938384f wifi: add list of setup encryption key ciphers and lengths into ifstats file
it is usefull to see what encryption keys have been
estabished by aux/wpa.
2013-06-22 01:22:57 +02:00
cinap_lenrek 3487653524 apic: fix lapic timer divider (fixes wrong lapic frequency on boot)
loading the divider before programming one shot mode *sometimes*
gives the wrong frequency. (X200s got 192Mhz vs. 266Mhz, after
5 boot attempts)

also reload the divider after programming periodic mode. (from
http://wiki.osdev.org/APIC_timer)
2013-06-22 00:47:24 +02:00
cinap_lenrek 49c9955aea reverting *notsc= option, this needs another revision 2013-06-21 02:49:08 +02:00
cinap_lenrek 8da4c8dcde plan9.ini: add *notsc= option to disable use of TSC as righ resolution clock
we previously used tsc only on cpu kernel. now that
we use it on terminal kernel too, there might be some
surprises ahead.

so make it possible to disable tsc for machines where
the tsc rate is not kept constant across cores or is
dynamically adjusted by power management.
2013-06-19 20:56:01 +02:00
cinap_lenrek 5bb8203bf6 acpi: use Tblsz enum instead of sizeof(Tbl) due to alignment, enable use tsc on terminal kernel (thank erik) 2013-06-19 22:26:27 +02:00
cinap_lenrek 4cf627a131 wpa: automatically pick cipher suits from beacon rsne 2013-06-15 19:02:17 +02:00
cinap_lenrek 62f6d1bc43 no need to disable fpu in execregs, this is done in procsetup() already 2013-06-07 18:04:59 +02:00
cinap_lenrek f0c9bb979f archacpi: handle multiple SSDT tables
we cannot assume theres only one instance of an acpi table. some
bios have multiple SSDT tables and we would only find the first
one.

now, we keep a second array to record the physical address of
the table visited by maptable(). load all instances to the
SSDT.
2013-06-07 18:03:44 +02:00
cinap_lenrek aedb35af2c ether82557: panic() if receive buffer allocation fails on init 2013-06-01 01:42:39 +02:00
cinap_lenrek f7ffca5c1c ether83815: dont raise error() from etherreset
can't raise error() without process context. use panic() instead.
2013-06-01 01:40:56 +02:00
cinap_lenrek 9652f5bec5 pc kernel: simulate FXSAVE/FXRSTOR tag-byte from x87 tag-word, copy fp state across fork
the tag-word is not compatible between x87 and sse, have to convert
properly for emulation to work.

we now copy fp state across fork (again!) to preserve FCW and MXCSR
registers. this might not be neccesary as we could probably just
get the current value for the curren process and avoid the fpsave()
call, but become conservative again.
2013-05-30 23:16:22 +02:00
cinap_lenrek 44e4aad870 kernel: dont copy fpsave on fork, simplify freeing waitq in pexit(), remove unused semlock from Proc sturcure 2013-05-27 01:17:11 +02:00
cinap_lenrek 257c7e958e keep fpregs always in sse (FXSAVE) format, adapt libmach and acid files for new format
we now always use the new FXSAVE format in FPsave structure and fpregs
file, converting back and forth in fpx87save() and fpx87restore().

document that fprestore() is a destructive operation now.

change fp register definition in libmach and adapt fpr() acid funciton.

avoid unneccesary copy of fpstate and fpsave in sysfork(). functions
including syscalls do not preserve the fp registers and copying fpstate
from the current process would mean we had to fpsave(&up->fpsave); first.
simply not doing it, new process starts in FPinit state.
2013-05-26 22:41:40 +02:00
cinap_lenrek 96511b274d kernel: fix floating point exceptions (was broken by sse kernel changes)
the fpenv() instruction stores in x87 format, using mathstate()
would interpret fpsave as FPssestate in case it was enabled!
instead, pass the status word and fppc explicitely to mathnote()
in matherror().

get rid of m->fpsavealign buffer, as we can just use FPssesave struct
which has enougth padding so rounding up base pointer will not overflow.
2013-05-25 22:44:19 +02:00
cinap_lenrek 8b40eecea8 kernel: cleanup /sys/src/9/pc/mkfile PORT= and OBJ= lists 2013-05-21 19:45:40 +02:00
cinap_lenrek f6833ce428 wifi: properly size internal wifi input processing queue
we only used wifi->iq to process management frames only, now its also used
to forward encrypted data frames, so size it accordingly.
2013-05-21 19:29:57 +02:00
jpathy 5331734335 merge 2013-05-22 21:55:08 +05:30
jpathy 81b7451972 sse kernel support (sources) 2013-05-22 23:47:05 +05:30
cinap_lenrek 58201a67c1 uarti8250: print on malloc failure 2013-05-20 17:43:30 +02:00
cinap_lenrek c4f57ff492 pcuart: malloc error handling, cleanup 2013-05-20 17:32:48 +02:00
cinap_lenrek 6ac8a3ca65 devether: handle malloc error in etherprobe() 2013-05-20 01:17:38 +02:00
cinap_lenrek 926dd18a7a wifi: handle malloc errors in wifiattach() 2013-05-20 01:03:20 +02:00
cinap_lenrek 8020743579 ether8169: do phywakeup magic only for specific mac versions (from openbsd) 2013-05-12 18:25:24 +02:00
cinap_lenrek 29ece7fda4 ether8169: and phy wakeup and reset phy before enabling auto negotiation
this brings up the 8198B on BurnZeZ's ASRock Z68 Professional Gen3 board.
2013-05-12 02:58:02 +02:00
cinap_lenrek fe073f852a sdide: add Intel SERIES 6 SATA controller pci ids 2013-05-11 18:45:46 +02:00
jpathy e3883b050e Add RDRAND Support for /dev/random 2013-05-08 23:27:58 +05:30
cinap_lenrek 27f65a138a uartpci: add detection for StarTech PCI8S9503V (P588UG) (from sources) 2013-05-01 16:29:58 +02:00
cinap_lenrek 05d3cc414d ether8169: fix deadlock in allocation error case for attach. (thanks erik)
typo in error case, should qunlock() instead of qlock().
2013-04-22 18:50:29 +02:00
cinap_lenrek e2baea8ddf sdiahci: add pci id for 82801eb/er and c210 2013-04-14 18:13:26 +02:00
cinap_lenrek 3045d63969 reduce software cursor flickering
the software cursor starts flickering and reacts bumby if a process
spends most of its time with drawlock acquired because the timer interrupt
thats supposed to redraw the cursor fails to acquire the lock at the time
the timer fires.

instead of trying to draw the cursor on the screen from a timer interrupt
30 times per second, devmouse now creates a process calling cursoron() and
cursoroff() when the cursor needs to be redrawn. this allows the swcursor
to schedule a redraw while holding the drawlock in swcursoravoid() and
cursoron()/cursoroff() are now able to wait for a qlock (drawlock) because
they get called from process context.

the overall responsiveness is also improved with this change as the cursor
redraw rate isnt limited to 30 times a second anymore.
2013-04-14 16:28:54 +02:00