* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).