Skip to content

Commit 99558ea

Browse files
braunudavem330
authored andcommitted
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: Ursula Braun <[email protected]> Signed-off-by: Frank Blaschka <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1d31f52 commit 99558ea

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

drivers/s390/net/qeth_core_main.c

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -995,27 +995,29 @@ static void qeth_get_channel_path_desc(struct qeth_card *card)
995995
ccwdev = card->data.ccwdev;
996996
chp_dsc = (struct channelPath_dsc *)ccw_device_get_chp_desc(ccwdev, 0);
997997
if (chp_dsc != NULL) {
998-
/* CHPP field bit 6 == 1 -> single queue */
999-
if ((chp_dsc->chpp & 0x02) == 0x02) {
1000-
if ((atomic_read(&card->qdio.state) !=
1001-
QETH_QDIO_UNINITIALIZED) &&
1002-
(card->qdio.no_out_queues == 4))
1003-
/* change from 4 to 1 outbound queues */
1004-
qeth_free_qdio_buffers(card);
1005-
card->qdio.no_out_queues = 1;
1006-
if (card->qdio.default_out_queue != 0)
1007-
dev_info(&card->gdev->dev,
998+
if (card->info.type != QETH_CARD_TYPE_IQD) {
999+
/* CHPP field bit 6 == 1 -> single queue */
1000+
if ((chp_dsc->chpp & 0x02) == 0x02) {
1001+
if ((atomic_read(&card->qdio.state) !=
1002+
QETH_QDIO_UNINITIALIZED) &&
1003+
(card->qdio.no_out_queues == 4))
1004+
/* change from 4 to 1 outbound queues */
1005+
qeth_free_qdio_buffers(card);
1006+
card->qdio.no_out_queues = 1;
1007+
if (card->qdio.default_out_queue != 0)
1008+
dev_info(&card->gdev->dev,
10081009
"Priority Queueing not supported\n");
1009-
card->qdio.default_out_queue = 0;
1010-
} else {
1011-
if ((atomic_read(&card->qdio.state) !=
1012-
QETH_QDIO_UNINITIALIZED) &&
1013-
(card->qdio.no_out_queues == 1)) {
1014-
/* change from 1 to 4 outbound queues */
1015-
qeth_free_qdio_buffers(card);
1016-
card->qdio.default_out_queue = 2;
1010+
card->qdio.default_out_queue = 0;
1011+
} else {
1012+
if ((atomic_read(&card->qdio.state) !=
1013+
QETH_QDIO_UNINITIALIZED) &&
1014+
(card->qdio.no_out_queues == 1)) {
1015+
/* change from 1 to 4 outbound queues */
1016+
qeth_free_qdio_buffers(card);
1017+
card->qdio.default_out_queue = 2;
1018+
}
1019+
card->qdio.no_out_queues = 4;
10171020
}
1018-
card->qdio.no_out_queues = 4;
10191021
}
10201022
card->info.func_level = 0x4100 + chp_dsc->desc;
10211023
kfree(chp_dsc);

0 commit comments

Comments
 (0)