The symptom could be the transmitted message is discarded instead of retransmitted.
I have noticed that in a few places where the driver had indicated the tx did not succeed we continue without stopping the tx queue.
if (ret < 0) {
dev_warn(
&priv->spi->dev,
"Failed to transmit skb, returned %d\n",
ret
);
/ retry transmission higher up /
ieee802154_wake_queue(priv->hw);
Basically will start sending the next packet even though we think the transmit has failed, the ieee802154_wake_queue() is not required as the queue is already "wake", I have not seen the use of function ieee802154_stop_queue(), the ieee802154_wake_queue() is a wrapper function of netif_wake_queue().
The symptom could be the transmitted message is discarded instead of retransmitted.
I have noticed that in a few places where the driver had indicated the tx did not succeed we continue without stopping the tx queue.
if (ret < 0) { dev_warn( &priv->spi->dev, "Failed to transmit skb, returned %d\n", ret ); / retry transmission higher up / ieee802154_wake_queue(priv->hw);
Basically will start sending the next packet even though we think the transmit has failed, the ieee802154_wake_queue() is not required as the queue is already "wake", I have not seen the use of function ieee802154_stop_queue(), the ieee802154_wake_queue() is a wrapper function of netif_wake_queue().
http://www.makelinux.net/ldd3/chp-17-sect-5