23 Commits

Author SHA1 Message Date
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
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
eeb3fd5d9b if_atsam: Remove WDT_Disable()
The watchdog timer (WDT) can be configure only once.  Do not touch it in
the BSP since the application may want to use it.
2019-06-13 08:57:41 +02:00
Christian Mauderer
b2a210ca3e if_atsam: Add checksum offload. 2018-03-21 09:14:25 +01:00
Christian Mauderer
c6f4aa65ff if_atsam: Allow fixed MII settings. 2017-09-22 10:19:25 +02:00
Christian Mauderer
0190cfdd55 if_atsam: Move statistics to sysctl. 2017-09-22 10:17:26 +02:00
Christian Mauderer
80a7fe68a1 if-atsam: Port to rtems-libbsd. 2017-09-22 10:17:24 +02:00
Christian Mauderer
b16eca96c3 rtemsbsd/if-atsam: Copy from RTEMS.
Copied from RTEMS commit 146adb1edf from 17.07.2017.
2017-09-22 10:15:52 +02:00