qeth: handle missing z/VM authorization of OSX
authorUrsula Braun <ursula.braun@de.ibm.com>
Mon, 21 Jun 2010 22:57:12 +0000 (22:57 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 Jun 2010 20:16:37 +0000 (13:16 -0700)
For z/VM guest operating systems, OSX CHPIDs can only be used, if
LPAR and z/VM userID are explicitly authorized through the Service
Element. Issue a message if this SE-authorization is missing.

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>
drivers/s390/net/qeth_core_main.c
drivers/s390/net/qeth_core_mpc.h

index 926c0873db2f56b28af5f74be29fbb7b1ca8c748..b7019066c303af489d9cd4cfe52dcb50976b9dd4 100644 (file)
@@ -512,6 +512,7 @@ static void qeth_send_control_data_cb(struct qeth_channel *channel,
        case -EIO:
                qeth_clear_ipacmd_list(card);
                qeth_schedule_recovery(card);
+               /* fall through */
        default:
                goto out;
        }
@@ -1588,15 +1589,18 @@ static void qeth_idx_read_cb(struct qeth_channel *channel,
                                "host\n");
                        break;
                case QETH_IDX_ACT_ERR_AUTH:
+               case QETH_IDX_ACT_ERR_AUTH_USER:
                        dev_err(&card->read.ccwdev->dev,
                                "Setting the device online failed because of "
-                               "insufficient LPAR authorization\n");
+                               "insufficient authorization\n");
                        break;
                default:
                        QETH_DBF_MESSAGE(2, "%s IDX_ACTIVATE on read channel:"
                                " negative reply\n",
                                dev_name(&card->read.ccwdev->dev));
                }
+               QETH_CARD_TEXT_(card, 2, "idxread%c",
+                       QETH_IDX_ACT_CAUSE_CODE(iob->data));
                goto out;
        }
 
@@ -1929,7 +1933,7 @@ static int qeth_ulp_enable_cb(struct qeth_card *card, struct qeth_reply *reply,
                card->info.link_type = link_type;
        } else
                card->info.link_type = 0;
-       QETH_DBF_TEXT_(SETUP, 2, "link%d", link_type);
+       QETH_DBF_TEXT_(SETUP, 2, "link%d", card->info.link_type);
        QETH_DBF_TEXT_(SETUP, 2, "  rc%d", iob->rc);
        return 0;
 }
index f9ed24de75140e41630b638458acf22e404f8cbd..e37dd8c4bf4ecd9cebffac2e484a071c843dcf9f 100644 (file)
@@ -616,8 +616,9 @@ extern unsigned char IDX_ACTIVATE_WRITE[];
 #define QETH_IS_IDX_ACT_POS_REPLY(buffer) (((buffer)[0x08] & 3) == 2)
 #define QETH_IDX_REPLY_LEVEL(buffer) (buffer + 0x12)
 #define QETH_IDX_ACT_CAUSE_CODE(buffer) (buffer)[0x09]
-#define QETH_IDX_ACT_ERR_EXCL  0x19
-#define QETH_IDX_ACT_ERR_AUTH  0x1E
+#define QETH_IDX_ACT_ERR_EXCL          0x19
+#define QETH_IDX_ACT_ERR_AUTH          0x1E
+#define QETH_IDX_ACT_ERR_AUTH_USER     0x20
 
 #define PDU_ENCAPSULATION(buffer) \
        (buffer + *(buffer + (*(buffer + 0x0b)) + \