Commit 99558ea9 authored by Ursula Braun's avatar Ursula Braun Committed by David S. Miller

qeth: do not apply priority queuing to HiperSockets

OSA cards can be configured to support 1 or 4 output queues. This
does not apply to HiperSockets. This patch limits determination of
the configured number of output queues to OSA cards only, but excludes
HiperSockets.
Signed-off-by: default avatarUrsula Braun <ursula.braun@de.ibm.com>
Signed-off-by: default avatarFrank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1d31f52e
...@@ -995,27 +995,29 @@ static void qeth_get_channel_path_desc(struct qeth_card *card) ...@@ -995,27 +995,29 @@ static void qeth_get_channel_path_desc(struct qeth_card *card)
ccwdev = card->data.ccwdev; ccwdev = card->data.ccwdev;
chp_dsc = (struct channelPath_dsc *)ccw_device_get_chp_desc(ccwdev, 0); chp_dsc = (struct channelPath_dsc *)ccw_device_get_chp_desc(ccwdev, 0);
if (chp_dsc != NULL) { if (chp_dsc != NULL) {
/* CHPP field bit 6 == 1 -> single queue */ if (card->info.type != QETH_CARD_TYPE_IQD) {
if ((chp_dsc->chpp & 0x02) == 0x02) { /* CHPP field bit 6 == 1 -> single queue */
if ((atomic_read(&card->qdio.state) != if ((chp_dsc->chpp & 0x02) == 0x02) {
QETH_QDIO_UNINITIALIZED) && if ((atomic_read(&card->qdio.state) !=
(card->qdio.no_out_queues == 4)) QETH_QDIO_UNINITIALIZED) &&
/* change from 4 to 1 outbound queues */ (card->qdio.no_out_queues == 4))
qeth_free_qdio_buffers(card); /* change from 4 to 1 outbound queues */
card->qdio.no_out_queues = 1; qeth_free_qdio_buffers(card);
if (card->qdio.default_out_queue != 0) card->qdio.no_out_queues = 1;
dev_info(&card->gdev->dev, if (card->qdio.default_out_queue != 0)
dev_info(&card->gdev->dev,
"Priority Queueing not supported\n"); "Priority Queueing not supported\n");
card->qdio.default_out_queue = 0; card->qdio.default_out_queue = 0;
} else { } else {
if ((atomic_read(&card->qdio.state) != if ((atomic_read(&card->qdio.state) !=
QETH_QDIO_UNINITIALIZED) && QETH_QDIO_UNINITIALIZED) &&
(card->qdio.no_out_queues == 1)) { (card->qdio.no_out_queues == 1)) {
/* change from 1 to 4 outbound queues */ /* change from 1 to 4 outbound queues */
qeth_free_qdio_buffers(card); qeth_free_qdio_buffers(card);
card->qdio.default_out_queue = 2; card->qdio.default_out_queue = 2;
}
card->qdio.no_out_queues = 4;
} }
card->qdio.no_out_queues = 4;
} }
card->info.func_level = 0x4100 + chp_dsc->desc; card->info.func_level = 0x4100 + chp_dsc->desc;
kfree(chp_dsc); kfree(chp_dsc);
......
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