From: Tom Herbert <redacted>
Date: Thu, 7 Jun 2012 22:05:42 -0700 (PDT)
quoted hunk ↗ jump to hunk
@@ -381,7 +382,8 @@ struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr)
return next;
}
-#define bond_queue_mapping(skb) (*(u16 *)((skb)->cb))
+#define bond_queue_mapping(skb) (*(u16 *)((skb)->cb + \
+ sizeof(struct qdisc_skb_cb)))
/**
* bond_dev_queue_xmit - Prepare skb for xmit.
I know it's a little bit more work, but please declare a proper
datastructure which shows explicitly what's going on, like Infiniband
does in drivers/infiniband/ulp/ipoib/ipoib.h
struct bond_skb_cb {
struct qdisc_skb_cb qdisc_cb;
u16 queue_mapping;
};
Actually, this probably means there is also a conflict and thus
queue mapping corruption possible for bonded infiniband. :-/