mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	pfifo_fast: drop unneeded additional lock on dequeue
After the previous patch, for NOLOCK qdiscs, q->seqlock is always held when the dequeue() is invoked, we can drop any additional locking to protect such operation. Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									96009c7d50
								
							
						
					
					
						commit
						021a17ed79
					
				
					 2 changed files with 7 additions and 2 deletions
				
			
		| 
						 | 
					@ -97,6 +97,11 @@ static inline bool skb_array_empty_any(struct skb_array *a)
 | 
				
			||||||
	return ptr_ring_empty_any(&a->ring);
 | 
						return ptr_ring_empty_any(&a->ring);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline struct sk_buff *__skb_array_consume(struct skb_array *a)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return __ptr_ring_consume(&a->ring);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline struct sk_buff *skb_array_consume(struct skb_array *a)
 | 
					static inline struct sk_buff *skb_array_consume(struct skb_array *a)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return ptr_ring_consume(&a->ring);
 | 
						return ptr_ring_consume(&a->ring);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -656,7 +656,7 @@ static struct sk_buff *pfifo_fast_dequeue(struct Qdisc *qdisc)
 | 
				
			||||||
		if (__skb_array_empty(q))
 | 
							if (__skb_array_empty(q))
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		skb = skb_array_consume_bh(q);
 | 
							skb = __skb_array_consume(q);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (likely(skb)) {
 | 
						if (likely(skb)) {
 | 
				
			||||||
		qdisc_qstats_cpu_backlog_dec(qdisc, skb);
 | 
							qdisc_qstats_cpu_backlog_dec(qdisc, skb);
 | 
				
			||||||
| 
						 | 
					@ -697,7 +697,7 @@ static void pfifo_fast_reset(struct Qdisc *qdisc)
 | 
				
			||||||
		if (!q->ring.queue)
 | 
							if (!q->ring.queue)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		while ((skb = skb_array_consume_bh(q)) != NULL)
 | 
							while ((skb = __skb_array_consume(q)) != NULL)
 | 
				
			||||||
			kfree_skb(skb);
 | 
								kfree_skb(skb);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue