[PATCH net-next-2.6] sch_choke: add choke_skb_cb

Subsystems: networking [general], tc subsystem, the rest

STALE5650d

4 messages, 3 authors, 2011-02-25 · open the first message on its own page

[PATCH net-next-2.6] sch_choke: add choke_skb_cb

From: Eric Dumazet <hidden>
Date: 2011-02-25 03:45:48

Better document choke skb->cb[] use, like we did in netem and sfb

This adds a compile time check to make sure we dont exhaust skb->cb[]
space.

Signed-off-by: Eric Dumazet <redacted>
CC: Stephen Hemminger <redacted>
CC: Patrick McHardy <redacted>
---
 net/sched/sch_choke.c |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/net/sched/sch_choke.c b/net/sched/sch_choke.c
index ee1e209..06afbae 100644
--- a/net/sched/sch_choke.c
+++ b/net/sched/sch_choke.c
@@ -219,14 +219,25 @@ static bool choke_match_flow(struct sk_buff *skb1,
 	return *ports1 == *ports2;
 }
 
+struct choke_skb_cb {
+	u16 classid;
+};
+
+static inline struct choke_skb_cb *choke_skb_cb(const struct sk_buff *skb)
+{
+	BUILD_BUG_ON(sizeof(skb->cb) <
+		sizeof(struct qdisc_skb_cb) + sizeof(struct choke_skb_cb));
+	return (struct choke_skb_cb *)qdisc_skb_cb(skb)->data;
+}
+
 static inline void choke_set_classid(struct sk_buff *skb, u16 classid)
 {
-	*(unsigned int *)(qdisc_skb_cb(skb)->data) = classid;
+	choke_skb_cb(skb)->classid = classid;
 }
 
 static u16 choke_get_classid(const struct sk_buff *skb)
 {
-	return *(unsigned int *)(qdisc_skb_cb(skb)->data);
+	return choke_skb_cb(skb)->classid;
 }
 
 /*

Re: [PATCH net-next-2.6] sch_choke: add choke_skb_cb

From: Stephen Hemminger <hidden>
Date: 2011-02-25 03:48:15

On Fri, 25 Feb 2011 04:45:41 +0100
Eric Dumazet [off-list ref] wrote:
quoted hunk
Better document choke skb->cb[] use, like we did in netem and sfb

This adds a compile time check to make sure we dont exhaust skb->cb[]
space.

Signed-off-by: Eric Dumazet <redacted>
CC: Stephen Hemminger <redacted>
CC: Patrick McHardy <redacted>
---
 net/sched/sch_choke.c |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/net/sched/sch_choke.c b/net/sched/sch_choke.c
index ee1e209..06afbae 100644
--- a/net/sched/sch_choke.c
+++ b/net/sched/sch_choke.c
@@ -219,14 +219,25 @@ static bool choke_match_flow(struct sk_buff *skb1,
 	return *ports1 == *ports2;
 }
 
+struct choke_skb_cb {
+	u16 classid;
+};
+
+static inline struct choke_skb_cb *choke_skb_cb(const struct sk_buff *skb)
+{
+	BUILD_BUG_ON(sizeof(skb->cb) <
+		sizeof(struct qdisc_skb_cb) + sizeof(struct choke_skb_cb));
+	return (struct choke_skb_cb *)qdisc_skb_cb(skb)->data;
+}
+
 static inline void choke_set_classid(struct sk_buff *skb, u16 classid)
 {
-	*(unsigned int *)(qdisc_skb_cb(skb)->data) = classid;
+	choke_skb_cb(skb)->classid = classid;
 }
 
 static u16 choke_get_classid(const struct sk_buff *skb)
 {
-	return *(unsigned int *)(qdisc_skb_cb(skb)->data);
+	return choke_skb_cb(skb)->classid;
 }
 
Ideally class id should be u32, but then that would mean changing TC
classifier id and that is hardwired into the API.


-- 

Re: [PATCH net-next-2.6] sch_choke: add choke_skb_cb

From: Eric Dumazet <hidden>
Date: 2011-02-25 03:54:15

Le jeudi 24 février 2011 à 19:48 -0800, Stephen Hemminger a écrit :
Ideally class id should be u32, but then that would mean changing TC
classifier id and that is hardwired into the API.
Yes, this is a bit disappointing, especially if we want to use rxhash
from external classifier (same problem for SFQ)


Re: [PATCH net-next-2.6] sch_choke: add choke_skb_cb

From: David Miller <davem@davemloft.net>
Date: 2011-02-25 06:14:07

From: Eric Dumazet <redacted>
Date: Fri, 25 Feb 2011 04:45:41 +0100
Better document choke skb->cb[] use, like we did in netem and sfb

This adds a compile time check to make sure we dont exhaust skb->cb[]
space.

Signed-off-by: Eric Dumazet <redacted>
CC: Stephen Hemminger <redacted>
CC: Patrick McHardy <redacted>
Applied.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help