Skip to contentSkip to conversation

ehea: fix delayed packet processing

PATCH Applied Jan-Bernd Themann 3 participants 3 messages Jun 15, 2010 – Jun 17, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 ehea: fix delayed packet processing

In the eHEA poll function an rmb() is required. Without that some packets on the receive queue are not seen and thus delayed until the next interrupt is handled for the same receive queue.

---
Patch created against 2.6.35-rc3

 drivers/net/ehea/ehea_main.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ehea/ehea_main.c +1 -0
index f547894..fd890fa 100644
@@ -867,6 +867,7 @@ static int ehea_poll(struct napi_struct *napi, int budget)
 		ehea_reset_cq_ep(pr->send_cq);
 		ehea_reset_cq_n1(pr->recv_cq);
 		ehea_reset_cq_n1(pr->send_cq);
+		rmb();
 		cqe = ehea_poll_rq1(pr->qp, &wqe_index);
 		cqe_skb = ehea_poll_cq(pr->send_cq);
 
Signature · 1 line
1.7.0
#1 lore raw
Quoted 5 lines · Jan-Bernd Themann

In the eHEA poll function an rmb() is required. Without that some packets on the receive queue are not seen and thus delayed until the next interrupt is handled for the same receive queue.

To add a bit of background, this could manifest during a netperf
TCP_RR or UDP_RR on an otherwise idle network. TCP would occasionally retransmit, but then both the original segment and the retransmission would simultaneously appear at the receiver. For UDP_RR, message sizes in excess of the mtu would occasionally "lose" an IP fragment, and eventually IP reassembly would time out.

	-J
Quoted 24 lines

---
Patch created against 2.6.35-rc3

drivers/net/ehea/ehea_main.c | 1 +

1 files changed, 1 insertions(+), 0 deletions(-)
drivers/net/ehea/ehea_main.c +1 -0
index f547894..fd890fa 100644
@@ -867,6 +867,7 @@ static int ehea_poll(struct napi_struct *napi, int budget)
 		ehea_reset_cq_ep(pr->send_cq);
 		ehea_reset_cq_n1(pr->recv_cq);
 		ehea_reset_cq_n1(pr->send_cq);
+		rmb();
 		cqe = ehea_poll_rq1(pr->qp, &wqe_index);
 		cqe_skb = ehea_poll_cq(pr->send_cq);
 
Signature · 5 lines
1.7.0
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
maintainer Applied
#2 lore raw

From: Jay Vosburgh <[email protected]>
Date: Tue, 15 Jun 2010 09:45:47 -0700

Quoted 15 lines
Quoted 5 lines · Jan-Bernd Themann

In the eHEA poll function an rmb() is required. Without that some packets on the receive queue are not seen and thus delayed until the next interrupt is handled for the same receive queue.

To add a bit of background, this could manifest during a netperf
TCP_RR or UDP_RR on an otherwise idle network. TCP would occasionally retransmit, but then both the original segment and the retransmission would simultaneously appear at the receiver. For UDP_RR, message sizes in excess of the mtu would occasionally "lose" an IP fragment, and eventually IP reassembly would time out.

Quoted 3 lines
	-J

Applied.