diff options
Diffstat (limited to 'drivers/s390/net/qeth_l2_main.c')
| -rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 39 | 
1 files changed, 22 insertions, 17 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 23aaf373f631..2914a1a69f83 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c @@ -146,11 +146,11 @@ static int qeth_l2_write_mac(struct qeth_card *card, u8 *mac)  	QETH_CARD_TEXT(card, 2, "L2Wmac");  	rc = qeth_l2_send_setdelmac(card, mac, cmd);  	if (rc == -EEXIST) -		QETH_DBF_MESSAGE(2, "MAC %pM already registered on %s\n", -				 mac, QETH_CARD_IFNAME(card)); +		QETH_DBF_MESSAGE(2, "MAC already registered on device %x\n", +				 CARD_DEVID(card));  	else if (rc) -		QETH_DBF_MESSAGE(2, "Failed to register MAC %pM on %s: %d\n", -				 mac, QETH_CARD_IFNAME(card), rc); +		QETH_DBF_MESSAGE(2, "Failed to register MAC on device %x: %d\n", +				 CARD_DEVID(card), rc);  	return rc;  } @@ -163,8 +163,8 @@ static int qeth_l2_remove_mac(struct qeth_card *card, u8 *mac)  	QETH_CARD_TEXT(card, 2, "L2Rmac");  	rc = qeth_l2_send_setdelmac(card, mac, cmd);  	if (rc) -		QETH_DBF_MESSAGE(2, "Failed to delete MAC %pM on %s: %d\n", -				 mac, QETH_CARD_IFNAME(card), rc); +		QETH_DBF_MESSAGE(2, "Failed to delete MAC on device %u: %d\n", +				 CARD_DEVID(card), rc);  	return rc;  } @@ -260,9 +260,9 @@ static int qeth_l2_send_setdelvlan_cb(struct qeth_card *card,  	QETH_CARD_TEXT(card, 2, "L2sdvcb");  	if (cmd->hdr.return_code) { -		QETH_DBF_MESSAGE(2, "Error in processing VLAN %i on %s: 0x%x.\n", +		QETH_DBF_MESSAGE(2, "Error in processing VLAN %u on device %x: %#x.\n",  				 cmd->data.setdelvlan.vlan_id, -				 QETH_CARD_IFNAME(card), cmd->hdr.return_code); +				 CARD_DEVID(card), cmd->hdr.return_code);  		QETH_CARD_TEXT_(card, 2, "L2VL%4x", cmd->hdr.command);  		QETH_CARD_TEXT_(card, 2, "err%d", cmd->hdr.return_code);  	} @@ -455,8 +455,8 @@ static int qeth_l2_request_initial_mac(struct qeth_card *card)  		rc = qeth_vm_request_mac(card);  		if (!rc)  			goto out; -		QETH_DBF_MESSAGE(2, "z/VM MAC Service failed on device %s: x%x\n", -				 CARD_BUS_ID(card), rc); +		QETH_DBF_MESSAGE(2, "z/VM MAC Service failed on device %x: %#x\n", +				 CARD_DEVID(card), rc);  		QETH_DBF_TEXT_(SETUP, 2, "err%04x", rc);  		/* fall back to alternative mechanism: */  	} @@ -468,8 +468,8 @@ static int qeth_l2_request_initial_mac(struct qeth_card *card)  		rc = qeth_setadpparms_change_macaddr(card);  		if (!rc)  			goto out; -		QETH_DBF_MESSAGE(2, "READ_MAC Assist failed on device %s: x%x\n", -				 CARD_BUS_ID(card), rc); +		QETH_DBF_MESSAGE(2, "READ_MAC Assist failed on device %x: %#x\n", +				 CARD_DEVID(card), rc);  		QETH_DBF_TEXT_(SETUP, 2, "1err%04x", rc);  		/* fall back once more: */  	} @@ -826,7 +826,8 @@ static void qeth_l2_remove_device(struct ccwgroup_device *cgdev)  	if (cgdev->state == CCWGROUP_ONLINE)  		qeth_l2_set_offline(cgdev); -	unregister_netdev(card->dev); +	if (qeth_netdev_is_registered(card->dev)) +		unregister_netdev(card->dev);  }  static const struct ethtool_ops qeth_l2_ethtool_ops = { @@ -862,11 +863,11 @@ static const struct net_device_ops qeth_l2_netdev_ops = {  	.ndo_set_features	= qeth_set_features  }; -static int qeth_l2_setup_netdev(struct qeth_card *card) +static int qeth_l2_setup_netdev(struct qeth_card *card, bool carrier_ok)  {  	int rc; -	if (card->dev->netdev_ops) +	if (qeth_netdev_is_registered(card->dev))  		return 0;  	card->dev->priv_flags |= IFF_UNICAST_FLT; @@ -919,6 +920,9 @@ static int qeth_l2_setup_netdev(struct qeth_card *card)  	qeth_l2_request_initial_mac(card);  	netif_napi_add(card->dev, &card->napi, qeth_poll, QETH_NAPI_WEIGHT);  	rc = register_netdev(card->dev); +	if (!rc && carrier_ok) +		netif_carrier_on(card->dev); +  	if (rc)  		card->dev->netdev_ops = NULL;  	return rc; @@ -949,6 +953,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)  	struct qeth_card *card = dev_get_drvdata(&gdev->dev);  	int rc = 0;  	enum qeth_card_states recover_flag; +	bool carrier_ok;  	mutex_lock(&card->discipline_mutex);  	mutex_lock(&card->conf_mutex); @@ -956,7 +961,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)  	QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));  	recover_flag = card->state; -	rc = qeth_core_hardsetup_card(card); +	rc = qeth_core_hardsetup_card(card, &carrier_ok);  	if (rc) {  		QETH_DBF_TEXT_(SETUP, 2, "2err%04x", rc);  		rc = -ENODEV; @@ -967,7 +972,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)  		dev_info(&card->gdev->dev,  		"The device represents a Bridge Capable Port\n"); -	rc = qeth_l2_setup_netdev(card); +	rc = qeth_l2_setup_netdev(card, carrier_ok);  	if (rc)  		goto out_remove;  | 
