diff mbox series

[net-next] liquidio: Prioritize control messages

Message ID 20180328022518.GA9011@felix-thinkpad.cavium.com
State Accepted, archived
Delegated to: David Miller
Headers show
Series [net-next] liquidio: Prioritize control messages | expand

Commit Message

Manlunas, Felix March 28, 2018, 2:25 a.m. UTC
From: Intiyaz Basha <intiyaz.basha@cavium.com>

During heavy tx traffic, control messages (sent by liquidio driver to NIC
firmware) sometimes do not get processed in a timely manner.  Reason is:
the low-level metadata of control messages and that of egress network
packets indicate that they have the same priority.

Fix it by setting a higher priority for control messages through the new
ctrl_qpg field in the oct_txpciq struct.  It is the NIC firmware that does
the actual setting of priority by writing to the new ctrl_qpg field; the
host driver treats that value as opaque and just assigns it to pki_ih3->qpg

Signed-off-by: Intiyaz Basha <intiyaz.basha@cavium.com>
Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
---
 drivers/net/ethernet/cavium/liquidio/liquidio_common.h | 8 ++++++--
 drivers/net/ethernet/cavium/liquidio/request_manager.c | 3 ++-
 2 files changed, 8 insertions(+), 3 deletions(-)

Comments

David Miller March 29, 2018, 6:14 p.m. UTC | #1
From: Felix Manlunas <felix.manlunas@cavium.com>
Date: Tue, 27 Mar 2018 19:25:18 -0700

> From: Intiyaz Basha <intiyaz.basha@cavium.com>
> 
> During heavy tx traffic, control messages (sent by liquidio driver to NIC
> firmware) sometimes do not get processed in a timely manner.  Reason is:
> the low-level metadata of control messages and that of egress network
> packets indicate that they have the same priority.
> 
> Fix it by setting a higher priority for control messages through the new
> ctrl_qpg field in the oct_txpciq struct.  It is the NIC firmware that does
> the actual setting of priority by writing to the new ctrl_qpg field; the
> host driver treats that value as opaque and just assigns it to pki_ih3->qpg
> 
> Signed-off-by: Intiyaz Basha <intiyaz.basha@cavium.com>
> Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>

Applied.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h
index 82a783d..75eea83 100644
--- a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h
+++ b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h
@@ -712,9 +712,13 @@  enum lio_phy_type {
 		u64 pkind:6;
 		u64 use_qpg:1;
 		u64 qpg:11;
-		u64 reserved:30;
+		u64 reserved0:10;
+		u64 ctrl_qpg:11;
+		u64 reserved:9;
 #else
-		u64 reserved:30;
+		u64 reserved:9;
+		u64 ctrl_qpg:11;
+		u64 reserved0:10;
 		u64 qpg:11;
 		u64 use_qpg:1;
 		u64 pkind:6;
diff --git a/drivers/net/ethernet/cavium/liquidio/request_manager.c b/drivers/net/ethernet/cavium/liquidio/request_manager.c
index 2766af0..b127035 100644
--- a/drivers/net/ethernet/cavium/liquidio/request_manager.c
+++ b/drivers/net/ethernet/cavium/liquidio/request_manager.c
@@ -628,7 +628,8 @@  static void check_db_timeout(struct work_struct *work)
 		pki_ih3->tag     = LIO_CONTROL;
 		pki_ih3->tagtype = ATOMIC_TAG;
 		pki_ih3->qpg         =
-			oct->instr_queue[sc->iq_no]->txpciq.s.qpg;
+			oct->instr_queue[sc->iq_no]->txpciq.s.ctrl_qpg;
+
 		pki_ih3->pm          = 0x7;
 		pki_ih3->sl          = 8;