qeth: do not apply priority queuing to HiperSockets
authorUrsula Braun <ursula.braun@de.ibm.com>
Mon, 8 Aug 2011 01:33:48 +0000 (01:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Aug 2011 08:10:15 +0000 (01:10 -0700)
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 <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/qeth_core_main.c

index 4550573c25e5161a57fede7f520e7aa23428a7fd..2b0fb056a51f7d7462522a0ec8084c7b657eba8e 100644 (file)
@@ -995,27 +995,29 @@ static void qeth_get_channel_path_desc(struct qeth_card *card)
        ccwdev = card->data.ccwdev;
        chp_dsc = (struct channelPath_dsc *)ccw_device_get_chp_desc(ccwdev, 0);
        if (chp_dsc != NULL) {
-               /* 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,
+               if (card->info.type != QETH_CARD_TYPE_IQD) {
+                       /* 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.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->qdio.no_out_queues = 4;
                }
                card->info.func_level = 0x4100 + chp_dsc->desc;
                kfree(chp_dsc);