diff options
Diffstat (limited to 'drivers/s390/net/qeth_main.c')
-rw-r--r-- | drivers/s390/net/qeth_main.c | 49 |
1 files changed, 4 insertions, 45 deletions
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c index 607b92542df6..17e8d16fa06c 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * | 2 | * |
3 | * linux/drivers/s390/net/qeth_main.c ($Revision: 1.206 $) | 3 | * linux/drivers/s390/net/qeth_main.c ($Revision: 1.207 $) |
4 | * | 4 | * |
5 | * Linux on zSeries OSA Express and HiperSockets support | 5 | * Linux on zSeries OSA Express and HiperSockets support |
6 | * | 6 | * |
@@ -12,7 +12,7 @@ | |||
12 | * Frank Pavlic (pavlic@de.ibm.com) and | 12 | * Frank Pavlic (pavlic@de.ibm.com) and |
13 | * Thomas Spatzier <tspat@de.ibm.com> | 13 | * Thomas Spatzier <tspat@de.ibm.com> |
14 | * | 14 | * |
15 | * $Revision: 1.206 $ $Date: 2005/03/24 09:04:18 $ | 15 | * $Revision: 1.207 $ $Date: 2005/04/01 21:40:40 $ |
16 | * | 16 | * |
17 | * This program is free software; you can redistribute it and/or modify | 17 | * This program is free software; you can redistribute it and/or modify |
18 | * it under the terms of the GNU General Public License as published by | 18 | * it under the terms of the GNU General Public License as published by |
@@ -80,7 +80,7 @@ qeth_eyecatcher(void) | |||
80 | #include "qeth_eddp.h" | 80 | #include "qeth_eddp.h" |
81 | #include "qeth_tso.h" | 81 | #include "qeth_tso.h" |
82 | 82 | ||
83 | #define VERSION_QETH_C "$Revision: 1.206 $" | 83 | #define VERSION_QETH_C "$Revision: 1.207 $" |
84 | static const char *version = "qeth S/390 OSA-Express driver"; | 84 | static const char *version = "qeth S/390 OSA-Express driver"; |
85 | 85 | ||
86 | /** | 86 | /** |
@@ -3894,47 +3894,6 @@ qeth_fill_header(struct qeth_card *card, struct qeth_hdr *hdr, | |||
3894 | } | 3894 | } |
3895 | 3895 | ||
3896 | static inline void | 3896 | static inline void |
3897 | __qeth_fill_buffer_frag(struct sk_buff *skb, struct qdio_buffer *buffer, | ||
3898 | int *next_element_to_fill) | ||
3899 | { | ||
3900 | int length = skb->len; | ||
3901 | struct skb_frag_struct *frag; | ||
3902 | int fragno; | ||
3903 | unsigned long addr; | ||
3904 | int element; | ||
3905 | int first_lap = 1; | ||
3906 | |||
3907 | fragno = skb_shinfo(skb)->nr_frags; /* start with last frag */ | ||
3908 | element = *next_element_to_fill + fragno; | ||
3909 | while (length > 0) { | ||
3910 | if (fragno > 0) { | ||
3911 | frag = &skb_shinfo(skb)->frags[fragno - 1]; | ||
3912 | addr = (page_to_pfn(frag->page) << PAGE_SHIFT) + | ||
3913 | frag->page_offset; | ||
3914 | buffer->element[element].addr = (char *)addr; | ||
3915 | buffer->element[element].length = frag->size; | ||
3916 | length -= frag->size; | ||
3917 | if (first_lap) | ||
3918 | buffer->element[element].flags = | ||
3919 | SBAL_FLAGS_LAST_FRAG; | ||
3920 | else | ||
3921 | buffer->element[element].flags = | ||
3922 | SBAL_FLAGS_MIDDLE_FRAG; | ||
3923 | } else { | ||
3924 | buffer->element[element].addr = skb->data; | ||
3925 | buffer->element[element].length = length; | ||
3926 | length = 0; | ||
3927 | buffer->element[element].flags = | ||
3928 | SBAL_FLAGS_FIRST_FRAG; | ||
3929 | } | ||
3930 | element--; | ||
3931 | fragno--; | ||
3932 | first_lap = 0; | ||
3933 | } | ||
3934 | *next_element_to_fill += skb_shinfo(skb)->nr_frags + 1; | ||
3935 | } | ||
3936 | |||
3937 | static inline void | ||
3938 | __qeth_fill_buffer(struct sk_buff *skb, struct qdio_buffer *buffer, | 3897 | __qeth_fill_buffer(struct sk_buff *skb, struct qdio_buffer *buffer, |
3939 | int *next_element_to_fill) | 3898 | int *next_element_to_fill) |
3940 | { | 3899 | { |
@@ -3991,7 +3950,7 @@ qeth_fill_buffer(struct qeth_qdio_out_q *queue, | |||
3991 | __qeth_fill_buffer(skb, buffer, | 3950 | __qeth_fill_buffer(skb, buffer, |
3992 | (int *)&buf->next_element_to_fill); | 3951 | (int *)&buf->next_element_to_fill); |
3993 | else | 3952 | else |
3994 | __qeth_fill_buffer_frag(skb, buffer, | 3953 | __qeth_fill_buffer_frag(skb, buffer, 0, |
3995 | (int *)&buf->next_element_to_fill); | 3954 | (int *)&buf->next_element_to_fill); |
3996 | 3955 | ||
3997 | if (!queue->do_pack) { | 3956 | if (!queue->do_pack) { |