aahringo@xxxxxxxxxx wrote on Tue, 17 May 2022 09:19:29 -0400: > Hi, > > On Tue, May 17, 2022 at 5:28 AM Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote: > > > > Hi Alex, > > > > > > @@ -84,7 +118,7 @@ void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb, > > > > hw->phy->sifs_period * NSEC_PER_USEC, > > > > HRTIMER_MODE_REL); > > > > } else { > > > > - ieee802154_wake_queue(hw); > > > > + ieee802154_release_queue(local); > > > > } > > > > > > > > dev_consume_skb_any(skb); > > > > @@ -98,7 +132,7 @@ void ieee802154_xmit_error(struct ieee802154_hw *hw, struct sk_buff *skb, > > > > struct ieee802154_local *local = hw_to_local(hw); > > > > > > > > local->tx_result = reason; > > > > - ieee802154_wake_queue(hw); > > > > + ieee802154_release_queue(local); > > > > dev_kfree_skb_any(skb); > > > > atomic_dec(&hw->phy->ongoing_txs); > > > > > > I am pretty sure that will end in a scheduling while atomic warning > > > with hwsim. If you don't hit it you have the wrong config, you need to > > > enable such warnings and have the right preemption model setting. > > > > I was using the "desktop" kernel preemption model (voluntary), I've > > switched to CONFIG_PREEMPT ("Preemptible kernel (Low-latency)"), > > and enabled CONFIG_DEBUG_ATOMIC_SLEEP. You are right that we should use > > a spinlock instead of a mutex here. However I don't think disabling > > IRQs is necessary, so I'll switch to spin_(un)lock() calls. > > > > In my opinion it's necessary for the ifs hrtimer. Normal > spin_lock/unlock is not the right fit here. You're right, I forgot about hrtimers. Thanks, Miquèl