net: Fix compiler warnings on 4.19 PREEMPT_RT with xmit_lock_owner
RFC PATCH 1/1 net: Fix compiler warnings on 4.19 PREEMPT_RT with xmit_lock_owner
GCC 11 has started complaining about the PREEMPT_RT changes to 2fd949365fe6628fb2 which change the xmit_lock_owner from an integer to a pointer to struct task_struct. These changes are from the patch:
net: move xmit_recursion to per-task variable on -RT
The below patch is ugly but fixes the compiler warnings.
I'd be happy to entertain a better/cleaner solution
Signed-off-by Clark Williams <[email protected]>
--- include/linux/netdevice.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
include/linux/netdevice.h +20 -0
@@ -3921,7 +3921,11 @@ static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu) {spin_lock (&txq->_xmit_lock);/* Pairs with READ_ONCE() in __dev_queue_xmit() */ +#ifdef CONFIG_PREEMPT_RT_FULL +WRITE_ONCE (txq->xmit_lock_owner, current); +#else WRITE_ONCE (txq->xmit_lock_owner, cpu); +#endif }static inline bool __netif_tx_acquire (struct netdev_queue *txq)
@@ -3939,7 +3943,11 @@ static inline void __netif_tx_lock_bh(struct netdev_queue *txq) {spin_lock_bh (&txq->_xmit_lock);/* Pairs with READ_ONCE() in __dev_queue_xmit() */ +#ifdef CONFIG_PREEMPT_RT_FULL +WRITE_ONCE (txq->xmit_lock_owner, current); +#else WRITE_ONCE (txq->xmit_lock_owner,smp_processor_id ()); +#endif }static inline bool __netif_tx_trylock (struct netdev_queue *txq)
@@ -3948,7 +3956,11 @@ static inline bool __netif_tx_trylock(struct netdev_queue *txq)if (likely (ok)) {/* Pairs with READ_ONCE() in __dev_queue_xmit() */ +#ifdef CONFIG_PREEMPT_RT_FULL +WRITE_ONCE (txq->xmit_lock_owner, current); +#else WRITE_ONCE (txq->xmit_lock_owner,smp_processor_id ()); +#endif }return ok; }
@@ -3956,14 +3968,22 @@ static inline bool __netif_tx_trylock(struct netdev_queue *txq)static inline void __netif_tx_unlock (struct netdev_queue *txq) {/* Pairs with READ_ONCE() in __dev_queue_xmit() */ +#ifdef CONFIG_PREEMPT_RT_FULL +WRITE_ONCE (txq->xmit_lock_owner,NULL ); +#else WRITE_ONCE (txq->xmit_lock_owner,-1 ); +#endif spin_unlock (&txq->_xmit_lock); }static inline void __netif_tx_unlock_bh (struct netdev_queue *txq) {/* Pairs with READ_ONCE() in __dev_queue_xmit() */ +#ifdef CONFIG_PREEMPT_RT_FULL +WRITE_ONCE (txq->xmit_lock_owner,NULL ); +#else WRITE_ONCE (txq->xmit_lock_owner,-1 ); +#endif spin_unlock_bh (&txq->_xmit_lock); }
Signature · 1 line
2.34.1