OSDN Git Service

s390/qeth: clean up setting of BLKT defaults
authorJulian Wiedmann <jwi@linux.ibm.com>
Tue, 11 Jun 2019 16:37:52 +0000 (18:37 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 14 Jun 2019 05:39:31 +0000 (22:39 -0700)
When called from qeth_core_probe_device(), qeth_determine_capabilities()
initializes the device's BLKT defaults. From all other callers, the
ccw_device has already been set online and the BLKT setting is skipped.

Clean this up by extracting the BLKT setting into a separate helper that
gets called from the right place.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/qeth_core.h
drivers/s390/net/qeth_core_main.c

index 784a2e7..5fab7b3 100644 (file)
@@ -665,6 +665,7 @@ struct qeth_card_info {
        __u16 func_level;
        char mcl_level[QETH_MCL_LENGTH + 1];
        u8 open_when_online:1;
+       u8 use_v1_blkt:1;
        u8 is_vm_nic:1;
        int mac_bits;
        enum qeth_card_types type;
index fade841..0403a14 100644 (file)
@@ -1633,6 +1633,8 @@ static void qeth_configure_unitaddr(struct qeth_card *card, char *prcd)
        card->info.cula = prcd[63];
        card->info.is_vm_nic = ((prcd[0x10] == _ascebc['V']) &&
                                (prcd[0x11] == _ascebc['M']));
+       card->info.use_v1_blkt = prcd[74] == 0xF0 && prcd[75] == 0xF0 &&
+                                prcd[76] >= 0xF1 && prcd[76] <= 0xF4;
 }
 
 static enum qeth_discipline_id qeth_vm_detect_layer(struct qeth_card *card)
@@ -1716,12 +1718,11 @@ static enum qeth_discipline_id qeth_enforce_discipline(struct qeth_card *card)
        return disc;
 }
 
-static void qeth_configure_blkt_default(struct qeth_card *card, char *prcd)
+static void qeth_set_blkt_defaults(struct qeth_card *card)
 {
        QETH_DBF_TEXT(SETUP, 2, "cfgblkt");
 
-       if (prcd[74] == 0xF0 && prcd[75] == 0xF0 &&
-           prcd[76] >= 0xF1 && prcd[76] <= 0xF4) {
+       if (card->info.use_v1_blkt) {
                card->info.blkt.time_total = 0;
                card->info.blkt.inter_packet = 0;
                card->info.blkt.inter_packet_jumbo = 0;
@@ -4761,8 +4762,6 @@ static void qeth_determine_capabilities(struct qeth_card *card)
                goto out_offline;
        }
        qeth_configure_unitaddr(card, prcd);
-       if (ddev_offline)
-               qeth_configure_blkt_default(card, prcd);
        kfree(prcd);
 
        rc = qdio_get_ssqd_desc(ddev, &card->ssqd);
@@ -5660,6 +5659,8 @@ static int qeth_core_probe_device(struct ccwgroup_device *gdev)
        if (rc)
                goto err_chp_desc;
        qeth_determine_capabilities(card);
+       qeth_set_blkt_defaults(card);
+
        enforced_disc = qeth_enforce_discipline(card);
        switch (enforced_disc) {
        case QETH_DISCIPLINE_UNDETERMINED: