Hi Alex, > This patch adds support for edge triggered irq types. We remove the > locking for irq resources by enable/disable irq and allocate directly > some heap buffer at isr. We have still a enable/disable irq path but > this is for level-triggered irq's which need to be disabled until > spi_async clear the irq line. > > There is usually a little race condition between "irq line cleared" and > "enable_irq". When in this time a edge triggered irq arrived, we will > not recognize this interrupt. This case can't happend at at86rf230. The > reason is that we unmask TRX_END irq's only which indicates a transmit > or receive completion, which depends on the current state. > > On Transmit: > > TRX_END arrived and transceiver is in TX_ARET_ON state again, in this > state no other TRX_END can happen until we leave the state. > > On Receive: > > This is protected with the RX_SAFE_MODE bit which leaves the transceiver > in RX_AACK_BUSY until we readed the framebuffer. In this state no other > TRX_END can happen. > > Tested with RPi where I first detected issues between edge/level irq's. > > Signed-off-by: Alexander Aring <alex.aring@xxxxxxxxx> > --- > drivers/net/ieee802154/at86rf230.c | 211 ++++++++++++++++--------------------- > 1 file changed, 89 insertions(+), 122 deletions(-) patch has been applied to bluetooth-next tree. Regards Marcel -- To unsubscribe from this list: send the line "unsubscribe linux-wpan" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html