diff options
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/char/raw3270.c | 1 | ||||
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 9 | ||||
-rw-r--r-- | drivers/s390/net/claw.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/ctcm_main.c | 6 | ||||
-rw-r--r-- | drivers/s390/net/netiucv.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/qeth_core.h | 7 | ||||
-rw-r--r-- | drivers/s390/net/qeth_core_main.c | 39 | ||||
-rw-r--r-- | drivers/s390/net/qeth_core_mpc.h | 17 | ||||
-rw-r--r-- | drivers/s390/net/qeth_core_sys.c | 38 | ||||
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 6 | ||||
-rw-r--r-- | drivers/s390/net/qeth_l3_main.c | 3 |
11 files changed, 119 insertions, 11 deletions
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c index 15b3459f8656..220acb4cbee5 100644 --- a/drivers/s390/char/raw3270.c +++ b/drivers/s390/char/raw3270.c | |||
@@ -633,7 +633,6 @@ raw3270_reset_device_cb(struct raw3270_request *rq, void *data) | |||
633 | } else | 633 | } else |
634 | raw3270_writesf_readpart(rp); | 634 | raw3270_writesf_readpart(rp); |
635 | memset(&rp->init_reset, 0, sizeof(rp->init_reset)); | 635 | memset(&rp->init_reset, 0, sizeof(rp->init_reset)); |
636 | memset(&rp->init_data, 0, sizeof(rp->init_data)); | ||
637 | } | 636 | } |
638 | 637 | ||
639 | static int | 638 | static int |
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 69ef4f8cfac8..4038437ff033 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
@@ -901,10 +901,15 @@ static int ap_device_probe(struct device *dev) | |||
901 | int rc; | 901 | int rc; |
902 | 902 | ||
903 | ap_dev->drv = ap_drv; | 903 | ap_dev->drv = ap_drv; |
904 | |||
905 | spin_lock_bh(&ap_device_list_lock); | ||
906 | list_add(&ap_dev->list, &ap_device_list); | ||
907 | spin_unlock_bh(&ap_device_list_lock); | ||
908 | |||
904 | rc = ap_drv->probe ? ap_drv->probe(ap_dev) : -ENODEV; | 909 | rc = ap_drv->probe ? ap_drv->probe(ap_dev) : -ENODEV; |
905 | if (!rc) { | 910 | if (rc) { |
906 | spin_lock_bh(&ap_device_list_lock); | 911 | spin_lock_bh(&ap_device_list_lock); |
907 | list_add(&ap_dev->list, &ap_device_list); | 912 | list_del_init(&ap_dev->list); |
908 | spin_unlock_bh(&ap_device_list_lock); | 913 | spin_unlock_bh(&ap_device_list_lock); |
909 | } | 914 | } |
910 | return rc; | 915 | return rc; |
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c index d837c3c5330f..fbc6701bef30 100644 --- a/drivers/s390/net/claw.c +++ b/drivers/s390/net/claw.c | |||
@@ -2915,7 +2915,7 @@ claw_new_device(struct ccwgroup_device *cgdev) | |||
2915 | "failed with error code %d\n", ret); | 2915 | "failed with error code %d\n", ret); |
2916 | goto out; | 2916 | goto out; |
2917 | } | 2917 | } |
2918 | dev = alloc_netdev(0,"claw%d",claw_init_netdevice); | 2918 | dev = alloc_netdev(0, "claw%d", NET_NAME_UNKNOWN, claw_init_netdevice); |
2919 | if (!dev) { | 2919 | if (!dev) { |
2920 | dev_warn(&cgdev->dev, | 2920 | dev_warn(&cgdev->dev, |
2921 | "Activating the CLAW device failed\n"); | 2921 | "Activating the CLAW device failed\n"); |
diff --git a/drivers/s390/net/ctcm_main.c b/drivers/s390/net/ctcm_main.c index 03b6ad035577..e056dd4fe44d 100644 --- a/drivers/s390/net/ctcm_main.c +++ b/drivers/s390/net/ctcm_main.c | |||
@@ -1137,9 +1137,11 @@ static struct net_device *ctcm_init_netdevice(struct ctcm_priv *priv) | |||
1137 | return NULL; | 1137 | return NULL; |
1138 | 1138 | ||
1139 | if (IS_MPC(priv)) | 1139 | if (IS_MPC(priv)) |
1140 | dev = alloc_netdev(0, MPC_DEVICE_GENE, ctcm_dev_setup); | 1140 | dev = alloc_netdev(0, MPC_DEVICE_GENE, NET_NAME_UNKNOWN, |
1141 | ctcm_dev_setup); | ||
1141 | else | 1142 | else |
1142 | dev = alloc_netdev(0, CTC_DEVICE_GENE, ctcm_dev_setup); | 1143 | dev = alloc_netdev(0, CTC_DEVICE_GENE, NET_NAME_UNKNOWN, |
1144 | ctcm_dev_setup); | ||
1143 | 1145 | ||
1144 | if (!dev) { | 1146 | if (!dev) { |
1145 | CTCM_DBF_TEXT_(ERROR, CTC_DBF_CRIT, | 1147 | CTCM_DBF_TEXT_(ERROR, CTC_DBF_CRIT, |
diff --git a/drivers/s390/net/netiucv.c b/drivers/s390/net/netiucv.c index ce16d1bdb20a..0a87809c8af7 100644 --- a/drivers/s390/net/netiucv.c +++ b/drivers/s390/net/netiucv.c | |||
@@ -2015,7 +2015,7 @@ static struct net_device *netiucv_init_netdevice(char *username, char *userdata) | |||
2015 | struct net_device *dev; | 2015 | struct net_device *dev; |
2016 | 2016 | ||
2017 | dev = alloc_netdev(sizeof(struct netiucv_priv), "iucv%d", | 2017 | dev = alloc_netdev(sizeof(struct netiucv_priv), "iucv%d", |
2018 | netiucv_setup_netdevice); | 2018 | NET_NAME_UNKNOWN, netiucv_setup_netdevice); |
2019 | if (!dev) | 2019 | if (!dev) |
2020 | return NULL; | 2020 | return NULL; |
2021 | rtnl_lock(); | 2021 | rtnl_lock(); |
diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h index a2088af51cc5..bbafbd0e017a 100644 --- a/drivers/s390/net/qeth_core.h +++ b/drivers/s390/net/qeth_core.h | |||
@@ -766,6 +766,11 @@ struct carrier_info { | |||
766 | __u32 port_speed; | 766 | __u32 port_speed; |
767 | }; | 767 | }; |
768 | 768 | ||
769 | struct qeth_switch_info { | ||
770 | __u32 capabilities; | ||
771 | __u32 settings; | ||
772 | }; | ||
773 | |||
769 | #define QETH_NAPI_WEIGHT NAPI_POLL_WEIGHT | 774 | #define QETH_NAPI_WEIGHT NAPI_POLL_WEIGHT |
770 | 775 | ||
771 | struct qeth_card { | 776 | struct qeth_card { |
@@ -946,6 +951,8 @@ struct qeth_cmd_buffer *qeth_wait_for_buffer(struct qeth_channel *); | |||
946 | int qeth_mdio_read(struct net_device *, int, int); | 951 | int qeth_mdio_read(struct net_device *, int, int); |
947 | int qeth_snmp_command(struct qeth_card *, char __user *); | 952 | int qeth_snmp_command(struct qeth_card *, char __user *); |
948 | int qeth_query_oat_command(struct qeth_card *, char __user *); | 953 | int qeth_query_oat_command(struct qeth_card *, char __user *); |
954 | int qeth_query_switch_attributes(struct qeth_card *card, | ||
955 | struct qeth_switch_info *sw_info); | ||
949 | int qeth_query_card_info(struct qeth_card *card, | 956 | int qeth_query_card_info(struct qeth_card *card, |
950 | struct carrier_info *carrier_info); | 957 | struct carrier_info *carrier_info); |
951 | int qeth_send_control_data(struct qeth_card *, int, struct qeth_cmd_buffer *, | 958 | int qeth_send_control_data(struct qeth_card *, int, struct qeth_cmd_buffer *, |
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index f54bec54d677..71bfacfc097e 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c | |||
@@ -3037,6 +3037,45 @@ int qeth_query_ipassists(struct qeth_card *card, enum qeth_prot_versions prot) | |||
3037 | } | 3037 | } |
3038 | EXPORT_SYMBOL_GPL(qeth_query_ipassists); | 3038 | EXPORT_SYMBOL_GPL(qeth_query_ipassists); |
3039 | 3039 | ||
3040 | static int qeth_query_switch_attributes_cb(struct qeth_card *card, | ||
3041 | struct qeth_reply *reply, unsigned long data) | ||
3042 | { | ||
3043 | struct qeth_ipa_cmd *cmd; | ||
3044 | struct qeth_switch_info *sw_info; | ||
3045 | struct qeth_query_switch_attributes *attrs; | ||
3046 | |||
3047 | QETH_CARD_TEXT(card, 2, "qswiatcb"); | ||
3048 | cmd = (struct qeth_ipa_cmd *) data; | ||
3049 | sw_info = (struct qeth_switch_info *)reply->param; | ||
3050 | if (cmd->data.setadapterparms.hdr.return_code == 0) { | ||
3051 | attrs = &cmd->data.setadapterparms.data.query_switch_attributes; | ||
3052 | sw_info->capabilities = attrs->capabilities; | ||
3053 | sw_info->settings = attrs->settings; | ||
3054 | QETH_CARD_TEXT_(card, 2, "%04x%04x", sw_info->capabilities, | ||
3055 | sw_info->settings); | ||
3056 | } | ||
3057 | qeth_default_setadapterparms_cb(card, reply, (unsigned long) cmd); | ||
3058 | |||
3059 | return 0; | ||
3060 | } | ||
3061 | |||
3062 | int qeth_query_switch_attributes(struct qeth_card *card, | ||
3063 | struct qeth_switch_info *sw_info) | ||
3064 | { | ||
3065 | struct qeth_cmd_buffer *iob; | ||
3066 | |||
3067 | QETH_CARD_TEXT(card, 2, "qswiattr"); | ||
3068 | if (!qeth_adp_supported(card, IPA_SETADP_QUERY_SWITCH_ATTRIBUTES)) | ||
3069 | return -EOPNOTSUPP; | ||
3070 | if (!netif_carrier_ok(card->dev)) | ||
3071 | return -ENOMEDIUM; | ||
3072 | iob = qeth_get_adapter_cmd(card, IPA_SETADP_QUERY_SWITCH_ATTRIBUTES, | ||
3073 | sizeof(struct qeth_ipacmd_setadpparms_hdr)); | ||
3074 | return qeth_send_ipa_cmd(card, iob, | ||
3075 | qeth_query_switch_attributes_cb, sw_info); | ||
3076 | } | ||
3077 | EXPORT_SYMBOL_GPL(qeth_query_switch_attributes); | ||
3078 | |||
3040 | static int qeth_query_setdiagass_cb(struct qeth_card *card, | 3079 | static int qeth_query_setdiagass_cb(struct qeth_card *card, |
3041 | struct qeth_reply *reply, unsigned long data) | 3080 | struct qeth_reply *reply, unsigned long data) |
3042 | { | 3081 | { |
diff --git a/drivers/s390/net/qeth_core_mpc.h b/drivers/s390/net/qeth_core_mpc.h index cf6a90ed42ae..1558be1af72d 100644 --- a/drivers/s390/net/qeth_core_mpc.h +++ b/drivers/s390/net/qeth_core_mpc.h | |||
@@ -242,6 +242,7 @@ enum qeth_ipa_setadp_cmd { | |||
242 | IPA_SETADP_SET_DIAG_ASSIST = 0x00002000L, | 242 | IPA_SETADP_SET_DIAG_ASSIST = 0x00002000L, |
243 | IPA_SETADP_SET_ACCESS_CONTROL = 0x00010000L, | 243 | IPA_SETADP_SET_ACCESS_CONTROL = 0x00010000L, |
244 | IPA_SETADP_QUERY_OAT = 0x00080000L, | 244 | IPA_SETADP_QUERY_OAT = 0x00080000L, |
245 | IPA_SETADP_QUERY_SWITCH_ATTRIBUTES = 0x00100000L, | ||
245 | }; | 246 | }; |
246 | enum qeth_ipa_mac_ops { | 247 | enum qeth_ipa_mac_ops { |
247 | CHANGE_ADDR_READ_MAC = 0, | 248 | CHANGE_ADDR_READ_MAC = 0, |
@@ -431,6 +432,21 @@ struct qeth_query_card_info { | |||
431 | __u32 reserved2; | 432 | __u32 reserved2; |
432 | }; | 433 | }; |
433 | 434 | ||
435 | #define QETH_SWITCH_FORW_802_1 0x00000001 | ||
436 | #define QETH_SWITCH_FORW_REFL_RELAY 0x00000002 | ||
437 | #define QETH_SWITCH_CAP_RTE 0x00000004 | ||
438 | #define QETH_SWITCH_CAP_ECP 0x00000008 | ||
439 | #define QETH_SWITCH_CAP_VDP 0x00000010 | ||
440 | |||
441 | struct qeth_query_switch_attributes { | ||
442 | __u8 version; | ||
443 | __u8 reserved1; | ||
444 | __u16 reserved2; | ||
445 | __u32 capabilities; | ||
446 | __u32 settings; | ||
447 | __u8 reserved3[8]; | ||
448 | }; | ||
449 | |||
434 | struct qeth_ipacmd_setadpparms_hdr { | 450 | struct qeth_ipacmd_setadpparms_hdr { |
435 | __u32 supp_hw_cmds; | 451 | __u32 supp_hw_cmds; |
436 | __u32 reserved1; | 452 | __u32 reserved1; |
@@ -452,6 +468,7 @@ struct qeth_ipacmd_setadpparms { | |||
452 | struct qeth_set_access_ctrl set_access_ctrl; | 468 | struct qeth_set_access_ctrl set_access_ctrl; |
453 | struct qeth_query_oat query_oat; | 469 | struct qeth_query_oat query_oat; |
454 | struct qeth_query_card_info card_info; | 470 | struct qeth_query_card_info card_info; |
471 | struct qeth_query_switch_attributes query_switch_attributes; | ||
455 | __u32 mode; | 472 | __u32 mode; |
456 | } data; | 473 | } data; |
457 | } __attribute__ ((packed)); | 474 | } __attribute__ ((packed)); |
diff --git a/drivers/s390/net/qeth_core_sys.c b/drivers/s390/net/qeth_core_sys.c index 8a25a2be9890..15523f0e4c03 100644 --- a/drivers/s390/net/qeth_core_sys.c +++ b/drivers/s390/net/qeth_core_sys.c | |||
@@ -543,7 +543,42 @@ out: | |||
543 | } | 543 | } |
544 | 544 | ||
545 | static DEVICE_ATTR(isolation, 0644, qeth_dev_isolation_show, | 545 | static DEVICE_ATTR(isolation, 0644, qeth_dev_isolation_show, |
546 | qeth_dev_isolation_store); | 546 | qeth_dev_isolation_store); |
547 | |||
548 | static ssize_t qeth_dev_switch_attrs_show(struct device *dev, | ||
549 | struct device_attribute *attr, char *buf) | ||
550 | { | ||
551 | struct qeth_card *card = dev_get_drvdata(dev); | ||
552 | struct qeth_switch_info sw_info; | ||
553 | int rc = 0; | ||
554 | |||
555 | if (!card) | ||
556 | return -EINVAL; | ||
557 | |||
558 | if (card->state != CARD_STATE_SOFTSETUP && card->state != CARD_STATE_UP) | ||
559 | return sprintf(buf, "n/a\n"); | ||
560 | |||
561 | rc = qeth_query_switch_attributes(card, &sw_info); | ||
562 | if (rc) | ||
563 | return rc; | ||
564 | |||
565 | if (!sw_info.capabilities) | ||
566 | rc = sprintf(buf, "unknown"); | ||
567 | |||
568 | if (sw_info.capabilities & QETH_SWITCH_FORW_802_1) | ||
569 | rc = sprintf(buf, (sw_info.settings & QETH_SWITCH_FORW_802_1 ? | ||
570 | "[802.1]" : "802.1")); | ||
571 | if (sw_info.capabilities & QETH_SWITCH_FORW_REFL_RELAY) | ||
572 | rc += sprintf(buf + rc, | ||
573 | (sw_info.settings & QETH_SWITCH_FORW_REFL_RELAY ? | ||
574 | " [rr]" : " rr")); | ||
575 | rc += sprintf(buf + rc, "\n"); | ||
576 | |||
577 | return rc; | ||
578 | } | ||
579 | |||
580 | static DEVICE_ATTR(switch_attrs, 0444, | ||
581 | qeth_dev_switch_attrs_show, NULL); | ||
547 | 582 | ||
548 | static ssize_t qeth_hw_trap_show(struct device *dev, | 583 | static ssize_t qeth_hw_trap_show(struct device *dev, |
549 | struct device_attribute *attr, char *buf) | 584 | struct device_attribute *attr, char *buf) |
@@ -728,6 +763,7 @@ static struct attribute *qeth_device_attrs[] = { | |||
728 | &dev_attr_layer2.attr, | 763 | &dev_attr_layer2.attr, |
729 | &dev_attr_isolation.attr, | 764 | &dev_attr_isolation.attr, |
730 | &dev_attr_hw_trap.attr, | 765 | &dev_attr_hw_trap.attr, |
766 | &dev_attr_switch_attrs.attr, | ||
731 | NULL, | 767 | NULL, |
732 | }; | 768 | }; |
733 | static struct attribute_group qeth_device_attr_group = { | 769 | static struct attribute_group qeth_device_attr_group = { |
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 5ef5b4f45758..c2679bfe7f66 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -952,10 +952,12 @@ static int qeth_l2_setup_netdev(struct qeth_card *card) | |||
952 | { | 952 | { |
953 | switch (card->info.type) { | 953 | switch (card->info.type) { |
954 | case QETH_CARD_TYPE_IQD: | 954 | case QETH_CARD_TYPE_IQD: |
955 | card->dev = alloc_netdev(0, "hsi%d", ether_setup); | 955 | card->dev = alloc_netdev(0, "hsi%d", NET_NAME_UNKNOWN, |
956 | ether_setup); | ||
956 | break; | 957 | break; |
957 | case QETH_CARD_TYPE_OSN: | 958 | case QETH_CARD_TYPE_OSN: |
958 | card->dev = alloc_netdev(0, "osn%d", ether_setup); | 959 | card->dev = alloc_netdev(0, "osn%d", NET_NAME_UNKNOWN, |
960 | ether_setup); | ||
959 | card->dev->flags |= IFF_NOARP; | 961 | card->dev->flags |= IFF_NOARP; |
960 | break; | 962 | break; |
961 | default: | 963 | default: |
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c index 14e0b5810e8c..f8427a2c4840 100644 --- a/drivers/s390/net/qeth_l3_main.c +++ b/drivers/s390/net/qeth_l3_main.c | |||
@@ -3287,7 +3287,8 @@ static int qeth_l3_setup_netdev(struct qeth_card *card) | |||
3287 | } | 3287 | } |
3288 | } | 3288 | } |
3289 | } else if (card->info.type == QETH_CARD_TYPE_IQD) { | 3289 | } else if (card->info.type == QETH_CARD_TYPE_IQD) { |
3290 | card->dev = alloc_netdev(0, "hsi%d", ether_setup); | 3290 | card->dev = alloc_netdev(0, "hsi%d", NET_NAME_UNKNOWN, |
3291 | ether_setup); | ||
3291 | if (!card->dev) | 3292 | if (!card->dev) |
3292 | return -ENODEV; | 3293 | return -ENODEV; |
3293 | card->dev->flags |= IFF_NOARP; | 3294 | card->dev->flags |= IFF_NOARP; |