From: Julian Wiedmann <jwi@linux.ibm.com>
To: David Miller <davem@davemloft.net>
Cc: netdev <netdev@vger.kernel.org>,
linux-s390 <linux-s390@vger.kernel.org>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Ursula Braun <ubraun@linux.ibm.com>,
Julian Wiedmann <jwi@linux.ibm.com>
Subject: [PATCH net-next 05/11] s390/qeth: allow configuration of TX queues for IQD devices
Date: Wed, 18 Mar 2020 13:54:49 +0100 [thread overview]
Message-ID: <20200318125455.5838-6-jwi@linux.ibm.com> (raw)
In-Reply-To: <20200318125455.5838-1-jwi@linux.ibm.com>
Similar to the support for z/VM NICs, but we need to take extra care
about the dedicated mcast queue:
1. netdev_pick_tx() is unaware of this limitation and might select the
mcast txq. Catch this.
2. require at least _two_ TX queues - one for ucast, one for mcast.
3. when reducing the number of TX queues, there's a potential race
where netdev_cap_txqueue() over-rules the selected txq index and
falls back to index 0. This would place ucast traffic on the mcast
queue, and result in TX errors.
So for IQD, reject a reduction while the interface is running.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
---
drivers/s390/net/qeth_core_main.c | 6 +++++-
drivers/s390/net/qeth_ethtool.c | 19 ++++++++++++++++---
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index f13495d9209b..aa493edc0082 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -6644,9 +6644,13 @@ EXPORT_SYMBOL_GPL(qeth_get_stats64);
u16 qeth_iqd_select_queue(struct net_device *dev, struct sk_buff *skb,
u8 cast_type, struct net_device *sb_dev)
{
+ u16 txq;
+
if (cast_type != RTN_UNICAST)
return QETH_IQD_MCAST_TXQ;
- return QETH_IQD_MIN_UCAST_TXQ;
+
+ txq = netdev_pick_tx(dev, skb, sb_dev);
+ return (txq == QETH_IQD_MCAST_TXQ) ? QETH_IQD_MIN_UCAST_TXQ : txq;
}
EXPORT_SYMBOL_GPL(qeth_iqd_select_queue);
diff --git a/drivers/s390/net/qeth_ethtool.c b/drivers/s390/net/qeth_ethtool.c
index 19b9c8302d36..715ee0015847 100644
--- a/drivers/s390/net/qeth_ethtool.c
+++ b/drivers/s390/net/qeth_ethtool.c
@@ -180,14 +180,27 @@ static int qeth_set_channels(struct net_device *dev,
{
struct qeth_card *card = dev->ml_priv;
- if (IS_IQD(card) || !IS_VM_NIC(card))
- return -EOPNOTSUPP;
-
if (channels->rx_count == 0 || channels->tx_count == 0)
return -EINVAL;
if (channels->tx_count > card->qdio.no_out_queues)
return -EINVAL;
+ if (IS_IQD(card)) {
+ if (channels->tx_count < QETH_IQD_MIN_TXQ)
+ return -EINVAL;
+
+ /* Reject downgrade while running. It could push displaced
+ * ucast flows onto txq0, which is reserved for mcast.
+ */
+ if (netif_running(dev) &&
+ channels->tx_count < dev->real_num_tx_queues)
+ return -EPERM;
+ } else {
+ /* OSA still uses the legacy prio-queue mechanism: */
+ if (!IS_VM_NIC(card))
+ return -EOPNOTSUPP;
+ }
+
return netif_set_real_num_tx_queues(dev, channels->tx_count);
}
--
2.17.1
next prev parent reply other threads:[~2020-03-18 12:55 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-18 12:54 [PATCH net-next 00/11] s390/qeth: updates 2020-03-18 Julian Wiedmann
2020-03-18 12:54 ` [PATCH net-next 01/11] s390/qeth: use memory reserves to back RX buffers Julian Wiedmann
2020-03-18 12:54 ` [PATCH net-next 02/11] s390/qeth: use memory reserves in TX slow path Julian Wiedmann
2020-03-18 12:54 ` [PATCH net-next 03/11] s390/qeth: remove prio-queueing support for z/VM NICs Julian Wiedmann
2020-03-18 12:54 ` [PATCH net-next 04/11] s390/qeth: allow configuration of TX queues " Julian Wiedmann
2020-03-18 12:54 ` Julian Wiedmann [this message]
2020-03-18 12:54 ` [PATCH net-next 06/11] s390/qeth: balance the TX queue selection for IQD devices Julian Wiedmann
2020-03-18 12:54 ` [PATCH net-next 07/11] s390/qeth: add SW timestamping support " Julian Wiedmann
2020-03-18 12:54 ` [PATCH net-next 08/11] s390/qeth: don't report hard-coded driver version Julian Wiedmann
2020-03-18 13:07 ` Leon Romanovsky
2020-03-18 12:54 ` [PATCH net-next 09/11] s390/qeth: add phys_to_virt() translation for AOB Julian Wiedmann
2020-03-18 12:54 ` [PATCH net-next 10/11] s390/qeth: remove gratuitous NULL checks Julian Wiedmann
2020-03-18 12:54 ` [PATCH net-next 11/11] s390/qeth: use dev->reg_state Julian Wiedmann
2020-03-18 23:34 ` [PATCH net-next 00/11] s390/qeth: updates 2020-03-18 David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200318125455.5838-6-jwi@linux.ibm.com \
--to=jwi@linux.ibm.com \
--cc=davem@davemloft.net \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-s390@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=ubraun@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.