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

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
...@@ -1257,7 +1257,30 @@ static void qeth_clean_channel(struct qeth_channel *channel) ...@@ -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) ...@@ -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) { card->info.func_level = 0x4100 + chp_dsc->desc;
if ((atomic_read(&card->qdio.state) != if (card->info.type == QETH_CARD_TYPE_IQD)
QETH_QDIO_UNINITIALIZED) && goto out;
(card->qdio.no_out_queues == 4))
/* change from 4 to 1 outbound queues */ /* CHPP field bit 6 == 1 -> single queue */
qeth_free_qdio_buffers(card); if ((chp_dsc->chpp & 0x02) == 0x02)
card->qdio.no_out_queues = 1; qeth_set_single_write_queues(card);
if (card->qdio.default_out_queue != 0) else
dev_info(&card->gdev->dev, qeth_set_multiple_write_queues(card);
"Priority Queueing not supported\n"); out:
card->qdio.default_out_queue = 0; kfree(chp_dsc);
} 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;
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) ...@@ -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) ...@@ -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",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment