s390/qeth: keep track of fixed prio-queue configuration
When a device is configured in prio-queue mode to pin all traffic onto a specific HW queue, treat this as a distinct variant of prio-queueing instead of QETH_NO_PRIO_QUEUEING. This corrects an error message from qeth_osa_set_output_queues() for devices configured in such a mode. Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bdb0cc128b
commit
c91a1fb7a4
@ -211,6 +211,7 @@ struct qeth_vnicc_info {
|
|||||||
#define QETH_PRIO_Q_ING_TOS 2
|
#define QETH_PRIO_Q_ING_TOS 2
|
||||||
#define QETH_PRIO_Q_ING_SKB 3
|
#define QETH_PRIO_Q_ING_SKB 3
|
||||||
#define QETH_PRIO_Q_ING_VLAN 4
|
#define QETH_PRIO_Q_ING_VLAN 4
|
||||||
|
#define QETH_PRIO_Q_ING_FIXED 5
|
||||||
|
|
||||||
/* Packing */
|
/* Packing */
|
||||||
#define QETH_LOW_WATERMARK_PACK 2
|
#define QETH_LOW_WATERMARK_PACK 2
|
||||||
|
@ -3646,6 +3646,8 @@ int qeth_get_priority_queue(struct qeth_card *card, struct sk_buff *skb)
|
|||||||
return ~ntohs(veth->h_vlan_TCI) >>
|
return ~ntohs(veth->h_vlan_TCI) >>
|
||||||
(VLAN_PRIO_SHIFT + 1) & 3;
|
(VLAN_PRIO_SHIFT + 1) & 3;
|
||||||
break;
|
break;
|
||||||
|
case QETH_PRIO_Q_ING_FIXED:
|
||||||
|
return card->qdio.default_out_queue;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -211,16 +211,16 @@ static ssize_t qeth_dev_prioqing_store(struct device *dev,
|
|||||||
card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_VLAN;
|
card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_VLAN;
|
||||||
card->qdio.default_out_queue = QETH_DEFAULT_QUEUE;
|
card->qdio.default_out_queue = QETH_DEFAULT_QUEUE;
|
||||||
} else if (sysfs_streq(buf, "no_prio_queueing:0")) {
|
} else if (sysfs_streq(buf, "no_prio_queueing:0")) {
|
||||||
card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING;
|
card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_FIXED;
|
||||||
card->qdio.default_out_queue = 0;
|
card->qdio.default_out_queue = 0;
|
||||||
} else if (sysfs_streq(buf, "no_prio_queueing:1")) {
|
} else if (sysfs_streq(buf, "no_prio_queueing:1")) {
|
||||||
card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING;
|
card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_FIXED;
|
||||||
card->qdio.default_out_queue = 1;
|
card->qdio.default_out_queue = 1;
|
||||||
} else if (sysfs_streq(buf, "no_prio_queueing:2")) {
|
} else if (sysfs_streq(buf, "no_prio_queueing:2")) {
|
||||||
card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING;
|
card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_FIXED;
|
||||||
card->qdio.default_out_queue = 2;
|
card->qdio.default_out_queue = 2;
|
||||||
} else if (sysfs_streq(buf, "no_prio_queueing:3")) {
|
} else if (sysfs_streq(buf, "no_prio_queueing:3")) {
|
||||||
card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING;
|
card->qdio.do_prio_queueing = QETH_PRIO_Q_ING_FIXED;
|
||||||
card->qdio.default_out_queue = 3;
|
card->qdio.default_out_queue = 3;
|
||||||
} else if (sysfs_streq(buf, "no_prio_queueing")) {
|
} else if (sysfs_streq(buf, "no_prio_queueing")) {
|
||||||
card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING;
|
card->qdio.do_prio_queueing = QETH_NO_PRIO_QUEUEING;
|
||||||
|
Loading…
Reference in New Issue
Block a user