-cut yhe trailing '\r' from input lines so that commands are recognized
-use db_vprintf() for output in interactive mode to get the "|more" effect
-do the same setjmp() game as ddb, so we can return to the prompt
Reenable statistics interrupts, reading it as 16bit caused it to not be cleared,and thus the eventual interrupt to not be cleared (and this caused an
infinite loop in interrupt routine).
While I'm there count STE_CarrierSenseErrors as oerror (this is incremented
each time we try to send a packet and the link is down).
- when a transmit underrun occurs, only reset the transmit logic. This prevents
the link from going down at the MII level (the same logic can probably
be used for other transmit errors)
- set the urgent threshold to half the start threshold. From experiments
this helps a bit decreasing the number of underruns
Now that underruns don't cause the interface to stop for several seconds,
make back out the default transmit threshold to 128.
XS_SELTIMEOUT and XS_TIMEOUT errors- but only do so if the device exists
already.
Devices that are being probed won't be found via periph_lookup, so we can
use that to find if a device exists for the purposes of honoring retries.
among other things, it behaved as if full-duplex audio devices
were always ready for writing. Also commented the code in case.
This fixes PRs kern/11179 and kern/13829.
XXX: this program currently doesn't parse macros that cross the EOL with \
(there are a couple in sys/dev/scsipi/scsi_message.h).
with that issue temporarily worked around, this change generates the
same output as the version of aicasm without this change.
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups
cause the link to go down for several seconds on my Dlink DFE580-TX (quad-port
DL1002). This behavior is unacceptable, especially as the driver usually
gets several underrun at once, causing the link to be almost unaviable
for several 10s of seconds.
Bump the default transmit threshold to 1504 bytes to avoid transmit underrun.
is down cause the chip to create an IE_UpdateStats condition which can't be
cleared, causing the driver to enter an interrupt loop.
Workaround: mask IE_UpdateStats
- mute the volume for interrupt channel
- add some improvements for device initialization
but recording does not work properly.
Reported and tested by Jan Wagner <waja@cyconet.org>. Thanks.
space address and use it where the mappings of the VGA card are registered
before descenting too deep into "memory" type specific code
(pci_mem_find() gets noisy if it doesn't like the register)
probing.
Make sure to not initialize the protocol more than once, see rev. 1.11 of
the old psm_intelli.c driver (this caused hangs when starting X).
Unify the "ignore garbage" behaviour (which we already did if PMS_STANDARD
protocol was used), the old intelli-driver did the same and on some scroll
mice a stream of garbage is emitted shortly after reset.
recording ring buffer could overrun the end of the buffer. When
recording resumed, memory after the end of the buffer would be read,
sometimes causing a system crash.
places where they disagree with our list (and reality). In those cases,
I've kept the old value and added a comment. The RISC iX list stops at
ID 181 (0xb5).
two packets (just like the old psm.c driver did). And don't insist on the
first byte having bit 0x08 set.
This makes some odd trackball device work.
Thanks to Tyler Mitchell for reporting and testing.
assigned by RISCOS Ltd (and were assigned by Acorn) to be unique across all
manufacturers. This means that associating each one with a manufacturer (and
checking the manufacturer when attaching) is bogus. Thus, we don't do that
any more.
This should have the pleasant side-effect of getting APDL IDE interfaces
working, since they're just ICS ones with a different manufacturer ID.
PowerPC and provides a PCI-host bridge, interrupt controller, two com ports,
two IIC ports, a timer, and a DRAM controller.
The driver supports PCI, interrupts and com ports.
pci-pci bridge (and thus needs its interrupts "swizzled").
Formerly, pci_probe_device() assumed pci busses other than bus zero
were bridged; however, much recent x86 hardware supports multiple
primary pci busses differently -- there is a system-wide bus numbering
scheme. Now, we instead look at the (newly introduced) sc_bridgetag
value in the parent bus to figure out if there's a ppb or equivalent
in the way.
This fixed at least one case where the i386 MP branch gets interrupt
mapping wrong.
deal with such xfers, and can wedge the system with some controllers.
It's a bug to request such xfers for ATAPI, but as the request may come
from userland we have to protect against it.
Restore the reset thread, to make resetting the interface possible while
not blocking interrupts.
Make sure to throw away garbage input while the reset thread is at work
(by setting sc_enabled a bit later).
Issue a PMS_RESET command when resetting to address PR 16788.
to check if we get a RQCS_DATA_UNDERRUN - if we're an FC card, we may
not have RQCS_RU set- if it isn't set, we just lost a DATA XFR IU in the
middle of the exchange. In this case, we have to bomb out the whole xfer.
We had been getting silent data corruption before.
NULL for root PCI busses. For busses behind a bridge, it points to
a persistent copy of the bridge's pcitag_t. This can be very useful
for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
uses OFW device nodes to enumerate the bus. When a PCI bus that is
behind a bridge is attached, pci_attach_hook() allocates a new PCI
chipset tag for the new bus and sets it's "curnode" to the OFW node
of the bridge. This is used as a starting point when enumerating
that bus. Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
for a device into two functions:
* pci_probe_device() actually probes/attaches the device specified
by the provide pcitag_t.
* pci_enumerate_bus() enumerates the bus, and calls pci_probe_device()
for each device on the bus. A pci_enumerate_bus_generic() is provided
which implements the old method of doing this: If something found at
dev0/func0, determine number of functions and probe each one.
Machine-dependent code will be able to specify the bus enumeration
routine in the future.