802 Commits

Author SHA1 Message Date
Rick VanderWal
ac4cf946a2 rtemsbsd/sdhci: Fix Arasan driver when no card present
This fixes an issue where the card present signal doesn't stabilize
quickly and indicates present when no card is inserted in a removable
slot.
2023-04-04 09:48:25 -05:00
Aaron Nyholm
a39a6a249f rtemsbsd/versal: Add SDHCI Driver support
Tested on VCK190

Closes #4762
2022-11-22 13:53:27 +11:00
Kinsey Moore
93b259b129 nexus/zynqmp: Use device trees for CGEM
This moves the ZynqMP BSPs over to using device trees for CGEM
instantiation now that all BSP variants provide appropriate device
trees.
2022-11-10 08:06:31 -06:00
Kinsey Moore
f462c4de5f rtemsbsd/arasan_sdhci: Improve board/eMMC compat
This improves the compatibility of this driver across board and memory
variants by avoiding use of the HISPD mode.
2022-10-21 15:10:43 -05:00
Kinsey Moore
cf8fa08015 rtemsbsd/arasan_sdhci: Remove redundant clock cap
The BSD SD subsystem enforces a 50MHz clock cap for devices which don't
report their own maximum clock speed. This setting is unnecessary for
the Zynq 7000 version of this IP and restricts the Zynq Ultrascale+
MPSoC version of this IP without need since it reports its maximum speed
as 200MHz.
2022-10-21 15:10:43 -05:00
Kinsey Moore
452637ae99 rtemsbsd/arasan_sdhci: Update description
This driver works on both the Zynq 7000 chips as well as the Zynq
Ultrascale+ MPSoC chips and targets the Arasan SDHCI IP that exists in
both.
2022-10-21 15:10:43 -05:00
Kinsey Moore
ba1b041bd1 rtemsbsd/arasan_sdhci: Stop masking capabilities
The initial version of this driver was masking the capabilities register
to hide 8 bit bus capability. This is not necessary since these devices
report that capability correctly and the masking affects performance
negatively on ZynqMP boards where the 8 bit bus is supported. This also
removes two quirks that were made necessary by the capabilities masking.
2022-10-21 15:10:43 -05:00
Kinsey Moore
63dae7159f rtemsbsd/arasan_sd: Prevent disabled device probe
Probing a SDIO/SDHCI interface that has been disabled by system init via
holding it in reset can cause a CPU hang. This prevents probing of
devices that have been disabled in such a manner on ZynqMP systems.
2022-09-16 09:41:49 -05:00
Sebastian Huber
a0d36f58fd arm/lpc: Add option to customize device probes 2022-09-06 13:22:45 +02:00
Sebastian Huber
763a8a399f Define IN_HISTORICAL_NETS for kernel space
Required by FreeBSD commit:

Author: Mike Karels <karels@FreeBSD.org>
Date:   Tue Oct 26 22:01:09 2021 -0500

    kernel: deprecate Internet Class A/B/C

    Hide historical Class A/B/C macros unless IN_HISTORICAL_NETS is defined;
    define it for user level.  Define IN_MULTICAST separately from IN_CLASSD,
    and use it in pf instead of IN_CLASSD.  Stop using class for setting
    default masks when not specified; instead, define new default mask
    (24 bits).  Warn when an Internet address is set without a mask.

    MFC after:      1 month
    Reviewed by:    cy
    Differential Revision: https://reviews.freebsd.org/D32708
2022-07-07 14:22:54 +02:00
Konstantin Belousov
66923c7b02 Kernel-side infrastructure to implement nvlist-based set/get ifcaps
Reviewed by:	hselasky, jhb, kp (previous version)
Sponsored by:	NVIDIA Networking
MFC after:	3 weeks
Differential revision:	https://reviews.freebsd.org/D32551
2022-07-07 14:22:54 +02:00
Rick Macklem
5f0e04113f uipc_socket.c: Modify MSG_TLSAPPDATA to only do Alert Records
Without this patch, the MSG_TLSAPPDATA flag would cause
soreceive_generic() to return ENXIO for any non-application
data record in a TLS receive stream.

