Thread (51 messages) 51 messages, 7 authors, 2023-05-24

Re: [PATCH net 5/6] net/sched: Refactor qdisc_graft() for ingress and clsact Qdiscs

From: Pedro Tammela <hidden>
Date: 2023-05-08 14:12:08
Also in: lkml

On 05/05/2023 21:15, Peilin Ye wrote:
Grafting ingress and clsact Qdiscs does not need a for-loop in
qdisc_graft().  Refactor it.  No functional changes intended.

Signed-off-by: Peilin Ye <redacted>
Just a FYI:
If you decide to keep this refactoring, it will need to be back ported
together with the subsequent fix.
I would personally leave it to net-next.

Thanks for chasing this!

Tested-by: Pedro Tammela <redacted>
quoted hunk ↗ jump to hunk
---
  net/sched/sch_api.c | 20 ++++++++++----------
  1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 49b9c1bbfdd9..f72a581666a2 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -1073,12 +1073,12 @@ static int qdisc_graft(struct net_device *dev, struct Qdisc *parent,
  
  	if (parent == NULL) {
  		unsigned int i, num_q, ingress;
+		struct netdev_queue *dev_queue;
  
  		ingress = 0;
  		num_q = dev->num_tx_queues;
  		if ((q && q->flags & TCQ_F_INGRESS) ||
  		    (new && new->flags & TCQ_F_INGRESS)) {
-			num_q = 1;
  			ingress = 1;
  			if (!dev_ingress_queue(dev)) {
  				NL_SET_ERR_MSG(extack, "Device does not have an ingress queue");
@@ -1094,18 +1094,18 @@ static int qdisc_graft(struct net_device *dev, struct Qdisc *parent,
  		if (new && new->ops->attach && !ingress)
  			goto skip;
  
-		for (i = 0; i < num_q; i++) {
-			struct netdev_queue *dev_queue = dev_ingress_queue(dev);
-
-			if (!ingress)
+		if (!ingress) {
+			for (i = 0; i < num_q; i++) {
  				dev_queue = netdev_get_tx_queue(dev, i);
+				old = dev_graft_qdisc(dev_queue, new);
  
-			old = dev_graft_qdisc(dev_queue, new);
-			if (new && i > 0)
-				qdisc_refcount_inc(new);
-
-			if (!ingress)
+				if (new && i > 0)
+					qdisc_refcount_inc(new);
  				qdisc_put(old);
+			}
+		} else {
+			dev_queue = dev_ingress_queue(dev);
+			old = dev_graft_qdisc(dev_queue, new);
  		}
  
  skip:
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help