1) Can you prove that put_lock is really necessary, and not covered by
other methods of synchronization? Typically the preferred model is that
your RX process requires _no_ spinlocks, and instead you use the net
stack API to ensure when your RX process is, and is not, running.