diff options
Diffstat (limited to 'drivers/s390/net/qeth.h')
-rw-r--r-- | drivers/s390/net/qeth.h | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/drivers/s390/net/qeth.h b/drivers/s390/net/qeth.h index a341041a6cf7..a755b57db46b 100644 --- a/drivers/s390/net/qeth.h +++ b/drivers/s390/net/qeth.h | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include "qeth_mpc.h" | 25 | #include "qeth_mpc.h" |
26 | 26 | ||
27 | #define VERSION_QETH_H "$Revision: 1.135 $" | 27 | #define VERSION_QETH_H "$Revision: 1.139 $" |
28 | 28 | ||
29 | #ifdef CONFIG_QETH_IPV6 | 29 | #ifdef CONFIG_QETH_IPV6 |
30 | #define QETH_VERSION_IPV6 ":IPv6" | 30 | #define QETH_VERSION_IPV6 ":IPv6" |
@@ -288,7 +288,8 @@ qeth_is_ipa_enabled(struct qeth_ipa_info *ipa, enum qeth_ipa_funcs func) | |||
288 | #define QETH_TX_TIMEOUT 100 * HZ | 288 | #define QETH_TX_TIMEOUT 100 * HZ |
289 | #define QETH_HEADER_SIZE 32 | 289 | #define QETH_HEADER_SIZE 32 |
290 | #define MAX_PORTNO 15 | 290 | #define MAX_PORTNO 15 |
291 | #define QETH_FAKE_LL_LEN ETH_HLEN | 291 | #define QETH_FAKE_LL_LEN_ETH ETH_HLEN |
292 | #define QETH_FAKE_LL_LEN_TR (sizeof(struct trh_hdr)-TR_MAXRIFLEN+sizeof(struct trllc)) | ||
292 | #define QETH_FAKE_LL_V6_ADDR_POS 24 | 293 | #define QETH_FAKE_LL_V6_ADDR_POS 24 |
293 | 294 | ||
294 | /*IPv6 address autoconfiguration stuff*/ | 295 | /*IPv6 address autoconfiguration stuff*/ |
@@ -369,6 +370,25 @@ struct qeth_hdr { | |||
369 | } hdr; | 370 | } hdr; |
370 | } __attribute__ ((packed)); | 371 | } __attribute__ ((packed)); |
371 | 372 | ||
373 | /*TCP Segmentation Offload header*/ | ||
374 | struct qeth_hdr_ext_tso { | ||
375 | __u16 hdr_tot_len; | ||
376 | __u8 imb_hdr_no; | ||
377 | __u8 reserved; | ||
378 | __u8 hdr_type; | ||
379 | __u8 hdr_version; | ||
380 | __u16 hdr_len; | ||
381 | __u32 payload_len; | ||
382 | __u16 mss; | ||
383 | __u16 dg_hdr_len; | ||
384 | __u8 padding[16]; | ||
385 | } __attribute__ ((packed)); | ||
386 | |||
387 | struct qeth_hdr_tso { | ||
388 | struct qeth_hdr hdr; /*hdr->hdr.l3.xxx*/ | ||
389 | struct qeth_hdr_ext_tso ext; | ||
390 | } __attribute__ ((packed)); | ||
391 | |||
372 | 392 | ||
373 | /* flags for qeth_hdr.flags */ | 393 | /* flags for qeth_hdr.flags */ |
374 | #define QETH_HDR_PASSTHRU 0x10 | 394 | #define QETH_HDR_PASSTHRU 0x10 |
@@ -866,6 +886,7 @@ qeth_push_skb(struct qeth_card *card, struct sk_buff **skb, int size) | |||
866 | return hdr; | 886 | return hdr; |
867 | } | 887 | } |
868 | 888 | ||
889 | |||
869 | inline static int | 890 | inline static int |
870 | qeth_get_hlen(__u8 link_type) | 891 | qeth_get_hlen(__u8 link_type) |
871 | { | 892 | { |
@@ -873,19 +894,19 @@ qeth_get_hlen(__u8 link_type) | |||
873 | switch (link_type) { | 894 | switch (link_type) { |
874 | case QETH_LINK_TYPE_HSTR: | 895 | case QETH_LINK_TYPE_HSTR: |
875 | case QETH_LINK_TYPE_LANE_TR: | 896 | case QETH_LINK_TYPE_LANE_TR: |
876 | return sizeof(struct qeth_hdr) + TR_HLEN; | 897 | return sizeof(struct qeth_hdr_tso) + TR_HLEN; |
877 | default: | 898 | default: |
878 | #ifdef CONFIG_QETH_VLAN | 899 | #ifdef CONFIG_QETH_VLAN |
879 | return sizeof(struct qeth_hdr) + VLAN_ETH_HLEN; | 900 | return sizeof(struct qeth_hdr_tso) + VLAN_ETH_HLEN; |
880 | #else | 901 | #else |
881 | return sizeof(struct qeth_hdr) + ETH_HLEN; | 902 | return sizeof(struct qeth_hdr_tso) + ETH_HLEN; |
882 | #endif | 903 | #endif |
883 | } | 904 | } |
884 | #else /* CONFIG_QETH_IPV6 */ | 905 | #else /* CONFIG_QETH_IPV6 */ |
885 | #ifdef CONFIG_QETH_VLAN | 906 | #ifdef CONFIG_QETH_VLAN |
886 | return sizeof(struct qeth_hdr) + VLAN_HLEN; | 907 | return sizeof(struct qeth_hdr_tso) + VLAN_HLEN; |
887 | #else | 908 | #else |
888 | return sizeof(struct qeth_hdr); | 909 | return sizeof(struct qeth_hdr_tso); |
889 | #endif | 910 | #endif |
890 | #endif /* CONFIG_QETH_IPV6 */ | 911 | #endif /* CONFIG_QETH_IPV6 */ |
891 | } | 912 | } |