* [patch net-next 0/2] net: sched: Fix RED qdisc offload flag
@ 2017-12-25 8:51 Nogah Frankel
2017-12-25 8:51 ` [patch net-next 1/2] net_sch: red: Fix the new offload indication Nogah Frankel
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Nogah Frankel @ 2017-12-25 8:51 UTC (permalink / raw)
To: netdev; +Cc: davem, jhs, xiyou.wangcong, jiri, mlxsw, Nogah Frankel
Replacing the RED offload flag (TC_RED_OFFLOADED) with the generic one
(TCQ_F_OFFLOADED) deleted some of the logic behind it. This patchset fixes
this problem.
Nogah Frankel (2):
net_sch: red: Fix the new offload indication
net: sched: Move offload check till after dump call
net/sched/sch_api.c | 5 ++---
net/sched/sch_red.c | 26 ++++++++++++++------------
2 files changed, 16 insertions(+), 15 deletions(-)
--
2.4.3
^ permalink raw reply [flat|nested] 6+ messages in thread
* [patch net-next 1/2] net_sch: red: Fix the new offload indication
2017-12-25 8:51 [patch net-next 0/2] net: sched: Fix RED qdisc offload flag Nogah Frankel
@ 2017-12-25 8:51 ` Nogah Frankel
2017-12-27 11:52 ` Jiri Pirko
2017-12-25 8:51 ` [patch net-next 2/2] net: sched: Move offload check till after dump call Nogah Frankel
2018-01-02 18:18 ` [patch net-next 0/2] net: sched: Fix RED qdisc offload flag David Miller
2 siblings, 1 reply; 6+ messages in thread
From: Nogah Frankel @ 2017-12-25 8:51 UTC (permalink / raw)
To: netdev; +Cc: davem, jhs, xiyou.wangcong, jiri, mlxsw, Nogah Frankel
Update the offload flag, TCQ_F_OFFLOADED, in each dump call (and ignore
the offloading function return value in relation to this flag).
This is done because a qdisc is being initialized, and therefore offloaded
before being grafted. Since the ability of the driver to offload the qdisc
depends on its location, a qdisc can be offloaded and un-offloaded by graft
calls, that doesn't effect the qdisc itself.
Fixes: 428a68af3a7c ("net: sched: Move to new offload indication in RED"
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Reviewed-by: Yuval Mintz <yuvalm@mellanox.com>
---
net/sched/sch_red.c | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c
index ec0bd36..a392eaa 100644
--- a/net/sched/sch_red.c
+++ b/net/sched/sch_red.c
@@ -157,7 +157,6 @@ static int red_offload(struct Qdisc *sch, bool enable)
.handle = sch->handle,
.parent = sch->parent,
};
- int err;
if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc)
return -EOPNOTSUPP;
@@ -172,14 +171,7 @@ static int red_offload(struct Qdisc *sch, bool enable)
opt.command = TC_RED_DESTROY;
}
- err = dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_QDISC_RED, &opt);
-
- if (!err && enable)
- sch->flags |= TCQ_F_OFFLOADED;
- else
- sch->flags &= ~TCQ_F_OFFLOADED;
-
- return err;
+ return dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_QDISC_RED, &opt);
}
static void red_destroy(struct Qdisc *sch)
@@ -297,12 +289,22 @@ static int red_dump_offload_stats(struct Qdisc *sch, struct tc_red_qopt *opt)
.stats.qstats = &sch->qstats,
},
};
+ int err;
+
+ sch->flags &= ~TCQ_F_OFFLOADED;
- if (!(sch->flags & TCQ_F_OFFLOADED))
+ if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc)
+ return 0;
+
+ err = dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_QDISC_RED,
+ &hw_stats);
+ if (err == -EOPNOTSUPP)
return 0;
- return dev->netdev_ops->ndo_setup_tc(dev, TC_SETUP_QDISC_RED,
- &hw_stats);
+ if (!err)
+ sch->flags |= TCQ_F_OFFLOADED;
+
+ return err;
}
static int red_dump(struct Qdisc *sch, struct sk_buff *skb)
--
2.4.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [patch net-next 2/2] net: sched: Move offload check till after dump call
2017-12-25 8:51 [patch net-next 0/2] net: sched: Fix RED qdisc offload flag Nogah Frankel
2017-12-25 8:51 ` [patch net-next 1/2] net_sch: red: Fix the new offload indication Nogah Frankel
@ 2017-12-25 8:51 ` Nogah Frankel
2017-12-27 11:52 ` Jiri Pirko
2018-01-02 18:18 ` [patch net-next 0/2] net: sched: Fix RED qdisc offload flag David Miller
2 siblings, 1 reply; 6+ messages in thread
From: Nogah Frankel @ 2017-12-25 8:51 UTC (permalink / raw)
To: netdev; +Cc: davem, jhs, xiyou.wangcong, jiri, mlxsw, Nogah Frankel
Move the check of the offload state to after the qdisc dump action was
called, so the qdisc could update it if it was changed.
Fixes: 7a4fa29106d9 ("net: sched: Add TCA_HW_OFFLOAD")
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Reviewed-by: Yuval Mintz <yuvalm@mellanox.com>
---
net/sched/sch_api.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index 3a3a1da..758f132 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -807,11 +807,10 @@ static int tc_fill_qdisc(struct sk_buff *skb, struct Qdisc *q, u32 clid,
tcm->tcm_info = refcount_read(&q->refcnt);
if (nla_put_string(skb, TCA_KIND, q->ops->id))
goto nla_put_failure;
- if (nla_put_u8(skb, TCA_HW_OFFLOAD, !!(q->flags & TCQ_F_OFFLOADED)))
- goto nla_put_failure;
if (q->ops->dump && q->ops->dump(q, skb) < 0)
goto nla_put_failure;
-
+ if (nla_put_u8(skb, TCA_HW_OFFLOAD, !!(q->flags & TCQ_F_OFFLOADED)))
+ goto nla_put_failure;
qlen = qdisc_qlen_sum(q);
stab = rtnl_dereference(q->stab);
--
2.4.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [patch net-next 1/2] net_sch: red: Fix the new offload indication
2017-12-25 8:51 ` [patch net-next 1/2] net_sch: red: Fix the new offload indication Nogah Frankel
@ 2017-12-27 11:52 ` Jiri Pirko
0 siblings, 0 replies; 6+ messages in thread
From: Jiri Pirko @ 2017-12-27 11:52 UTC (permalink / raw)
To: Nogah Frankel; +Cc: netdev, davem, jhs, xiyou.wangcong, mlxsw
Mon, Dec 25, 2017 at 09:51:41AM CET, nogahf@mellanox.com wrote:
>Update the offload flag, TCQ_F_OFFLOADED, in each dump call (and ignore
>the offloading function return value in relation to this flag).
>This is done because a qdisc is being initialized, and therefore offloaded
>before being grafted. Since the ability of the driver to offload the qdisc
>depends on its location, a qdisc can be offloaded and un-offloaded by graft
>calls, that doesn't effect the qdisc itself.
>
>Fixes: 428a68af3a7c ("net: sched: Move to new offload indication in RED"
>Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
>Reviewed-by: Yuval Mintz <yuvalm@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch net-next 2/2] net: sched: Move offload check till after dump call
2017-12-25 8:51 ` [patch net-next 2/2] net: sched: Move offload check till after dump call Nogah Frankel
@ 2017-12-27 11:52 ` Jiri Pirko
0 siblings, 0 replies; 6+ messages in thread
From: Jiri Pirko @ 2017-12-27 11:52 UTC (permalink / raw)
To: Nogah Frankel; +Cc: netdev, davem, jhs, xiyou.wangcong, mlxsw
Mon, Dec 25, 2017 at 09:51:42AM CET, nogahf@mellanox.com wrote:
>Move the check of the offload state to after the qdisc dump action was
>called, so the qdisc could update it if it was changed.
>
>Fixes: 7a4fa29106d9 ("net: sched: Add TCA_HW_OFFLOAD")
>Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
>Reviewed-by: Yuval Mintz <yuvalm@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch net-next 0/2] net: sched: Fix RED qdisc offload flag
2017-12-25 8:51 [patch net-next 0/2] net: sched: Fix RED qdisc offload flag Nogah Frankel
2017-12-25 8:51 ` [patch net-next 1/2] net_sch: red: Fix the new offload indication Nogah Frankel
2017-12-25 8:51 ` [patch net-next 2/2] net: sched: Move offload check till after dump call Nogah Frankel
@ 2018-01-02 18:18 ` David Miller
2 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2018-01-02 18:18 UTC (permalink / raw)
To: nogahf; +Cc: netdev, jhs, xiyou.wangcong, jiri, mlxsw
From: Nogah Frankel <nogahf@mellanox.com>
Date: Mon, 25 Dec 2017 10:51:40 +0200
> Replacing the RED offload flag (TC_RED_OFFLOADED) with the generic one
> (TCQ_F_OFFLOADED) deleted some of the logic behind it. This patchset fixes
> this problem.
Series applied, thank you.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-01-02 18:18 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-25 8:51 [patch net-next 0/2] net: sched: Fix RED qdisc offload flag Nogah Frankel
2017-12-25 8:51 ` [patch net-next 1/2] net_sch: red: Fix the new offload indication Nogah Frankel
2017-12-27 11:52 ` Jiri Pirko
2017-12-25 8:51 ` [patch net-next 2/2] net: sched: Move offload check till after dump call Nogah Frankel
2017-12-27 11:52 ` Jiri Pirko
2018-01-02 18:18 ` [patch net-next 0/2] net: sched: Fix RED qdisc offload flag David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.