aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/net/qeth_l2_main.c
diff options
context:
space:
mode:
authorUrsula Braun <ursula.braun@de.ibm.com>2010-05-16 17:15:14 -0400
committerDavid S. Miller <davem@davemloft.net>2010-05-18 01:42:55 -0400
commit5113fec0984276836cb6f0677f7cb53586ec3451 (patch)
treebfce3e11a7f16c2b393c4e663414248e18ecb4b9 /drivers/s390/net/qeth_l2_main.c
parentae57b20a0a1d3aa6cc35b51355949177de94aece (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.c34
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 = {
885static int qeth_l2_setup_netdev(struct qeth_card *card) 899static 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