static inline void enqueue_wr(struct s3_conn *c3cn,
                              struct sk_buff *skb)
 {
-       skb->sp = NULL;
+       skb_wr_data(skb) = NULL;
 
        /*
         * We want to take an extra reference since both us and the driver
        if (!c3cn->wr_pending_head)
                c3cn->wr_pending_head = skb;
        else
-               c3cn->wr_pending_tail->sp = (void *)skb;
+               skb_wr_data(skb) = skb;
        c3cn->wr_pending_tail = skb;
 }
 
 
        if (likely(skb)) {
                /* Don't bother clearing the tail */
-               c3cn->wr_pending_head = (struct sk_buff *)skb->sp;
-               skb->sp = NULL;
+               c3cn->wr_pending_head = skb_wr_data(skb);
+               skb_wr_data(skb) = NULL;
        }
        return skb;
 }
 
  * @seq:       tcp sequence number
  * @ddigest:   pdu data digest
  * @pdulen:    recovered pdu length
- * @ulp_data:  scratch area for ULP
+ * @wr_data:   scratch area for tx wr
  */
 struct cxgb3_skb_cb {
        __u8 flags;
        __u32 seq;
        __u32 ddigest;
        __u32 pdulen;
-       __u8 ulp_data[16];
+       struct sk_buff *wr_data;
 };
 
 #define CXGB3_SKB_CB(skb)      ((struct cxgb3_skb_cb *)&((skb)->cb[0]))
 #define skb_ulp_mode(skb)      (CXGB3_SKB_CB(skb)->ulp_mode)
 #define skb_ulp_ddigest(skb)   (CXGB3_SKB_CB(skb)->ddigest)
 #define skb_ulp_pdulen(skb)    (CXGB3_SKB_CB(skb)->pdulen)
-#define skb_ulp_data(skb)      (CXGB3_SKB_CB(skb)->ulp_data)
+#define skb_wr_data(skb)       (CXGB3_SKB_CB(skb)->wr_data)
 
 enum c3cb_flags {
        C3CB_FLAG_NEED_HDR = 1 << 0,    /* packet needs a TX_DATA_WR header */