]> Pileus Git - ~andy/linux/blobdiff - drivers/s390/net/qeth_core_main.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[~andy/linux] / drivers / s390 / net / qeth_core_main.c
index 451f92020599e68add4a6b8a52888f672ad69084..6cd0fc1b203a2c6e8147dc37d980933ff9b7e89f 100644 (file)
@@ -335,7 +335,7 @@ static inline int qeth_alloc_cq(struct qeth_card *card)
 
                card->qdio.no_in_queues = 2;
 
-               card->qdio.out_bufstates = (struct qdio_outbuf_state *)
+               card->qdio.out_bufstates =
                        kzalloc(card->qdio.no_out_queues *
                                QDIO_MAX_BUFFERS_PER_Q *
                                sizeof(struct qdio_outbuf_state), GFP_KERNEL);
@@ -3717,7 +3717,7 @@ int qeth_get_elements_for_frags(struct sk_buff *skb)
 }
 EXPORT_SYMBOL_GPL(qeth_get_elements_for_frags);
 
-int qeth_get_elements_no(struct qeth_card *card, void *hdr,
+int qeth_get_elements_no(struct qeth_card *card,
                     struct sk_buff *skb, int elems)
 {
        int dlen = skb->len - skb->data_len;
@@ -3736,7 +3736,7 @@ int qeth_get_elements_no(struct qeth_card *card, void *hdr,
 }
 EXPORT_SYMBOL_GPL(qeth_get_elements_no);
 
-int qeth_hdr_chk_and_bounce(struct sk_buff *skb, int len)
+int qeth_hdr_chk_and_bounce(struct sk_buff *skb, struct qeth_hdr **hdr, int len)
 {
        int hroom, inpage, rest;
 
@@ -3749,6 +3749,8 @@ int qeth_hdr_chk_and_bounce(struct sk_buff *skb, int len)
                        return 1;
                memmove(skb->data - rest, skb->data, skb->len - skb->data_len);
                skb->data -= rest;
+               skb->tail -= rest;
+               *hdr = (struct qeth_hdr *)skb->data;
                QETH_DBF_MESSAGE(2, "skb bounce len: %d rest: %d\n", len, rest);
        }
        return 0;