netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arthur Kepner <akepner@sgi.com>
To: Leonid Grossman <leonid.grossman@neterion.com>,
	muhammad.shafiq@neterion.com, ramkrishna.vepa@neterion.com
Cc: netdev@oss.sgi.com
Subject: [PATCH] s2io: replace readq() with mmiowb() in s2io_xmit()
Date: Mon, 2 May 2005 18:09:26 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.61.0505021459240.16692@linux.site> (raw)
In-Reply-To: <200504051836.j35IanDD005402@guinness.s2io.com>


The neterion 10gige driver uses a readq() to flush some PIO writes
in s2io_xmit(). Using mmiowb() can, in some cases, reduce CPU 
utilization, and/or allow higher throughput. This is particularly 
true when TSO is off, and small MTUs are in use. 

For example, in one test measurement I just did with 2.6.12-rc2
on an Altix, MTUs were set to 1500 bytes and TSO turned off. 
With this patch, transmit throughput improved by ~20%. Throughput 
was ultimately bound by the CPU with or without the patch. With 
large MTUs (9600 bytes) or with TSO turned on, there was no 
significant change to throughput or CPU utilization.

Signed-off-by: Arthur Kepner <akepner@sgi.com>

--- linux.orig/drivers/net/s2io.c	2005-05-02 16:40:17.469733509 -0700
+++ linux/drivers/net/s2io.c	2005-05-02 16:40:25.001043632 -0700
@@ -2759,8 +2759,8 @@ static int s2io_xmit(struct sk_buff *skb
 #endif
 	writeq(val64, &tx_fifo->List_Control);
 
-	/* Perform a PCI read to flush previous writes */
-	val64 = readq(&bar0->general_int_status);
+	/* Perform a mmiowb() to order previous writes */
+	mmiowb();
 
 	put_off++;
 	put_off %= mac_control->tx_curr_put_info[queue].fifo_len + 1;

--
Arthur

       reply	other threads:[~2005-05-03  1:09 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200504051836.j35IanDD005402@guinness.s2io.com>
2005-05-03  1:09 ` Arthur Kepner [this message]
2005-05-03  1:40   ` [PATCH] s2io: replace readq() with mmiowb() in s2io_xmit() Anton Blanchard
2005-05-03  2:11     ` Arthur Kepner
2005-05-03  2:58       ` Ramkrishna Vepa
2005-05-03  3:06         ` Anton Blanchard
2005-05-03 14:52           ` Arthur Kepner
2005-05-03 16:23             ` Ramkrishna Vepa
2005-05-03  3:05       ` Anton Blanchard

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=Pine.LNX.4.61.0505021459240.16692@linux.site \
    --to=akepner@sgi.com \
    --cc=leonid.grossman@neterion.com \
    --cc=muhammad.shafiq@neterion.com \
    --cc=netdev@oss.sgi.com \
    --cc=ramkrishna.vepa@neterion.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).