This works ok for TLS1.2, since Alert records appear to be
the only non-application data records received.
However, for TLS1.3, there can be post-handshake handshake
records, such as NewSessionKey sent to the client from the
server. These handshake records cannot be handled by the
upcall which does an SSL_read() with length == 0.

It appears that the client can simply throw away these
NewSessionKey records, but to do so, it needs to receive
them within the kernel.

This patch modifies the semantics of MSG_TLSAPPDATA slightly,
so that it only applies to Alert records and not Handshake
records. It is needed to allow the krpc to work with KTLS1.3.

Reviewed by:	hselasky
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D35170
2022-07-07 14:22:54 +02:00
Kristof Provost
ee823c1666 Widen ifnet_detach_sxlock coverage
Widen the ifnet_detach_sxlock to cover the entire vnet sysuninit code.
This ensures that we can't end up having the vnet_sysuninit free the UDP
pcb while the detach code is running and trying to purge the UDP pcb.

MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D28530
2022-07-07 14:22:54 +02:00
Rick Macklem
60f67a1f37 Add the MSG_TLSAPPDATA flag to indicate "return ENXIO" for non-application TLS data records.
The kernel RPC cannot process non-application data records when
using TLS. It must to an upcall to a userspace daemon that will
call SSL_read() to process them.

This patch adds a new flag called MSG_TLSAPPDATA that the kernel
RPC can use to tell sorecieve() to return ENXIO instead of a non-application
data record, when that is what is at the top of the receive queue.
I put the code in #ifdef KERN_TLS/#endif, although it will build without
that, so that it is recognized as only useful when KERN_TLS is enabled.
The alternative to doing this is to have the kernel RPC re-queue the
non-application data message after receiving it, but that seems more
complicated and might introduce message ordering issues when there
are multiple non-application data records one after another.

I do not know what, if any, changes will be required to support TLS1.3.

Reviewed by:	glebius
Differential Revision:	https://reviews.freebsd.org/D25923
2022-07-07 14:22:54 +02:00
Sebastian Huber
9a88b07c33 user-space: Request FreeBSD bitset API
This is required for recent Newlib versions.

Update #4667.
2022-06-30 17:40:33 +02:00
Sebastian Huber
c5c5a199c6 if_lpe.c: Use interface transmit
This avoids the need for a transmit task and transmit interrupts.
2022-06-24 07:33:29 +02:00
Sebastian Huber
1056349b4e if_lpe.c: Move transmit initialization
Move the transmit initialization out of the transmit task to be able to
remove the transmit task in the next patch.
2022-06-24 07:32:50 +02:00
Sebastian Huber
ff4c60af7a if_lpe.c: Port to LibBSD 2022-06-24 07:32:50 +02:00
Sebastian Huber
2722615130 if_lpe.c: Import legacy LPC Ethernet driver
The standard FreeBSD MII support causes severe problems on the LPC3200
chip family.  If an Ethernet module register is accessed while there is
no clock from the PHY, the chip completely locks up and only an external
watchdog can recover from this state.  The legacy driver had a custom
PHY management code which helped to avoid such issues.  The if_lpe.c
driver is no longer maintained by FreeBSD.
2022-06-24 07:32:50 +02:00
Sebastian Huber
ed25b390fc Use rtems_task_exit() 2022-06-01 10:34:36 +02:00
Sebastian Huber
61f646d9b9 if_atsam: Recover from receive freezes
Under unknown conditions the receive path ended up in a frozen state.
In this state, the DMA and driver descriptor head were equal and all
receive descriptors had the used bit set.  So, the DMA was unable to
store received frames.  However, the receive daemon was never woken up
to refill the receive buffers.  It seems that the RXUBR interrupt can be
used to recover from this state.

