The LMIC disables interrupts on entry to the radio driver, and enables on exit. This will interfere with BSPs that can't keep time without interrupts. It's also not a great idea as it changes the behavior of the system.
Change LMIC to serialize callbacks into radio.c; and add a special hal_waitIUntil() for radio timing that disables interrupts when needed and returns with interrupts off. Proper architecture requires introduction of a interrupt nesting discipline as well.