|
@@ -439,7 +439,6 @@ static int qeth_l2_process_inbound_buffer(struct qeth_card *card,
|
|
static int qeth_l2_request_initial_mac(struct qeth_card *card)
|
|
static int qeth_l2_request_initial_mac(struct qeth_card *card)
|
|
{
|
|
{
|
|
int rc = 0;
|
|
int rc = 0;
|
|
- char vendor_pre[] = {0x02, 0x00, 0x00};
|
|
|
|
|
|
|
|
QETH_DBF_TEXT(SETUP, 2, "l2reqmac");
|
|
QETH_DBF_TEXT(SETUP, 2, "l2reqmac");
|
|
QETH_DBF_TEXT_(SETUP, 2, "doL2%s", CARD_BUS_ID(card));
|
|
QETH_DBF_TEXT_(SETUP, 2, "doL2%s", CARD_BUS_ID(card));
|
|
@@ -459,16 +458,20 @@ static int qeth_l2_request_initial_mac(struct qeth_card *card)
|
|
card->info.type == QETH_CARD_TYPE_OSX ||
|
|
card->info.type == QETH_CARD_TYPE_OSX ||
|
|
card->info.guestlan) {
|
|
card->info.guestlan) {
|
|
rc = qeth_setadpparms_change_macaddr(card);
|
|
rc = qeth_setadpparms_change_macaddr(card);
|
|
- if (rc) {
|
|
|
|
- QETH_DBF_MESSAGE(2, "couldn't get MAC address on "
|
|
|
|
- "device %s: x%x\n", CARD_BUS_ID(card), rc);
|
|
|
|
- QETH_DBF_TEXT_(SETUP, 2, "1err%04x", rc);
|
|
|
|
- return rc;
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- eth_random_addr(card->dev->dev_addr);
|
|
|
|
- memcpy(card->dev->dev_addr, vendor_pre, 3);
|
|
|
|
|
|
+ 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_TEXT_(SETUP, 2, "1err%04x", rc);
|
|
|
|
+ /* fall back once more: */
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /* some devices don't support a custom MAC address: */
|
|
|
|
+ if (card->info.type == QETH_CARD_TYPE_OSM ||
|
|
|
|
+ card->info.type == QETH_CARD_TYPE_OSX)
|
|
|
|
+ return (rc) ? rc : -EADDRNOTAVAIL;
|
|
|
|
+ eth_hw_addr_random(card->dev);
|
|
|
|
+
|
|
out:
|
|
out:
|
|
QETH_DBF_HEX(SETUP, 2, card->dev->dev_addr, card->dev->addr_len);
|
|
QETH_DBF_HEX(SETUP, 2, card->dev->dev_addr, card->dev->addr_len);
|
|
return 0;
|
|
return 0;
|