[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>
This commit is contained in:
parent
b0573dea1f
commit
6f1cf16582
@ -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)
|
|||||||
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 @@
|
|||||||
#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 {
|
|||||||
* @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 {
|
|||||||
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,
|
|||||||
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,
|
|||||||
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)
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user