diff -ur linux-2.6.28-rc3-git-orig/include/linux/skbuff.h linux-2.6.28-rc3-git/include/linux/skbuff.h --- linux-2.6.28-rc3-git-orig/include/linux/skbuff.h 2008-11-06 19:44:23.000000000 -0500 +++ linux-2.6.28-rc3-git/include/linux/skbuff.h 2008-11-08 11:47:46.000000000 -0500 @@ -279,6 +279,14 @@ */ char cb[48]; + /* + * Additional space for layer-specific variables that need to + * survive past dev_queue_xmit(), which clobbers cb above. + * Intended for use by drivers that need additional layer-specific + * parameters in order to transmit a packet properly. + */ + char tx_extra[32]; + unsigned int len, data_len; __u16 mac_len, diff -ur linux-2.6.28-rc3-git-orig/include/net/irda/irda_device.h linux-2.6.28-rc3-git/include/net/irda/irda_device.h --- linux-2.6.28-rc3-git-orig/include/net/irda/irda_device.h 2008-11-06 19:44:23.000000000 -0500 +++ linux-2.6.28-rc3-git/include/net/irda/irda_device.h 2008-11-08 11:55:00.000000000 -0500 @@ -230,6 +230,12 @@ void irda_setup_dma(int channel, dma_addr_t buffer, int count, int mode); + +static inline struct irda_skb_cb *irda_get_skb_cb(struct sk_buff *skb) +{ + return (struct irda_skb_cb *)skb->tx_extra; +} + /* * Function irda_get_mtt (skb) *