diff options
Diffstat (limited to 'drivers/s390/net/qeth_main.c')
-rw-r--r-- | drivers/s390/net/qeth_main.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c index 8e8963f15731..e1327b8fce00 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c | |||
@@ -4420,8 +4420,10 @@ qeth_send_packet(struct qeth_card *card, struct sk_buff *skb) | |||
4420 | enum qeth_large_send_types large_send = QETH_LARGE_SEND_NO; | 4420 | enum qeth_large_send_types large_send = QETH_LARGE_SEND_NO; |
4421 | struct qeth_eddp_context *ctx = NULL; | 4421 | struct qeth_eddp_context *ctx = NULL; |
4422 | int tx_bytes = skb->len; | 4422 | int tx_bytes = skb->len; |
4423 | #ifdef CONFIG_QETH_PERF_STATS | ||
4423 | unsigned short nr_frags = skb_shinfo(skb)->nr_frags; | 4424 | unsigned short nr_frags = skb_shinfo(skb)->nr_frags; |
4424 | unsigned short tso_size = skb_shinfo(skb)->gso_size; | 4425 | unsigned short tso_size = skb_shinfo(skb)->gso_size; |
4426 | #endif | ||
4425 | int rc; | 4427 | int rc; |
4426 | 4428 | ||
4427 | QETH_DBF_TEXT(trace, 6, "sendpkt"); | 4429 | QETH_DBF_TEXT(trace, 6, "sendpkt"); |
@@ -4457,7 +4459,7 @@ qeth_send_packet(struct qeth_card *card, struct sk_buff *skb) | |||
4457 | queue = card->qdio.out_qs | 4459 | queue = card->qdio.out_qs |
4458 | [qeth_get_priority_queue(card, skb, ipv, cast_type)]; | 4460 | [qeth_get_priority_queue(card, skb, ipv, cast_type)]; |
4459 | 4461 | ||
4460 | if (skb_shinfo(skb)->gso_size) | 4462 | if (skb_is_gso(skb)) |
4461 | large_send = card->options.large_send; | 4463 | large_send = card->options.large_send; |
4462 | 4464 | ||
4463 | /*are we able to do TSO ? If so ,prepare and send it from here */ | 4465 | /*are we able to do TSO ? If so ,prepare and send it from here */ |
@@ -4802,7 +4804,7 @@ static struct qeth_cmd_buffer * | |||
4802 | qeth_get_setassparms_cmd(struct qeth_card *, enum qeth_ipa_funcs, | 4804 | qeth_get_setassparms_cmd(struct qeth_card *, enum qeth_ipa_funcs, |
4803 | __u16, __u16, enum qeth_prot_versions); | 4805 | __u16, __u16, enum qeth_prot_versions); |
4804 | static int | 4806 | static int |
4805 | qeth_arp_query(struct qeth_card *card, char *udata) | 4807 | qeth_arp_query(struct qeth_card *card, char __user *udata) |
4806 | { | 4808 | { |
4807 | struct qeth_cmd_buffer *iob; | 4809 | struct qeth_cmd_buffer *iob; |
4808 | struct qeth_arp_query_info qinfo = {0, }; | 4810 | struct qeth_arp_query_info qinfo = {0, }; |
@@ -4935,7 +4937,7 @@ qeth_get_adapter_cmd(struct qeth_card *card, __u32 command, __u32 cmdlen) | |||
4935 | * function to send SNMP commands to OSA-E card | 4937 | * function to send SNMP commands to OSA-E card |
4936 | */ | 4938 | */ |
4937 | static int | 4939 | static int |
4938 | qeth_snmp_command(struct qeth_card *card, char *udata) | 4940 | qeth_snmp_command(struct qeth_card *card, char __user *udata) |
4939 | { | 4941 | { |
4940 | struct qeth_cmd_buffer *iob; | 4942 | struct qeth_cmd_buffer *iob; |
4941 | struct qeth_ipa_cmd *cmd; | 4943 | struct qeth_ipa_cmd *cmd; |
@@ -7907,9 +7909,9 @@ qeth_set_online(struct ccwgroup_device *gdev) | |||
7907 | } | 7909 | } |
7908 | 7910 | ||
7909 | static struct ccw_device_id qeth_ids[] = { | 7911 | static struct ccw_device_id qeth_ids[] = { |
7910 | {CCW_DEVICE(0x1731, 0x01), driver_info:QETH_CARD_TYPE_OSAE}, | 7912 | {CCW_DEVICE(0x1731, 0x01), .driver_info = QETH_CARD_TYPE_OSAE}, |
7911 | {CCW_DEVICE(0x1731, 0x05), driver_info:QETH_CARD_TYPE_IQD}, | 7913 | {CCW_DEVICE(0x1731, 0x05), .driver_info = QETH_CARD_TYPE_IQD}, |
7912 | {CCW_DEVICE(0x1731, 0x06), driver_info:QETH_CARD_TYPE_OSN}, | 7914 | {CCW_DEVICE(0x1731, 0x06), .driver_info = QETH_CARD_TYPE_OSN}, |
7913 | {}, | 7915 | {}, |
7914 | }; | 7916 | }; |
7915 | MODULE_DEVICE_TABLE(ccw, qeth_ids); | 7917 | MODULE_DEVICE_TABLE(ccw, qeth_ids); |
@@ -8378,7 +8380,7 @@ out: | |||
8378 | 8380 | ||
8379 | static struct notifier_block qeth_ip_notifier = { | 8381 | static struct notifier_block qeth_ip_notifier = { |
8380 | qeth_ip_event, | 8382 | qeth_ip_event, |
8381 | 0 | 8383 | NULL, |
8382 | }; | 8384 | }; |
8383 | 8385 | ||
8384 | #ifdef CONFIG_QETH_IPV6 | 8386 | #ifdef CONFIG_QETH_IPV6 |
@@ -8431,7 +8433,7 @@ out: | |||
8431 | 8433 | ||
8432 | static struct notifier_block qeth_ip6_notifier = { | 8434 | static struct notifier_block qeth_ip6_notifier = { |
8433 | qeth_ip6_event, | 8435 | qeth_ip6_event, |
8434 | 0 | 8436 | NULL, |
8435 | }; | 8437 | }; |
8436 | #endif | 8438 | #endif |
8437 | 8439 | ||
@@ -8449,16 +8451,17 @@ __qeth_reboot_event_card(struct device *dev, void *data) | |||
8449 | static int | 8451 | static int |
8450 | qeth_reboot_event(struct notifier_block *this, unsigned long event, void *ptr) | 8452 | qeth_reboot_event(struct notifier_block *this, unsigned long event, void *ptr) |
8451 | { | 8453 | { |
8454 | int ret; | ||
8452 | 8455 | ||
8453 | driver_for_each_device(&qeth_ccwgroup_driver.driver, NULL, NULL, | 8456 | ret = driver_for_each_device(&qeth_ccwgroup_driver.driver, NULL, NULL, |
8454 | __qeth_reboot_event_card); | 8457 | __qeth_reboot_event_card); |
8455 | return NOTIFY_DONE; | 8458 | return ret ? NOTIFY_BAD : NOTIFY_DONE; |
8456 | } | 8459 | } |
8457 | 8460 | ||
8458 | 8461 | ||
8459 | static struct notifier_block qeth_reboot_notifier = { | 8462 | static struct notifier_block qeth_reboot_notifier = { |
8460 | qeth_reboot_event, | 8463 | qeth_reboot_event, |
8461 | 0 | 8464 | NULL, |
8462 | }; | 8465 | }; |
8463 | 8466 | ||
8464 | static int | 8467 | static int |
@@ -8507,9 +8510,9 @@ static int | |||
8507 | qeth_ipv6_init(void) | 8510 | qeth_ipv6_init(void) |
8508 | { | 8511 | { |
8509 | qeth_old_arp_constructor = arp_tbl.constructor; | 8512 | qeth_old_arp_constructor = arp_tbl.constructor; |
8510 | write_lock(&arp_tbl.lock); | 8513 | write_lock_bh(&arp_tbl.lock); |
8511 | arp_tbl.constructor = qeth_arp_constructor; | 8514 | arp_tbl.constructor = qeth_arp_constructor; |
8512 | write_unlock(&arp_tbl.lock); | 8515 | write_unlock_bh(&arp_tbl.lock); |
8513 | 8516 | ||
8514 | arp_direct_ops = (struct neigh_ops*) | 8517 | arp_direct_ops = (struct neigh_ops*) |
8515 | kmalloc(sizeof(struct neigh_ops), GFP_KERNEL); | 8518 | kmalloc(sizeof(struct neigh_ops), GFP_KERNEL); |
@@ -8525,9 +8528,9 @@ qeth_ipv6_init(void) | |||
8525 | static void | 8528 | static void |
8526 | qeth_ipv6_uninit(void) | 8529 | qeth_ipv6_uninit(void) |
8527 | { | 8530 | { |
8528 | write_lock(&arp_tbl.lock); | 8531 | write_lock_bh(&arp_tbl.lock); |
8529 | arp_tbl.constructor = qeth_old_arp_constructor; | 8532 | arp_tbl.constructor = qeth_old_arp_constructor; |
8530 | write_unlock(&arp_tbl.lock); | 8533 | write_unlock_bh(&arp_tbl.lock); |
8531 | kfree(arp_direct_ops); | 8534 | kfree(arp_direct_ops); |
8532 | } | 8535 | } |
8533 | #endif /* CONFIG_QETH_IPV6 */ | 8536 | #endif /* CONFIG_QETH_IPV6 */ |