Commit 6f1cf165 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller

[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: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b0573dea
...@@ -1429,6 +1429,7 @@ static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1429,6 +1429,7 @@ static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev)
{ {
struct rr_private *rrpriv = netdev_priv(dev); struct rr_private *rrpriv = netdev_priv(dev);
struct rr_regs __iomem *regs = rrpriv->regs; struct rr_regs __iomem *regs = rrpriv->regs;
struct hippi_cb *hcb = (struct hippi_cb *) skb->cb;
struct ring_ctrl *txctrl; struct ring_ctrl *txctrl;
unsigned long flags; unsigned long flags;
u32 index, len = skb->len; u32 index, len = skb->len;
...@@ -1460,7 +1461,7 @@ static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1460,7 +1461,7 @@ static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev)
ifield = (u32 *)skb_push(skb, 8); ifield = (u32 *)skb_push(skb, 8);
ifield[0] = 0; ifield[0] = 0;
ifield[1] = skb->private.ifield; ifield[1] = hcb->ifield;
/* /*
* We don't need the lock before we are actually going to start * We don't need the lock before we are actually going to start
......
...@@ -26,6 +26,11 @@ ...@@ -26,6 +26,11 @@
#include <linux/if_hippi.h> #include <linux/if_hippi.h>
#ifdef __KERNEL__ #ifdef __KERNEL__
struct hippi_cb {
__u32 ifield;
};
extern unsigned short hippi_type_trans(struct sk_buff *skb, extern unsigned short hippi_type_trans(struct sk_buff *skb,
struct net_device *dev); struct net_device *dev);
......
...@@ -193,7 +193,6 @@ struct skb_shared_info { ...@@ -193,7 +193,6 @@ struct skb_shared_info {
* @nfct: Associated connection, if any * @nfct: Associated connection, if any
* @nfctinfo: Relationship of this skb to the connection * @nfctinfo: Relationship of this skb to the connection
* @nf_bridge: Saved data about a bridged frame - see br_netfilter.c * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
* @private: Data which is private to the HIPPI implementation
* @tc_index: Traffic control index * @tc_index: Traffic control index
* @tc_verd: traffic control verdict * @tc_verd: traffic control verdict
*/ */
...@@ -265,11 +264,6 @@ struct sk_buff { ...@@ -265,11 +264,6 @@ struct sk_buff {
struct nf_bridge_info *nf_bridge; struct nf_bridge_info *nf_bridge;
#endif #endif
#endif /* CONFIG_NETFILTER */ #endif /* CONFIG_NETFILTER */
#if defined(CONFIG_HIPPI)
union {
__u32 ifield;
} private;
#endif
#ifdef CONFIG_NET_SCHED #ifdef CONFIG_NET_SCHED
__u32 tc_index; /* traffic control index */ __u32 tc_index; /* traffic control index */
#ifdef CONFIG_NET_CLS_ACT #ifdef CONFIG_NET_CLS_ACT
......
...@@ -51,6 +51,7 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev, ...@@ -51,6 +51,7 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev,
unsigned len) unsigned len)
{ {
struct hippi_hdr *hip = (struct hippi_hdr *)skb_push(skb, HIPPI_HLEN); struct hippi_hdr *hip = (struct hippi_hdr *)skb_push(skb, HIPPI_HLEN);
struct hippi_cb *hcb = (struct hippi_cb *) skb->cb;
if (!len){ if (!len){
len = skb->len - HIPPI_HLEN; len = skb->len - HIPPI_HLEN;
...@@ -84,9 +85,10 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev, ...@@ -84,9 +85,10 @@ static int hippi_header(struct sk_buff *skb, struct net_device *dev,
if (daddr) if (daddr)
{ {
memcpy(hip->le.dest_switch_addr, daddr + 3, 3); memcpy(hip->le.dest_switch_addr, daddr + 3, 3);
memcpy(&skb->private.ifield, daddr + 2, 4); memcpy(&hcb->ifield, daddr + 2, 4);
return HIPPI_HLEN; return HIPPI_HLEN;
} }
hcb->ifield = 0;
return -((int)HIPPI_HLEN); return -((int)HIPPI_HLEN);
} }
......
...@@ -365,9 +365,6 @@ struct sk_buff *skb_clone(struct sk_buff *skb, unsigned int __nocast gfp_mask) ...@@ -365,9 +365,6 @@ struct sk_buff *skb_clone(struct sk_buff *skb, unsigned int __nocast gfp_mask)
nf_bridge_get(skb->nf_bridge); nf_bridge_get(skb->nf_bridge);
#endif #endif
#endif /*CONFIG_NETFILTER*/ #endif /*CONFIG_NETFILTER*/
#if defined(CONFIG_HIPPI)
C(private);
#endif
#ifdef CONFIG_NET_SCHED #ifdef CONFIG_NET_SCHED
C(tc_index); C(tc_index);
#ifdef CONFIG_NET_CLS_ACT #ifdef CONFIG_NET_CLS_ACT
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment