aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2005-08-09 22:31:17 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2005-08-29 18:31:42 -0400
commit6f1cf16582160c4839f05007c978743911aa022b (patch)
tree78c87b929e9c0469869db1c91a6691fe6ca689c6
parentb0573dea1fb32ebc72ffa05980fd840df1d80860 (diff)
[NET]: Remove HIPPI private from skbuff.h
This removes the private element from skbuff, that is only used by HIPPI. Instead it uses skb->cb[] to hold the additional data that is needed in the output path from hard_header to device driver. PS: The only qdisc that might potentially corrupt this cb[] is if netem was used over HIPPI. I will take care of that by fixing netem to use skb->stamp. I don't expect many users of netem over HIPPI Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/rrunner.c3
-rw-r--r--include/linux/hippidevice.h5
-rw-r--r--include/linux/skbuff.h6
-rw-r--r--net/802/hippi.c4
-rw-r--r--net/core/skbuff.c3
5 files changed, 10 insertions, 11 deletions
diff --git a/drivers/net/rrunner.c b/drivers/net/rrunner.c
index 12a86f96d973..ec1a18d189a1 100644
--- a/drivers/net/rrunner.c
+++ b/drivers/net/rrunner.c
@@ -1429,6 +1429,7 @@ static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev)
1429{ 1429{
1430 struct rr_private *rrpriv = netdev_priv(dev); 1430 struct rr_private *rrpriv = netdev_priv(dev);
1431 struct rr_regs __iomem *regs = rrpriv->regs; 1431 struct rr_regs __iomem *regs = rrpriv->regs;
1432 struct hippi_cb *hcb = (struct hippi_cb *) skb->cb;
1432 struct ring_ctrl *txctrl; 1433 struct ring_ctrl *txctrl;
1433 unsigned long flags; 1434 unsigned long flags;
1434 u32 index, len = skb->len; 1435 u32 index, len = skb->len;
@@ -1460,7 +1461,7 @@ static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev)
1460 ifield = (u32 *)skb_push(skb, 8); 1461 ifield = (u32 *)skb_push(skb, 8);
1461 1462
1462 ifield[0] = 0; 1463 ifield[0] = 0;
1463 ifield[1] = skb->private.ifield; 1464 ifield[1] = hcb->ifield;
1464 1465
1465 /* 1466 /*
1466 * We don't need the lock before we are actually going to start 1467 * We don't need the lock before we are actually going to start
diff --git a/include/linux/hippidevice.h b/include/linux/hippidevice.h
index 9debe6bbe5f0..9bc3b688d2ee 100644
--- a/include/linux/hippidevice.h
+++ b/include/linux/hippidevice.h
@@ -26,6 +26,11 @@
26#include <linux/if_hippi.h> 26#include <linux/if_hippi.h>
27 27
28#ifdef __KERNEL__ 28#ifdef __KERNEL__
29
30struct hippi_cb {
31 __u32 ifield;
32};
33
29extern unsigned short hippi_type_trans(struct sk_buff *skb, 34extern unsigned short hippi_type_trans(struct sk_buff *skb,
30 struct net_device *dev); 35 struct net_device *dev);
31 36
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index f10a8b9628b0..4aeadb102589 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -193,7 +193,6 @@ struct skb_shared_info {
193 * @nfct: Associated connection, if any 193 * @nfct: Associated connection, if any
194 * @nfctinfo: Relationship of this skb to the connection 194 * @nfctinfo: Relationship of this skb to the connection
195 * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c 195 * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
196 * @private: Data which is private to the HIPPI implementation
197 * @tc_index: Traffic control index 196 * @tc_index: Traffic control index
198 * @tc_verd: traffic control verdict 197 * @tc_verd: traffic control verdict
199 */ 198 */
@@ -265,11 +264,6 @@ struct sk_buff {
265 struct nf_bridge_info *nf_bridge; 264 struct nf_bridge_info *nf_bridge;
266#endif 265#endif
267#endif /* CONFIG_NETFILTER */ 266#endif /* CONFIG_NETFILTER */
268#if defined(CONFIG_HIPPI)
269 union {
270 __u32 ifield;
271 } private;
272#endif
273#ifdef CONFIG_NET_SCHED 267#ifdef CONFIG_NET_SCHED
274 __u32 tc_index; /* traffic control index */ 268 __u32 tc_index; /* traffic control index */
275#ifdef CONFIG_NET_CLS_ACT 269#ifdef CONFIG_NET_CLS_ACT
diff --git a/net/802/hippi.c b/net/802/hippi.c
index 051e8af56a77..cb45ae1310cb 100644
--- a/net/802/hippi.c
+++ b/net/802/hippi.c
@@ -51,6 +51,7 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev,
51 unsigned len) 51 unsigned len)
52{ 52{
53 struct hippi_hdr *hip = (struct hippi_hdr *)skb_push(skb, HIPPI_HLEN); 53 struct hippi_hdr *hip = (struct hippi_hdr *)skb_push(skb, HIPPI_HLEN);
54 struct hippi_cb *hcb = (struct hippi_cb *) skb->cb;
54 55
55 if (!len){ 56 if (!len){
56 len = skb->len - HIPPI_HLEN; 57 len = skb->len - HIPPI_HLEN;
@@ -84,9 +85,10 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev,
84 if (daddr) 85 if (daddr)
85 { 86 {
86 memcpy(hip->le.dest_switch_addr, daddr + 3, 3); 87 memcpy(hip->le.dest_switch_addr, daddr + 3, 3);
87 memcpy(&skb->private.ifield, daddr + 2, 4); 88 memcpy(&hcb->ifield, daddr + 2, 4);
88 return HIPPI_HLEN; 89 return HIPPI_HLEN;
89 } 90 }
91 hcb->ifield = 0;
90 return -((int)HIPPI_HLEN); 92 return -((int)HIPPI_HLEN);
91} 93}
92 94
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 8896e6f8aa42..16df7bd77e78 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -365,9 +365,6 @@ struct sk_buff *skb_clone(struct sk_buff *skb, unsigned int __nocast gfp_mask)
365 nf_bridge_get(skb->nf_bridge); 365 nf_bridge_get(skb->nf_bridge);
366#endif 366#endif
367#endif /*CONFIG_NETFILTER*/ 367#endif /*CONFIG_NETFILTER*/
368#if defined(CONFIG_HIPPI)
369 C(private);
370#endif
371#ifdef CONFIG_NET_SCHED 368#ifdef CONFIG_NET_SCHED
372 C(tc_index); 369 C(tc_index);
373#ifdef CONFIG_NET_CLS_ACT 370#ifdef CONFIG_NET_CLS_ACT