Update #4652.
2022-06-01 09:57:56 +02:00
Sebastian Huber
8588e9542e if_atsam: Shorten sysctl names
Update #4652.
2022-06-01 09:57:53 +02:00
Sebastian Huber
bd56cb2e59 if_atsam: Add tx/rx desc sysctls
Update #4652.
2022-06-01 09:57:50 +02:00
Sebastian Huber
683bae95b3 if_atsam: Add register sysctls
Update #4652.
2022-06-01 09:57:47 +02:00
Sebastian Huber
07e282034c if_atsam: Allow stats reset via sysctl
Update #4652.
2022-06-01 09:57:28 +02:00
Sebastian Huber
7bc7bae957 Add program destructor support
Update #4650.
2022-05-12 07:45:30 +02:00
Sebastian Huber
e992d45b63 if_atsam: Fix interface stop
Update #4652.
2022-05-11 15:54:23 +02:00
Sebastian Huber
4ad09617d0 if_atsam: Support transmit bpf
Update #4652.
2022-05-11 15:49:05 +02:00
Sebastian Huber
989675ee7c if_atsam: Do not use rtems_bsdnet_newproc()
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
821bcb7345 if_atsam: Support IFCAP_VLAN_HWTAGGING
This is required to enable checksum offload for vlan interfaces.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
967613fbce if_atsam: Optimize receive
Do not use the interface mutex in the receive loop.  Avoid multiple
reads of DMA descriptor words.  Use a compile-time constant for the
receive DMA descriptor count to simplify calculations.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
2cb974fa20 if_atsam: Optimize transmit
Use the transmit interface handler to avoid a transmit task/interrupt.
Use a compile-time constant for the transmit DMA descriptor count to
simplify calculations.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
c944cb9325 if_atsam: Add multicast support
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
1230011435 if_atsam: Fix start/stop of interface
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
975916a75d if_atsam: Fix interrupt setup
The interrupt is enabled by rtems_interrupt_handler_install().

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
adda3a5a6d if_atsam: Do not disable the Ethernet CRC
The Ethernet CRC and padding must be always generated by the MAC.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
7e082f6656 if_atsam: Enable all capabilities
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
2556c4c336 if_atsam: Fix warnings
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
f62a9f15e3 ttcp: Avoid namespace pollution
The global err() function broke a lot of other commands.
2022-05-11 15:21:34 +02:00
Alex White
40b9c6ce63 if_xae: Port to RTEMS 2022-03-07 17:04:05 -06:00
Heinz Junkes
de0badf2c3 if_mve: Add MV643XX Ethernet driver
Update #4345.
2022-03-07 10:52:52 +01:00
Sebastian Huber
4895323e6c rtems-bsd-program.h: Remove stray ';' 2022-02-23 15:57:06 +01:00
Christian Mauderer
17ac5a8cfe ppp: Fix transmitting data
The pppstart expected that a driver write would somehow magically
process all data passed to the write function. Because ppp disables all
buffering that originally has been in termios, that assumption is not
true for all but polled drivers.

With this patch, the pppstart now gets and processes the feedback that
is returned from the driver via rtems_termios_dequeue_characters.

Fixes #4493
2022-02-10 09:19:06 +01:00
Chris Johns
25a883272a Add support for Xilinx Versal APAC 2021-10-21 11:29:14 +11:00
Chris Johns
87a5b45564 rtemsbsd/nfsclient: Fix the error code return value 2021-10-21 11:29:01 +11:00
Chris Johns
f94a67a68d rtemsbsd: Clear bus DMA memory a byte at a time
- memset may be optimized for performance and might work
  with device type memory. Clear a byte at a time.
2021-10-21 11:23:30 +11:00
Kinsey Moore
38f3de6469 rtemsbsd/atomic: Return a value for CMPSET
When the cmpset and fcmpset functions were refactored, the return value
of the operation was discarded instead of being returned for SMP builds
outside of gcc 4.x. This had the effect of turning these functions into
a long busywait loop that eventually failed due to integer overflow.

This patch restores the use of the return value of the atomic
operations.
2021-10-08 09:05:05 -05:00
Chris Johns
2e5f808b09 rtemsbsd/syscalls: Remove pipe()
- This call is provided by RTEMS and that is preferred

Closes #4518
2021-09-23 15:42:12 +10:00
Chris Johns
d9dd59d9ef rtemsbsd/open: Correctly open a mount directory
- If the open is for a directory and it is the root of the mounted
  file system open from the pseudo's root node.
2021-09-23 13:31:08 +10:00
Christian Mauderer
b7c51ac449 imx: Remove ccm functions alredy defined in RTEMS
The imx_ccm_*_hz are all defined in RTEMS. So don't duplicate them in
libbsd. Otherwise some applications get linker errors.

Update #3869
2021-09-02 09:19:27 +02:00