diff options
author | Ursula Braun <ursula.braun@de.ibm.com> | 2010-05-16 17:15:14 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-18 01:42:55 -0400 |
commit | 5113fec0984276836cb6f0677f7cb53586ec3451 (patch) | |
tree | bfce3e11a7f16c2b393c4e663414248e18ecb4b9 /drivers/s390/net/qeth_l2_main.c | |
parent | ae57b20a0a1d3aa6cc35b51355949177de94aece (diff) |
qeth: support the new OSA CHPID types OSX and OSM
The qeth driver is enabled to support the new OSA CHPID types OSX
and OSM.
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net/qeth_l2_main.c')
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index b447e1998c6b..d43f57a4ac66 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -56,7 +56,9 @@ static int qeth_l2_do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | |||
56 | rc = qeth_snmp_command(card, rq->ifr_ifru.ifru_data); | 56 | rc = qeth_snmp_command(card, rq->ifr_ifru.ifru_data); |
57 | break; | 57 | break; |
58 | case SIOC_QETH_GET_CARD_TYPE: | 58 | case SIOC_QETH_GET_CARD_TYPE: |
59 | if ((card->info.type == QETH_CARD_TYPE_OSAE) && | 59 | if ((card->info.type == QETH_CARD_TYPE_OSD || |
60 | card->info.type == QETH_CARD_TYPE_OSM || | ||
61 | card->info.type == QETH_CARD_TYPE_OSX) && | ||
60 | !card->info.guestlan) | 62 | !card->info.guestlan) |
61 | return 1; | 63 | return 1; |
62 | return 0; | 64 | return 0; |
@@ -309,6 +311,10 @@ static void qeth_l2_vlan_rx_add_vid(struct net_device *dev, unsigned short vid) | |||
309 | struct qeth_vlan_vid *id; | 311 | struct qeth_vlan_vid *id; |
310 | 312 | ||
311 | QETH_DBF_TEXT_(TRACE, 4, "aid:%d", vid); | 313 | QETH_DBF_TEXT_(TRACE, 4, "aid:%d", vid); |
314 | if (card->info.type == QETH_CARD_TYPE_OSM) { | ||
315 | QETH_DBF_TEXT(TRACE, 3, "aidOSM"); | ||
316 | return; | ||
317 | } | ||
312 | if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { | 318 | if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { |
313 | QETH_DBF_TEXT(TRACE, 3, "aidREC"); | 319 | QETH_DBF_TEXT(TRACE, 3, "aidREC"); |
314 | return; | 320 | return; |
@@ -329,6 +335,10 @@ static void qeth_l2_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) | |||
329 | struct qeth_card *card = dev->ml_priv; | 335 | struct qeth_card *card = dev->ml_priv; |
330 | 336 | ||
331 | QETH_DBF_TEXT_(TRACE, 4, "kid:%d", vid); | 337 | QETH_DBF_TEXT_(TRACE, 4, "kid:%d", vid); |
338 | if (card->info.type == QETH_CARD_TYPE_OSM) { | ||
339 | QETH_DBF_TEXT(TRACE, 3, "kidOSM"); | ||
340 | return; | ||
341 | } | ||
332 | if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { | 342 | if (qeth_wait_for_threads(card, QETH_RECOVER_THREAD)) { |
333 | QETH_DBF_TEXT(TRACE, 3, "kidREC"); | 343 | QETH_DBF_TEXT(TRACE, 3, "kidREC"); |
334 | return; | 344 | return; |
@@ -559,8 +569,10 @@ static int qeth_l2_request_initial_mac(struct qeth_card *card) | |||
559 | "device %s: x%x\n", CARD_BUS_ID(card), rc); | 569 | "device %s: x%x\n", CARD_BUS_ID(card), rc); |
560 | } | 570 | } |
561 | 571 | ||
562 | if ((card->info.type == QETH_CARD_TYPE_IQD) || | 572 | if (card->info.type == QETH_CARD_TYPE_IQD || |
563 | (card->info.guestlan)) { | 573 | card->info.type == QETH_CARD_TYPE_OSM || |
574 | card->info.type == QETH_CARD_TYPE_OSX || | ||
575 | card->info.guestlan) { | ||
564 | rc = qeth_setadpparms_change_macaddr(card); | 576 | rc = qeth_setadpparms_change_macaddr(card); |
565 | if (rc) { | 577 | if (rc) { |
566 | QETH_DBF_MESSAGE(2, "couldn't get MAC address on " | 578 | QETH_DBF_MESSAGE(2, "couldn't get MAC address on " |
@@ -589,8 +601,10 @@ static int qeth_l2_set_mac_address(struct net_device *dev, void *p) | |||
589 | return -EOPNOTSUPP; | 601 | return -EOPNOTSUPP; |
590 | } | 602 | } |
591 | 603 | ||
592 | if (card->info.type == QETH_CARD_TYPE_OSN) { | 604 | if (card->info.type == QETH_CARD_TYPE_OSN || |
593 | QETH_DBF_TEXT(TRACE, 3, "setmcOSN"); | 605 | card->info.type == QETH_CARD_TYPE_OSM || |
606 | card->info.type == QETH_CARD_TYPE_OSX) { | ||
607 | QETH_DBF_TEXT(TRACE, 3, "setmcTYP"); | ||
594 | return -EOPNOTSUPP; | 608 | return -EOPNOTSUPP; |
595 | } | 609 | } |
596 | QETH_DBF_TEXT_(TRACE, 3, "%s", CARD_BUS_ID(card)); | 610 | QETH_DBF_TEXT_(TRACE, 3, "%s", CARD_BUS_ID(card)); |
@@ -885,9 +899,6 @@ static const struct net_device_ops qeth_l2_netdev_ops = { | |||
885 | static int qeth_l2_setup_netdev(struct qeth_card *card) | 899 | static int qeth_l2_setup_netdev(struct qeth_card *card) |
886 | { | 900 | { |
887 | switch (card->info.type) { | 901 | switch (card->info.type) { |
888 | case QETH_CARD_TYPE_OSAE: | ||
889 | card->dev = alloc_etherdev(0); | ||
890 | break; | ||
891 | case QETH_CARD_TYPE_IQD: | 902 | case QETH_CARD_TYPE_IQD: |
892 | card->dev = alloc_netdev(0, "hsi%d", ether_setup); | 903 | card->dev = alloc_netdev(0, "hsi%d", ether_setup); |
893 | break; | 904 | break; |
@@ -964,11 +975,14 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
964 | } else | 975 | } else |
965 | card->lan_online = 1; | 976 | card->lan_online = 1; |
966 | 977 | ||
967 | if (card->info.type != QETH_CARD_TYPE_OSN) { | 978 | if ((card->info.type == QETH_CARD_TYPE_OSD) || |
979 | (card->info.type == QETH_CARD_TYPE_OSX)) | ||
968 | /* configure isolation level */ | 980 | /* configure isolation level */ |
969 | qeth_set_access_ctrl_online(card); | 981 | qeth_set_access_ctrl_online(card); |
982 | |||
983 | if (card->info.type != QETH_CARD_TYPE_OSN && | ||
984 | card->info.type != QETH_CARD_TYPE_OSM) | ||
970 | qeth_l2_process_vlans(card, 0); | 985 | qeth_l2_process_vlans(card, 0); |
971 | } | ||
972 | 986 | ||
973 | netif_tx_disable(card->dev); | 987 | netif_tx_disable(card->dev); |
974 | 988 | ||