s390/qeth: clean up CREATE_ADDR cmd code
authorJulian Wiedmann <jwi@linux.ibm.com>
Thu, 27 Feb 2020 17:08:10 +0000 (18:08 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Feb 2020 19:15:12 +0000 (11:15 -0800)
Properly define the cmd's struct to get rid of some casts and accesses
at magic offsets.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Alexandra Winter <wintera@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/qeth_core_mpc.h
drivers/s390/net/qeth_l3_main.c

index 3865f72..3a3cebd 100644 (file)
@@ -550,8 +550,9 @@ struct qeth_ipacmd_setadpparms {
 
 /* CREATE_ADDR IPA Command:    ***********************************************/
 struct qeth_create_destroy_address {
-       __u8 unique_id[8];
-} __attribute__ ((packed));
+       u8 mac_addr[ETH_ALEN];
+       u16 uid;
+};
 
 /* SET DIAGNOSTIC ASSIST IPA Command:   *************************************/
 
index 1c95398..667a10d 100644 (file)
@@ -922,7 +922,7 @@ static int qeth_l3_iqd_read_initial_mac_cb(struct qeth_card *card,
                return -EIO;
 
        ether_addr_copy(card->dev->dev_addr,
-                       cmd->data.create_destroy_addr.unique_id);
+                       cmd->data.create_destroy_addr.mac_addr);
        return 0;
 }
 
@@ -949,8 +949,7 @@ static int qeth_l3_get_unique_id_cb(struct qeth_card *card,
        struct qeth_ipa_cmd *cmd = (struct qeth_ipa_cmd *) data;
 
        if (cmd->hdr.return_code == 0) {
-               card->info.unique_id = *((__u16 *)
-                               &cmd->data.create_destroy_addr.unique_id[6]);
+               card->info.unique_id = cmd->data.create_destroy_addr.uid;
                return 0;
        }
 
@@ -964,7 +963,6 @@ static int qeth_l3_get_unique_id(struct qeth_card *card)
 {
        int rc = 0;
        struct qeth_cmd_buffer *iob;
-       struct qeth_ipa_cmd *cmd;
 
        QETH_CARD_TEXT(card, 2, "guniqeid");
 
@@ -978,10 +976,8 @@ static int qeth_l3_get_unique_id(struct qeth_card *card)
                                 IPA_DATA_SIZEOF(create_destroy_addr));
        if (!iob)
                return -ENOMEM;
-       cmd = __ipa_cmd(iob);
-       *((__u16 *) &cmd->data.create_destroy_addr.unique_id[6]) =
-                       card->info.unique_id;
 
+       __ipa_cmd(iob)->data.create_destroy_addr.uid = card->info.unique_id;
        rc = qeth_send_ipa_cmd(card, iob, qeth_l3_get_unique_id_cb, NULL);
        return rc;
 }