Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 725b9c04 authored by Sebastian Ott's avatar Sebastian Ott Committed by David S. Miller
Browse files

qeth: cleanup channel path descriptor function



Cleanup the qeth_get_channel_path_desc function and rename it
to qeth_update_from_chp_desc. No functional change.

Signed-off-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: default avatarFrank Blaschka <frank.blaschka@de.ibm.com>
Acked-by: default avatarUrsula Braun <ursula.braun@de.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ae473516
Loading
Loading
Loading
Loading
+41 −33
Original line number Original line Diff line number Diff line
@@ -1257,7 +1257,30 @@ static void qeth_clean_channel(struct qeth_channel *channel)
		kfree(channel->iob[cnt].data);
		kfree(channel->iob[cnt].data);
}
}


static void qeth_get_channel_path_desc(struct qeth_card *card)
static void qeth_set_single_write_queues(struct qeth_card *card)
{
	if ((atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED) &&
	    (card->qdio.no_out_queues == 4))
		qeth_free_qdio_buffers(card);

	card->qdio.no_out_queues = 1;
	if (card->qdio.default_out_queue != 0)
		dev_info(&card->gdev->dev, "Priority Queueing not supported\n");

	card->qdio.default_out_queue = 0;
}

static void qeth_set_multiple_write_queues(struct qeth_card *card)
{
	if ((atomic_read(&card->qdio.state) != QETH_QDIO_UNINITIALIZED) &&
	    (card->qdio.no_out_queues == 1)) {
		qeth_free_qdio_buffers(card);
		card->qdio.default_out_queue = 2;
	}
	card->qdio.no_out_queues = 4;
}

static void qeth_update_from_chp_desc(struct qeth_card *card)
{
{
	struct ccw_device *ccwdev;
	struct ccw_device *ccwdev;
	struct channelPath_dsc {
	struct channelPath_dsc {
@@ -1274,38 +1297,23 @@ static void qeth_get_channel_path_desc(struct qeth_card *card)
	QETH_DBF_TEXT(SETUP, 2, "chp_desc");
	QETH_DBF_TEXT(SETUP, 2, "chp_desc");


	ccwdev = card->data.ccwdev;
	ccwdev = card->data.ccwdev;
	chp_dsc = (struct channelPath_dsc *)ccw_device_get_chp_desc(ccwdev, 0);
	chp_dsc = ccw_device_get_chp_desc(ccwdev, 0);
	if (chp_dsc != NULL) {
	if (!chp_dsc)
		if (card->info.type != QETH_CARD_TYPE_IQD) {
		goto out;
			/* CHPP field bit 6 == 1 -> single queue */

			if ((chp_dsc->chpp & 0x02) == 0x02) {
				if ((atomic_read(&card->qdio.state) !=
					QETH_QDIO_UNINITIALIZED) &&
				    (card->qdio.no_out_queues == 4))
					/* change from 4 to 1 outbound queues */
					qeth_free_qdio_buffers(card);
				card->qdio.no_out_queues = 1;
				if (card->qdio.default_out_queue != 0)
					dev_info(&card->gdev->dev,
					"Priority Queueing not supported\n");
				card->qdio.default_out_queue = 0;
			} else {
				if ((atomic_read(&card->qdio.state) !=
					QETH_QDIO_UNINITIALIZED) &&
				    (card->qdio.no_out_queues == 1)) {
					/* change from 1 to 4 outbound queues */
					qeth_free_qdio_buffers(card);
					card->qdio.default_out_queue = 2;
				}
				card->qdio.no_out_queues = 4;
			}
		}
	card->info.func_level = 0x4100 + chp_dsc->desc;
	card->info.func_level = 0x4100 + chp_dsc->desc;
	if (card->info.type == QETH_CARD_TYPE_IQD)
		goto out;

	/* CHPP field bit 6 == 1 -> single queue */
	if ((chp_dsc->chpp & 0x02) == 0x02)
		qeth_set_single_write_queues(card);
	else
		qeth_set_multiple_write_queues(card);
out:
	kfree(chp_dsc);
	kfree(chp_dsc);
	}
	QETH_DBF_TEXT_(SETUP, 2, "nr:%x", card->qdio.no_out_queues);
	QETH_DBF_TEXT_(SETUP, 2, "nr:%x", card->qdio.no_out_queues);
	QETH_DBF_TEXT_(SETUP, 2, "lvl:%02x", card->info.func_level);
	QETH_DBF_TEXT_(SETUP, 2, "lvl:%02x", card->info.func_level);
	return;
}
}


static void qeth_init_qdio_info(struct qeth_card *card)
static void qeth_init_qdio_info(struct qeth_card *card)
@@ -1473,7 +1481,7 @@ static int qeth_determine_card_type(struct qeth_card *card)
			card->qdio.no_in_queues = 1;
			card->qdio.no_in_queues = 1;
			card->info.is_multicast_different =
			card->info.is_multicast_different =
				known_devices[i][QETH_MULTICAST_IND];
				known_devices[i][QETH_MULTICAST_IND];
			qeth_get_channel_path_desc(card);
			qeth_update_from_chp_desc(card);
			return 0;
			return 0;
		}
		}
		i++;
		i++;
@@ -4742,7 +4750,7 @@ int qeth_core_hardsetup_card(struct qeth_card *card)


	QETH_DBF_TEXT(SETUP, 2, "hrdsetup");
	QETH_DBF_TEXT(SETUP, 2, "hrdsetup");
	atomic_set(&card->force_alloc_skb, 0);
	atomic_set(&card->force_alloc_skb, 0);
	qeth_get_channel_path_desc(card);
	qeth_update_from_chp_desc(card);
retry:
retry:
	if (retries)
	if (retries)
		QETH_DBF_MESSAGE(2, "%s Retrying to do IDX activates.\n",
		QETH_DBF_MESSAGE(2, "%s Retrying to do IDX activates.\n",