Home | History | Annotate | Download | only in sunxi
History log of /src/sys/arch/arm/sunxi/sunxi_can.c
RevisionDateAuthorComments
 1.13  19-Nov-2022  yamt sunxi_can.c: fix build with MBUFTRACE
 1.12  27-Sep-2022  skrll malloc -> kmem
 1.11  21-Sep-2022  bouyer Just skipping sunxi_can_rx_intr() if the DATA_OR flag is set isn't enough
to properly recover from overrrun in all case. So go the linux way and reset
the hardware.

Don't write SUNXI_CAN_INT_RX_FLAG to SUNXI_CAN_INT_REG, this could race
with hardware and clear the interrupt while there are new packets received.
SUNXI_CAN_INT_RX_FLAG clears automatically when all pending packets have been
read, so when no more packets are pending just read SUNXI_CAN_INT_REG again
and process other interrupts, if any (or RX if there are new packets pending).
With this change it seems I get overruns less often in my use case.
 1.10  19-Sep-2022  bouyer Don't process RX if SUNXI_CAN_INT_DATA_OR is pending. Seems to fix occasional
RX stalls
 1.9  18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE.
 1.8  27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.7  27-Jan-2021  thorpej Use DEVICE_COMPAT_EOL.
 1.6  25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.5  18-Jan-2021  thorpej Remove "struct of_compat_data" and replace its usage with
"struct device_compatible_entry"; they are ABI-compatible.

Fix several "loses const qualifier" bugs encountered during
this conversion.
 1.4  15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.3  29-Jan-2020  thorpej branches: 1.3.6;
Adopt <net/if_stats.h>.
 1.2  21-Oct-2019  msaitoh branches: 1.2.2;
if_ipackets is incremented in can_input(), so don't increment it in
sunxi_can_rx_intr to prevent double count. OK'd by bouyer@.
 1.1  07-Mar-2018  bouyer branches: 1.1.2; 1.1.4; 1.1.8;
fdt-ise the allwinner can and lradc drivers.
 1.1.8.2  24-Sep-2022  martin Pull up following revision(s) (requested by bouyer in ticket #1533):

sys/arch/arm/sunxi/sunxi_can.c: revision 1.10,1.11 (via patch)

Don't process RX if SUNXI_CAN_INT_DATA_OR is pending. Seems to fix occasional
RX stalls

Just skipping sunxi_can_rx_intr() if the DATA_OR flag is set isn't enough
to properly recover from overrrun in all case. So go the linux way and reset
the hardware.

Don't write SUNXI_CAN_INT_RX_FLAG to SUNXI_CAN_INT_REG, this could race
with hardware and clear the interrupt while there are new packets received.
SUNXI_CAN_INT_RX_FLAG clears automatically when all pending packets have been
read, so when no more packets are pending just read SUNXI_CAN_INT_REG again
and process other interrupts, if any (or RX if there are new packets pending).

With this change it seems I get overruns less often in my use case.
 1.1.8.1  23-Oct-2019  martin Pull up following revision(s) (requested by msaitoh in ticket #371):

sys/dev/ic/i82586.c: revision 1.86
sys/arch/arm/ep93xx/epe.c: revision 1.45
sys/dev/pcmcia/if_cnw.c: revision 1.66
sys/arch/mac68k/nubus/if_netdock_nubus.c: revision 1.31
sys/arch/arm/sunxi/sunxi_can.c: revision 1.2
sys/dev/qbus/if_il.c: revision 1.36
sys/dev/pcmcia/if_ray.c: revision 1.95
sys/dev/qbus/if_qt.c: revision 1.24

if_ipackets is incremented in can_input(), so don't increment it in
sunxi_can_rx_intr to prevent double count. OK'd by bouyer@.

if_percpuq(9) automatically increments if_ipackets, so don't increment it in
the driver itself to prevent double count.
 1.1.4.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.2.2  15-Mar-2018  pgoyette Synch with HEAD
 1.1.2.1  07-Mar-2018  pgoyette file sunxi_can.c was added on branch pgoyette-compat on 2018-03-15 09:12:02 +0000
 1.2.2.1  29-Feb-2020  ad Sync with head.
 1.3.6.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed