factotum is started in bootrc before the network is setup
(as we need it to negotiate wpa key for wifi). once, the network
is setup, the bootstrap authservers are passed in /net/ndb,
which factotum reads when doing bootstrap authdial. it does
this only when no authserver was specified earlier! but we
want net.rc to select the proper bootstrap authserver...
the $secstore variable takes precedence over $auth. as
there is no connection server yet, we have to select the set
of servers here and pass them to secstore with -s flag.
note that this will work if multiple addresses where
specified.
bug: Rnointerrupt was used on Vqueue.used.flags instead of
Vqueue.avail.flags.
introduce vqnotify() function that notifies the device
about available ring advancement.
avoid queue notifications there that can be slow by
checking Unonotify flag in Vqueue.used.flags.
keep track of the number of notifications in the queue.
- properly negotiate Fctrlrx feature bit for promisc and multicast.
- allow setting mac address with ea= option from plan9.ini
- dont read the isr register from ifstats() as it has the side effect of reseting isr status
- embedd the Vqueue array in the Ctlr structure avoiding indirection
- add a interrupt counter Vqueue.nintr for statistical purposes
- only read network status register if the feature has been negotiated
- change name to "virtio" as "ethervirtio" is kind of redundant
continue recursing when we get empty but non-negative answer
from a (claimed) authoritative nameserer that provides more
nameservers.
this fixes wordpress dns:
63766.3: sending to 192.0.80.93/ns1.wordpress.com bossypally.files.wordpress.com ip
63766: rcvd OK from 192.0.80.93 (authoritative)
Q: bossypally.files.wordpress.com ip
Auth: files.wordpress.com 5 min ns mdns1.wordpress.com
files.wordpress.com 5 min ns mdns2.wordpress.com
files.wordpress.com 5 min ns mdns3.wordpress.com
files.wordpress.com 5 min ns mdns4.wordpress.com
files.wordpress.com 5 min ns mdns5.wordpress.com
Hint: mdns1.wordpress.com 4 hr ip 192.0.75.7
mdns2.wordpress.com 4 hr ip 198.181.117.7
mdns3.wordpress.com 4 hr ip 198.181.116.7
mdns4.wordpress.com 4 hr ip 198.181.118.7
mdns5.wordpress.com 4 hr ip 192.0.74.7
63766.4: sending to 192.0.75.7/mdns1.wordpress.com bossypally.files.wordpress.com ip
63766: rcvd OK from 192.0.75.7 (authoritative)
Q: bossypally.files.wordpress.com ip
Ans: bossypally.files.wordpress.com 5 min ip 192.0.72.2
bossypally.files.wordpress.com 5 min ip 192.0.72.3
----------------------------
answer bossypally.files.wordpress.com 5 min ip 192.0.72.2
answer bossypally.files.wordpress.com 5 min ip 192.0.72.3
----------------------------
note the authoritative flag in the first response from ns1.wordpress.com that
would otherwise terminate the search.
add vctlcmd() function to setup and comlete control commands.
handle Vctlq and implement promiscuous and multicast mode commands.
remove Vqueue.block[] and Vqueue.header. these are not properties
of the queue (Vctlq as no block array).
the block[] array only needs to be half the queue size as we use
two descriptors per packet.
fix broken shutdown() and remove useless ctl() function.
when we hit a conflict where the pci INTL register gives us
a different irq than we get from southbridge irq router, dont
just change the router setting to the bios assigned irq (that
was previously known as the BIOS workarround), but assume the
southbridge setting to be valid and change the pci INTL register
on the device to it.
only when the router link doesnt seem to be configured or
disabled, then program the router to the irq that bios asisgned
in the INTL register.
the reason is that changing the router setting changes the
irq routing for *all* devices on the same link and changing
it breaks previously checked and valid interrupt routings.
(so happend with virtualbox where the last device on the bus
is some powermanagement device that has wrong INTL setting
and changing the routing breaks the ethernet interrupts)
this change shouldnt affect modern machines which use ioapic
and mp tables or acpi for pci interrupt routing.
we add new function convmemsize() that returns the size of
*usable* conventional memory that does some sanity checking
and reserves the last KB below the top of memory pointer.
this avoids lowraminit() overriding potential bios tables
and sigsearch() going off the rails looking for tables
at above 640K.
the x200s is too slow on a single core to keep up without
audio buffer underruns, so the idea is to flush screen
in parallel to witing audio samples in a separate process.
with the proc, we also can keep updating the screen on resize
when paused.
Based on OpenBSD driver:
- /sys/dev/pci/azalia.c rev 1.209
- /sys/dev/pci/pcidevs rev 1.1689
- only tested on amd64; machine is an Acer V5-573G
exact model: V5-573G-74518G1Takk
sed just continued writing past genbuf when it should stop
with "Output line too long".
quit when we get unspecified options.
stupid casts from long to char* for no reason.
some 0 vs nil cleanup.
traditionally, the pc kernel mapped the first 8MB of physical
address space. when the kernel size grows beyond that memory mapping,
it will crash on boot and theres no checking in the build process
making sure it fits.
with the pc64 kernel, it is not hard to always map the whole
kernel memory image from KZERO to end[], so that the kernel will
always fit into the initial mapping.