aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/net/qeth_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/net/qeth_main.c')
-rw-r--r--drivers/s390/net/qeth_main.c35
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 *
4802qeth_get_setassparms_cmd(struct qeth_card *, enum qeth_ipa_funcs, 4804qeth_get_setassparms_cmd(struct qeth_card *, enum qeth_ipa_funcs,
4803 __u16, __u16, enum qeth_prot_versions); 4805 __u16, __u16, enum qeth_prot_versions);
4804static int 4806static int
4805qeth_arp_query(struct qeth_card *card, char *udata) 4807qeth_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 */
4937static int 4939static int
4938qeth_snmp_command(struct qeth_card *card, char *udata) 4940qeth_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
7909static struct ccw_device_id qeth_ids[] = { 7911static 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};
7915MODULE_DEVICE_TABLE(ccw, qeth_ids); 7917MODULE_DEVICE_TABLE(ccw, qeth_ids);
@@ -8378,7 +8380,7 @@ out:
8378 8380
8379static struct notifier_block qeth_ip_notifier = { 8381static 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
8432static struct notifier_block qeth_ip6_notifier = { 8434static 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)
8449static int 8451static int
8450qeth_reboot_event(struct notifier_block *this, unsigned long event, void *ptr) 8452qeth_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
8459static struct notifier_block qeth_reboot_notifier = { 8462static struct notifier_block qeth_reboot_notifier = {
8460 qeth_reboot_event, 8463 qeth_reboot_event,
8461 0 8464 NULL,
8462}; 8465};
8463 8466
8464static int 8467static int
@@ -8507,9 +8510,9 @@ static int
8507qeth_ipv6_init(void) 8510qeth_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)
8525static void 8528static void
8526qeth_ipv6_uninit(void) 8529qeth_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 */