diff options
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/block/dasd.c | 1 | ||||
-rw-r--r-- | drivers/s390/char/monwriter.c | 14 | ||||
-rw-r--r-- | drivers/s390/cio/css.c | 7 | ||||
-rw-r--r-- | drivers/s390/cio/device.c | 3 | ||||
-rw-r--r-- | drivers/s390/cio/device.h | 1 | ||||
-rw-r--r-- | drivers/s390/cio/device_fsm.c | 4 | ||||
-rw-r--r-- | drivers/s390/cio/qdio.c | 2 | ||||
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 7 | ||||
-rw-r--r-- | drivers/s390/net/claw.h | 2 | ||||
-rw-r--r-- | drivers/s390/net/lcs.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/lcs.h | 4 | ||||
-rw-r--r-- | drivers/s390/net/qeth_eddp.c | 40 | ||||
-rw-r--r-- | drivers/s390/net/qeth_eddp.h | 2 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_def.h | 4 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_scsi.c | 1 |
15 files changed, 56 insertions, 38 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index d0647d116eaa..79ffef6bfaf8 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -203,6 +203,7 @@ dasd_state_basic_to_known(struct dasd_device * device) | |||
203 | rc = dasd_flush_ccw_queue(device, 1); | 203 | rc = dasd_flush_ccw_queue(device, 1); |
204 | if (rc) | 204 | if (rc) |
205 | return rc; | 205 | return rc; |
206 | dasd_clear_timer(device); | ||
206 | 207 | ||
207 | DBF_DEV_EVENT(DBF_EMERG, device, "%p debug area deleted", device); | 208 | DBF_DEV_EVENT(DBF_EMERG, device, "%p debug area deleted", device); |
208 | if (device->debug_area != NULL) { | 209 | if (device->debug_area != NULL) { |
diff --git a/drivers/s390/char/monwriter.c b/drivers/s390/char/monwriter.c index abd02ed501cb..b9b0fc3f812b 100644 --- a/drivers/s390/char/monwriter.c +++ b/drivers/s390/char/monwriter.c | |||
@@ -73,12 +73,15 @@ static inline struct mon_buf *monwrite_find_hdr(struct mon_private *monpriv, | |||
73 | struct mon_buf *entry, *next; | 73 | struct mon_buf *entry, *next; |
74 | 74 | ||
75 | list_for_each_entry_safe(entry, next, &monpriv->list, list) | 75 | list_for_each_entry_safe(entry, next, &monpriv->list, list) |
76 | if (entry->hdr.applid == monhdr->applid && | 76 | if ((entry->hdr.mon_function == monhdr->mon_function || |
77 | monhdr->mon_function == MONWRITE_STOP_INTERVAL) && | ||
78 | entry->hdr.applid == monhdr->applid && | ||
77 | entry->hdr.record_num == monhdr->record_num && | 79 | entry->hdr.record_num == monhdr->record_num && |
78 | entry->hdr.version == monhdr->version && | 80 | entry->hdr.version == monhdr->version && |
79 | entry->hdr.release == monhdr->release && | 81 | entry->hdr.release == monhdr->release && |
80 | entry->hdr.mod_level == monhdr->mod_level) | 82 | entry->hdr.mod_level == monhdr->mod_level) |
81 | return entry; | 83 | return entry; |
84 | |||
82 | return NULL; | 85 | return NULL; |
83 | } | 86 | } |
84 | 87 | ||
@@ -92,7 +95,9 @@ static int monwrite_new_hdr(struct mon_private *monpriv) | |||
92 | monhdr->mon_function > MONWRITE_START_CONFIG || | 95 | monhdr->mon_function > MONWRITE_START_CONFIG || |
93 | monhdr->hdrlen != sizeof(struct monwrite_hdr)) | 96 | monhdr->hdrlen != sizeof(struct monwrite_hdr)) |
94 | return -EINVAL; | 97 | return -EINVAL; |
95 | monbuf = monwrite_find_hdr(monpriv, monhdr); | 98 | monbuf = NULL; |
99 | if (monhdr->mon_function != MONWRITE_GEN_EVENT) | ||
100 | monbuf = monwrite_find_hdr(monpriv, monhdr); | ||
96 | if (monbuf) { | 101 | if (monbuf) { |
97 | if (monhdr->mon_function == MONWRITE_STOP_INTERVAL) { | 102 | if (monhdr->mon_function == MONWRITE_STOP_INTERVAL) { |
98 | monhdr->datalen = monbuf->hdr.datalen; | 103 | monhdr->datalen = monbuf->hdr.datalen; |
@@ -104,7 +109,7 @@ static int monwrite_new_hdr(struct mon_private *monpriv) | |||
104 | kfree(monbuf); | 109 | kfree(monbuf); |
105 | monbuf = NULL; | 110 | monbuf = NULL; |
106 | } | 111 | } |
107 | } else { | 112 | } else if (monhdr->mon_function != MONWRITE_STOP_INTERVAL) { |
108 | if (mon_buf_count >= mon_max_bufs) | 113 | if (mon_buf_count >= mon_max_bufs) |
109 | return -ENOSPC; | 114 | return -ENOSPC; |
110 | monbuf = kzalloc(sizeof(struct mon_buf), GFP_KERNEL); | 115 | monbuf = kzalloc(sizeof(struct mon_buf), GFP_KERNEL); |
@@ -118,7 +123,8 @@ static int monwrite_new_hdr(struct mon_private *monpriv) | |||
118 | } | 123 | } |
119 | monbuf->hdr = *monhdr; | 124 | monbuf->hdr = *monhdr; |
120 | list_add_tail(&monbuf->list, &monpriv->list); | 125 | list_add_tail(&monbuf->list, &monpriv->list); |
121 | mon_buf_count++; | 126 | if (monhdr->mon_function != MONWRITE_GEN_EVENT) |
127 | mon_buf_count++; | ||
122 | } | 128 | } |
123 | monpriv->current_buf = monbuf; | 129 | monpriv->current_buf = monbuf; |
124 | return 0; | 130 | return 0; |
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index a2dee5bf5a17..ad7f7e1c0163 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c | |||
@@ -271,10 +271,6 @@ static int css_evaluate_known_subchannel(struct subchannel *sch, int slow) | |||
271 | /* Reset intparm to zeroes. */ | 271 | /* Reset intparm to zeroes. */ |
272 | sch->schib.pmcw.intparm = 0; | 272 | sch->schib.pmcw.intparm = 0; |
273 | cio_modify(sch); | 273 | cio_modify(sch); |
274 | |||
275 | /* Probe if necessary. */ | ||
276 | if (action == UNREGISTER_PROBE) | ||
277 | ret = css_probe_device(sch->schid); | ||
278 | break; | 274 | break; |
279 | case REPROBE: | 275 | case REPROBE: |
280 | device_trigger_reprobe(sch); | 276 | device_trigger_reprobe(sch); |
@@ -283,6 +279,9 @@ static int css_evaluate_known_subchannel(struct subchannel *sch, int slow) | |||
283 | break; | 279 | break; |
284 | } | 280 | } |
285 | spin_unlock_irqrestore(&sch->lock, flags); | 281 | spin_unlock_irqrestore(&sch->lock, flags); |
282 | /* Probe if necessary. */ | ||
283 | if (action == UNREGISTER_PROBE) | ||
284 | ret = css_probe_device(sch->schid); | ||
286 | 285 | ||
287 | return ret; | 286 | return ret; |
288 | } | 287 | } |
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index 94bdd4d8a4c9..39c98f940507 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c | |||
@@ -532,8 +532,7 @@ device_remove_files(struct device *dev) | |||
532 | 532 | ||
533 | /* this is a simple abstraction for device_register that sets the | 533 | /* this is a simple abstraction for device_register that sets the |
534 | * correct bus type and adds the bus specific files */ | 534 | * correct bus type and adds the bus specific files */ |
535 | int | 535 | static int ccw_device_register(struct ccw_device *cdev) |
536 | ccw_device_register(struct ccw_device *cdev) | ||
537 | { | 536 | { |
538 | struct device *dev = &cdev->dev; | 537 | struct device *dev = &cdev->dev; |
539 | int ret; | 538 | int ret; |
diff --git a/drivers/s390/cio/device.h b/drivers/s390/cio/device.h index c6140cc97a80..9233b5c0bcc8 100644 --- a/drivers/s390/cio/device.h +++ b/drivers/s390/cio/device.h | |||
@@ -78,7 +78,6 @@ void io_subchannel_recog_done(struct ccw_device *cdev); | |||
78 | 78 | ||
79 | int ccw_device_cancel_halt_clear(struct ccw_device *); | 79 | int ccw_device_cancel_halt_clear(struct ccw_device *); |
80 | 80 | ||
81 | int ccw_device_register(struct ccw_device *); | ||
82 | void ccw_device_do_unreg_rereg(void *); | 81 | void ccw_device_do_unreg_rereg(void *); |
83 | void ccw_device_call_sch_unregister(void *); | 82 | void ccw_device_call_sch_unregister(void *); |
84 | 83 | ||
diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c index fcaf28d7b4eb..de3d0857db9f 100644 --- a/drivers/s390/cio/device_fsm.c +++ b/drivers/s390/cio/device_fsm.c | |||
@@ -578,9 +578,13 @@ ccw_device_verify_done(struct ccw_device *cdev, int err) | |||
578 | } | 578 | } |
579 | break; | 579 | break; |
580 | case -ETIME: | 580 | case -ETIME: |
581 | /* Reset oper notify indication after verify error. */ | ||
582 | cdev->private->flags.donotify = 0; | ||
581 | ccw_device_done(cdev, DEV_STATE_BOXED); | 583 | ccw_device_done(cdev, DEV_STATE_BOXED); |
582 | break; | 584 | break; |
583 | default: | 585 | default: |
586 | /* Reset oper notify indication after verify error. */ | ||
587 | cdev->private->flags.donotify = 0; | ||
584 | PREPARE_WORK(&cdev->private->kick_work, | 588 | PREPARE_WORK(&cdev->private->kick_work, |
585 | ccw_device_nopath_notify, cdev); | 589 | ccw_device_nopath_notify, cdev); |
586 | queue_work(ccw_device_notify_work, &cdev->private->kick_work); | 590 | queue_work(ccw_device_notify_work, &cdev->private->kick_work); |
diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c index 0648ce5bb684..476aa1da5cbc 100644 --- a/drivers/s390/cio/qdio.c +++ b/drivers/s390/cio/qdio.c | |||
@@ -3529,7 +3529,7 @@ do_QDIO(struct ccw_device *cdev,unsigned int callflags, | |||
3529 | #ifdef CONFIG_QDIO_DEBUG | 3529 | #ifdef CONFIG_QDIO_DEBUG |
3530 | char dbf_text[20]; | 3530 | char dbf_text[20]; |
3531 | 3531 | ||
3532 | sprintf(dbf_text,"doQD%04x",cdev->private->sch_no); | 3532 | sprintf(dbf_text,"doQD%04x",cdev->private->schid.sch_no); |
3533 | QDIO_DBF_TEXT3(0,trace,dbf_text); | 3533 | QDIO_DBF_TEXT3(0,trace,dbf_text); |
3534 | #endif /* CONFIG_QDIO_DEBUG */ | 3534 | #endif /* CONFIG_QDIO_DEBUG */ |
3535 | 3535 | ||
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index c5ccd20b110c..79d89c368919 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
@@ -739,11 +739,16 @@ static void ap_scan_bus(void *data) | |||
739 | dev = bus_find_device(&ap_bus_type, NULL, | 739 | dev = bus_find_device(&ap_bus_type, NULL, |
740 | (void *)(unsigned long)qid, | 740 | (void *)(unsigned long)qid, |
741 | __ap_scan_bus); | 741 | __ap_scan_bus); |
742 | rc = ap_query_queue(qid, &queue_depth, &device_type); | ||
743 | if (dev && rc) { | ||
744 | put_device(dev); | ||
745 | device_unregister(dev); | ||
746 | continue; | ||
747 | } | ||
742 | if (dev) { | 748 | if (dev) { |
743 | put_device(dev); | 749 | put_device(dev); |
744 | continue; | 750 | continue; |
745 | } | 751 | } |
746 | rc = ap_query_queue(qid, &queue_depth, &device_type); | ||
747 | if (rc) | 752 | if (rc) |
748 | continue; | 753 | continue; |
749 | rc = ap_init_queue(qid); | 754 | rc = ap_init_queue(qid); |
diff --git a/drivers/s390/net/claw.h b/drivers/s390/net/claw.h index 969be465309c..1ee9a6f06541 100644 --- a/drivers/s390/net/claw.h +++ b/drivers/s390/net/claw.h | |||
@@ -29,7 +29,7 @@ | |||
29 | #define CLAW_COMPLETE 0xff /* flag to indicate i/o completed */ | 29 | #define CLAW_COMPLETE 0xff /* flag to indicate i/o completed */ |
30 | 30 | ||
31 | /*-----------------------------------------------------* | 31 | /*-----------------------------------------------------* |
32 | * CLAW control comand code * | 32 | * CLAW control command code * |
33 | *------------------------------------------------------*/ | 33 | *------------------------------------------------------*/ |
34 | 34 | ||
35 | #define SYSTEM_VALIDATE_REQUEST 0x01 /* System Validate request */ | 35 | #define SYSTEM_VALIDATE_REQUEST 0x01 /* System Validate request */ |
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c index 16ac68c27a27..66a8aec6efa6 100644 --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c | |||
@@ -1147,7 +1147,7 @@ list_modified: | |||
1147 | * get mac address for the relevant Multicast address | 1147 | * get mac address for the relevant Multicast address |
1148 | */ | 1148 | */ |
1149 | static void | 1149 | static void |
1150 | lcs_get_mac_for_ipm(__u32 ipm, char *mac, struct net_device *dev) | 1150 | lcs_get_mac_for_ipm(__be32 ipm, char *mac, struct net_device *dev) |
1151 | { | 1151 | { |
1152 | LCS_DBF_TEXT(4,trace, "getmac"); | 1152 | LCS_DBF_TEXT(4,trace, "getmac"); |
1153 | if (dev->type == ARPHRD_IEEE802_TR) | 1153 | if (dev->type == ARPHRD_IEEE802_TR) |
diff --git a/drivers/s390/net/lcs.h b/drivers/s390/net/lcs.h index 93143932983b..b5247dc08b57 100644 --- a/drivers/s390/net/lcs.h +++ b/drivers/s390/net/lcs.h | |||
@@ -169,7 +169,7 @@ struct lcs_header { | |||
169 | } __attribute__ ((packed)); | 169 | } __attribute__ ((packed)); |
170 | 170 | ||
171 | struct lcs_ip_mac_pair { | 171 | struct lcs_ip_mac_pair { |
172 | __u32 ip_addr; | 172 | __be32 ip_addr; |
173 | __u8 mac_addr[LCS_MAC_LENGTH]; | 173 | __u8 mac_addr[LCS_MAC_LENGTH]; |
174 | __u8 reserved[2]; | 174 | __u8 reserved[2]; |
175 | } __attribute__ ((packed)); | 175 | } __attribute__ ((packed)); |
@@ -287,7 +287,7 @@ struct lcs_card { | |||
287 | enum lcs_dev_states state; | 287 | enum lcs_dev_states state; |
288 | struct net_device *dev; | 288 | struct net_device *dev; |
289 | struct net_device_stats stats; | 289 | struct net_device_stats stats; |
290 | unsigned short (*lan_type_trans)(struct sk_buff *skb, | 290 | __be16 (*lan_type_trans)(struct sk_buff *skb, |
291 | struct net_device *dev); | 291 | struct net_device *dev); |
292 | struct ccwgroup_device *gdev; | 292 | struct ccwgroup_device *gdev; |
293 | struct lcs_channel read; | 293 | struct lcs_channel read; |
diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c index a363721cf28d..6bb558a9a032 100644 --- a/drivers/s390/net/qeth_eddp.c +++ b/drivers/s390/net/qeth_eddp.c | |||
@@ -258,7 +258,7 @@ qeth_eddp_create_segment_hdrs(struct qeth_eddp_context *ctx, | |||
258 | 258 | ||
259 | static inline void | 259 | static inline void |
260 | qeth_eddp_copy_data_tcp(char *dst, struct qeth_eddp_data *eddp, int len, | 260 | qeth_eddp_copy_data_tcp(char *dst, struct qeth_eddp_data *eddp, int len, |
261 | u32 *hcsum) | 261 | __wsum *hcsum) |
262 | { | 262 | { |
263 | struct skb_frag_struct *frag; | 263 | struct skb_frag_struct *frag; |
264 | int left_in_frag; | 264 | int left_in_frag; |
@@ -305,7 +305,7 @@ qeth_eddp_copy_data_tcp(char *dst, struct qeth_eddp_data *eddp, int len, | |||
305 | static inline void | 305 | static inline void |
306 | qeth_eddp_create_segment_data_tcp(struct qeth_eddp_context *ctx, | 306 | qeth_eddp_create_segment_data_tcp(struct qeth_eddp_context *ctx, |
307 | struct qeth_eddp_data *eddp, int data_len, | 307 | struct qeth_eddp_data *eddp, int data_len, |
308 | u32 hcsum) | 308 | __wsum hcsum) |
309 | { | 309 | { |
310 | u8 *page; | 310 | u8 *page; |
311 | int page_remainder; | 311 | int page_remainder; |
@@ -349,10 +349,10 @@ qeth_eddp_create_segment_data_tcp(struct qeth_eddp_context *ctx, | |||
349 | ((struct tcphdr *)eddp->th_in_ctx)->check = csum_fold(hcsum); | 349 | ((struct tcphdr *)eddp->th_in_ctx)->check = csum_fold(hcsum); |
350 | } | 350 | } |
351 | 351 | ||
352 | static inline u32 | 352 | static inline __wsum |
353 | qeth_eddp_check_tcp4_hdr(struct qeth_eddp_data *eddp, int data_len) | 353 | qeth_eddp_check_tcp4_hdr(struct qeth_eddp_data *eddp, int data_len) |
354 | { | 354 | { |
355 | u32 phcsum; /* pseudo header checksum */ | 355 | __wsum phcsum; /* pseudo header checksum */ |
356 | 356 | ||
357 | QETH_DBF_TEXT(trace, 5, "eddpckt4"); | 357 | QETH_DBF_TEXT(trace, 5, "eddpckt4"); |
358 | eddp->th.tcp.h.check = 0; | 358 | eddp->th.tcp.h.check = 0; |
@@ -363,11 +363,11 @@ qeth_eddp_check_tcp4_hdr(struct qeth_eddp_data *eddp, int data_len) | |||
363 | return csum_partial((u8 *)&eddp->th, eddp->thl, phcsum); | 363 | return csum_partial((u8 *)&eddp->th, eddp->thl, phcsum); |
364 | } | 364 | } |
365 | 365 | ||
366 | static inline u32 | 366 | static inline __wsum |
367 | qeth_eddp_check_tcp6_hdr(struct qeth_eddp_data *eddp, int data_len) | 367 | qeth_eddp_check_tcp6_hdr(struct qeth_eddp_data *eddp, int data_len) |
368 | { | 368 | { |
369 | u32 proto; | 369 | __be32 proto; |
370 | u32 phcsum; /* pseudo header checksum */ | 370 | __wsum phcsum; /* pseudo header checksum */ |
371 | 371 | ||
372 | QETH_DBF_TEXT(trace, 5, "eddpckt6"); | 372 | QETH_DBF_TEXT(trace, 5, "eddpckt6"); |
373 | eddp->th.tcp.h.check = 0; | 373 | eddp->th.tcp.h.check = 0; |
@@ -405,7 +405,7 @@ __qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, | |||
405 | { | 405 | { |
406 | struct tcphdr *tcph; | 406 | struct tcphdr *tcph; |
407 | int data_len; | 407 | int data_len; |
408 | u32 hcsum; | 408 | __wsum hcsum; |
409 | 409 | ||
410 | QETH_DBF_TEXT(trace, 5, "eddpftcp"); | 410 | QETH_DBF_TEXT(trace, 5, "eddpftcp"); |
411 | eddp->skb_offset = sizeof(struct qeth_hdr) + eddp->nhl + eddp->thl; | 411 | eddp->skb_offset = sizeof(struct qeth_hdr) + eddp->nhl + eddp->thl; |
@@ -433,22 +433,22 @@ __qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, | |||
433 | eddp->qh.hdr.l3.length = data_len + eddp->nhl + | 433 | eddp->qh.hdr.l3.length = data_len + eddp->nhl + |
434 | eddp->thl; | 434 | eddp->thl; |
435 | /* prepare ip hdr */ | 435 | /* prepare ip hdr */ |
436 | if (eddp->skb->protocol == ETH_P_IP){ | 436 | if (eddp->skb->protocol == htons(ETH_P_IP)){ |
437 | eddp->nh.ip4.h.tot_len = data_len + eddp->nhl + | 437 | eddp->nh.ip4.h.tot_len = htons(data_len + eddp->nhl + |
438 | eddp->thl; | 438 | eddp->thl); |
439 | eddp->nh.ip4.h.check = 0; | 439 | eddp->nh.ip4.h.check = 0; |
440 | eddp->nh.ip4.h.check = | 440 | eddp->nh.ip4.h.check = |
441 | ip_fast_csum((u8 *)&eddp->nh.ip4.h, | 441 | ip_fast_csum((u8 *)&eddp->nh.ip4.h, |
442 | eddp->nh.ip4.h.ihl); | 442 | eddp->nh.ip4.h.ihl); |
443 | } else | 443 | } else |
444 | eddp->nh.ip6.h.payload_len = data_len + eddp->thl; | 444 | eddp->nh.ip6.h.payload_len = htons(data_len + eddp->thl); |
445 | /* prepare tcp hdr */ | 445 | /* prepare tcp hdr */ |
446 | if (data_len == (eddp->skb->len - eddp->skb_offset)){ | 446 | if (data_len == (eddp->skb->len - eddp->skb_offset)){ |
447 | /* last segment -> set FIN and PSH flags */ | 447 | /* last segment -> set FIN and PSH flags */ |
448 | eddp->th.tcp.h.fin = tcph->fin; | 448 | eddp->th.tcp.h.fin = tcph->fin; |
449 | eddp->th.tcp.h.psh = tcph->psh; | 449 | eddp->th.tcp.h.psh = tcph->psh; |
450 | } | 450 | } |
451 | if (eddp->skb->protocol == ETH_P_IP) | 451 | if (eddp->skb->protocol == htons(ETH_P_IP)) |
452 | hcsum = qeth_eddp_check_tcp4_hdr(eddp, data_len); | 452 | hcsum = qeth_eddp_check_tcp4_hdr(eddp, data_len); |
453 | else | 453 | else |
454 | hcsum = qeth_eddp_check_tcp6_hdr(eddp, data_len); | 454 | hcsum = qeth_eddp_check_tcp6_hdr(eddp, data_len); |
@@ -458,9 +458,9 @@ __qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, | |||
458 | if (eddp->skb_offset >= eddp->skb->len) | 458 | if (eddp->skb_offset >= eddp->skb->len) |
459 | break; | 459 | break; |
460 | /* prepare headers for next round */ | 460 | /* prepare headers for next round */ |
461 | if (eddp->skb->protocol == ETH_P_IP) | 461 | if (eddp->skb->protocol == htons(ETH_P_IP)) |
462 | eddp->nh.ip4.h.id++; | 462 | eddp->nh.ip4.h.id = htons(ntohs(eddp->nh.ip4.h.id) + 1); |
463 | eddp->th.tcp.h.seq += data_len; | 463 | eddp->th.tcp.h.seq = htonl(ntohl(eddp->th.tcp.h.seq) + data_len); |
464 | } | 464 | } |
465 | } | 465 | } |
466 | 466 | ||
@@ -472,7 +472,7 @@ qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, | |||
472 | 472 | ||
473 | QETH_DBF_TEXT(trace, 5, "eddpficx"); | 473 | QETH_DBF_TEXT(trace, 5, "eddpficx"); |
474 | /* create our segmentation headers and copy original headers */ | 474 | /* create our segmentation headers and copy original headers */ |
475 | if (skb->protocol == ETH_P_IP) | 475 | if (skb->protocol == htons(ETH_P_IP)) |
476 | eddp = qeth_eddp_create_eddp_data(qhdr, (u8 *)skb->nh.iph, | 476 | eddp = qeth_eddp_create_eddp_data(qhdr, (u8 *)skb->nh.iph, |
477 | skb->nh.iph->ihl*4, | 477 | skb->nh.iph->ihl*4, |
478 | (u8 *)skb->h.th, skb->h.th->doff*4); | 478 | (u8 *)skb->h.th, skb->h.th->doff*4); |
@@ -490,7 +490,7 @@ qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, | |||
490 | memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN); | 490 | memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN); |
491 | #ifdef CONFIG_QETH_VLAN | 491 | #ifdef CONFIG_QETH_VLAN |
492 | if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) { | 492 | if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) { |
493 | eddp->vlan[0] = __constant_htons(skb->protocol); | 493 | eddp->vlan[0] = skb->protocol; |
494 | eddp->vlan[1] = htons(vlan_tx_tag_get(skb)); | 494 | eddp->vlan[1] = htons(vlan_tx_tag_get(skb)); |
495 | } | 495 | } |
496 | #endif /* CONFIG_QETH_VLAN */ | 496 | #endif /* CONFIG_QETH_VLAN */ |
@@ -588,11 +588,11 @@ qeth_eddp_create_context_tcp(struct qeth_card *card, struct sk_buff *skb, | |||
588 | struct qeth_eddp_context *ctx = NULL; | 588 | struct qeth_eddp_context *ctx = NULL; |
589 | 589 | ||
590 | QETH_DBF_TEXT(trace, 5, "creddpct"); | 590 | QETH_DBF_TEXT(trace, 5, "creddpct"); |
591 | if (skb->protocol == ETH_P_IP) | 591 | if (skb->protocol == htons(ETH_P_IP)) |
592 | ctx = qeth_eddp_create_context_generic(card, skb, | 592 | ctx = qeth_eddp_create_context_generic(card, skb, |
593 | sizeof(struct qeth_hdr) + skb->nh.iph->ihl*4 + | 593 | sizeof(struct qeth_hdr) + skb->nh.iph->ihl*4 + |
594 | skb->h.th->doff*4); | 594 | skb->h.th->doff*4); |
595 | else if (skb->protocol == ETH_P_IPV6) | 595 | else if (skb->protocol == htons(ETH_P_IPV6)) |
596 | ctx = qeth_eddp_create_context_generic(card, skb, | 596 | ctx = qeth_eddp_create_context_generic(card, skb, |
597 | sizeof(struct qeth_hdr) + sizeof(struct ipv6hdr) + | 597 | sizeof(struct qeth_hdr) + sizeof(struct ipv6hdr) + |
598 | skb->h.th->doff*4); | 598 | skb->h.th->doff*4); |
diff --git a/drivers/s390/net/qeth_eddp.h b/drivers/s390/net/qeth_eddp.h index cae9ba265056..103768d3bab2 100644 --- a/drivers/s390/net/qeth_eddp.h +++ b/drivers/s390/net/qeth_eddp.h | |||
@@ -54,7 +54,7 @@ qeth_eddp_check_buffers_for_context(struct qeth_qdio_out_q *, | |||
54 | struct qeth_eddp_data { | 54 | struct qeth_eddp_data { |
55 | struct qeth_hdr qh; | 55 | struct qeth_hdr qh; |
56 | struct ethhdr mac; | 56 | struct ethhdr mac; |
57 | u16 vlan[2]; | 57 | __be16 vlan[2]; |
58 | union { | 58 | union { |
59 | struct { | 59 | struct { |
60 | struct iphdr h; | 60 | struct iphdr h; |
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h index 8f882690994d..74c0eac083e4 100644 --- a/drivers/s390/scsi/zfcp_def.h +++ b/drivers/s390/scsi/zfcp_def.h | |||
@@ -107,6 +107,10 @@ zfcp_address_to_sg(void *address, struct scatterlist *list) | |||
107 | (ZFCP_MAX_SBALS_PER_REQ * ZFCP_MAX_SBALES_PER_SBAL - 2) | 107 | (ZFCP_MAX_SBALS_PER_REQ * ZFCP_MAX_SBALES_PER_SBAL - 2) |
108 | /* request ID + QTCB in SBALE 0 + 1 of first SBAL in chain */ | 108 | /* request ID + QTCB in SBALE 0 + 1 of first SBAL in chain */ |
109 | 109 | ||
110 | #define ZFCP_MAX_SECTORS (ZFCP_MAX_SBALES_PER_REQ * 8) | ||
111 | /* max. number of (data buffer) SBALEs in largest SBAL chain | ||
112 | multiplied with number of sectors per 4k block */ | ||
113 | |||
110 | /* FIXME(tune): free space should be one max. SBAL chain plus what? */ | 114 | /* FIXME(tune): free space should be one max. SBAL chain plus what? */ |
111 | #define ZFCP_QDIO_PCI_INTERVAL (QDIO_MAX_BUFFERS_PER_Q \ | 115 | #define ZFCP_QDIO_PCI_INTERVAL (QDIO_MAX_BUFFERS_PER_Q \ |
112 | - (ZFCP_MAX_SBALS_PER_REQ + 4)) | 116 | - (ZFCP_MAX_SBALS_PER_REQ + 4)) |
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c index 4d2bc7981324..452d96f92a14 100644 --- a/drivers/s390/scsi/zfcp_scsi.c +++ b/drivers/s390/scsi/zfcp_scsi.c | |||
@@ -58,6 +58,7 @@ struct zfcp_data zfcp_data = { | |||
58 | .cmd_per_lun = 1, | 58 | .cmd_per_lun = 1, |
59 | .use_clustering = 1, | 59 | .use_clustering = 1, |
60 | .sdev_attrs = zfcp_sysfs_sdev_attrs, | 60 | .sdev_attrs = zfcp_sysfs_sdev_attrs, |
61 | .max_sectors = ZFCP_MAX_SECTORS, | ||
61 | }, | 62 | }, |
62 | .driver_version = ZFCP_VERSION, | 63 | .driver_version = ZFCP_VERSION, |
63 | }; | 64 | }; |