Hardware generated checksum UDP packets does not work for
IP fragmented UDP packets. It seems as if the BSD stack never
signals to the GRETH driver to generate or not to generate
TCP/UDP checksum for different cases. The GRETH driver never
tells the BSD stack about it capabilities either so there is
no point generating the cksums in HW when its done in SW any
way.
This patch disables hardware generated UDP and TCP checksums.
From this driver's point of view the major new thing is that the
GRPCI peripheral PCI bridge has been updated to GRPCI2, the second
version. This means that both Big and Little Endian systems are now
supported and autodetected on runtime.
From this driver's point of view the major new thing is that the
GRPCI peripheral PCI bridge has been updated to GRPCI2, the second
version. This means that both Big and Little Endian systems are now
supported and autodetected on runtime.
The PCI frequency is used as AMBA frequency of the GR-RASTA-TMTC.
Timers are identical within one GPTIMER core. Probing only the
first timer is sufficient, however the first timer was hardcoded
to timer0 which is not correct in a multi-OS system like RTEMS
AMP. This patch makes sure that probing is done on the first
timer that can be used by this RTEMS instance. Without this
patch RTEMS AMP is broken on systems (like the GR712RC) where
there is only one GPTIMER core proviing multiple timers. Designs
(like the NGMP/FP) where there are multiple GPTIMER cores are not
affected.
Before the LIBPCI didn't probe device0 (AD16), the host bridge
drivers used bus=dev=func=0 to internally probe the host bridge's
target interface. Now that LIBPCI uses bus=dev=func=0 to access
device0, bus=0xff is introduced internally to identify the
host bridge target configuration space.
1. read_mii() now returns 0xffff on failure. It is more robust when it
comes to reading the reset bit in the control register, that is the
first access.
2. write_mii() now has error printout like read_mii().
3. Additional (optional) PHY access debugging is now available by
enabling GRETH_DEBUG_MII. Even successful accesses are printed.
4. Let PHY do power-down (not only reset) to get in a good state,
this is just in case the PHY input pin settings are sampled only
on PHY power-up on some PHYs.
5. PHY GBit advertisement is disabled if Gbit is not supported by MAC.
Or forced if supported.
6. Auto-nego is started if supported by PHY, before it was started only
if default set by PHY.
7. Reset Sequence updated:
* one must wait until reset bit is self-cleared.
* the DD (Disable Duplex Detection) bit is set, only affects
EDCL capable devices. This lets RTEMS handle PHY initialization
Looking at PHY Ctrl register without reseting it will give back
old register content, that is not stable. Instead the PHY is
reset and the autonogotiation capability is read out and
started if present.
In some GRPCI cores not setting the cache line size could result
in long prefetches on the AMBA bus which would lead to bad
performance when doing PCI reads to GRPCI target interface (DMA).
This patch adds a new driver for the GRSPW SpaceWire AMBA
interface family. The new driver does not implement a standard
RTEMS driver, instead it provides only a library interface to
the GRSPW devices. This driver can be used to implement a
RTEMS I/O driver or used directly.
New features compared with old GRSPW driver:
* zero-copy packet interface
* possibility to send/receive mulitple packets per call
* optional interrupt awaken work-task to process TX/RX queues
* DMA channels support. Before only first DMA channel supported
* Separate DMA and link control
* Packet based error flags
The _Watchdog_Nanoseconds_since_tick_handler() function caller does
not take into account that the timer counter may wrap, underflow or
overflow. Instead, the driver must take that into account. This
GPTIMER DrvMgr driver patch makes use of the IRQ-Pending bit to
determine if a underflow has happened. In that case a greater time
than one tick is returned (even considering the function name..).
The TLIB clock layer must also ACK the interrupt pending bit,
otherwise we couldn't determine whether an IRQ is pending or if
belongs to un old already handled tick IRQ.
Note that this patch only fixes the DrvMgr GPTIMER driver and TLIB,
the standard LEON3 GPTIMER driver still needs a fix.