All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <200608190109.15129.arnd@arndb.de>

diff --git a/a/1.txt b/N1/1.txt
index eb9c720..d192b61 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,22 +1,33 @@
-T24gU2F0dXJkYXkgMTkgQXVndXN0IDIwMDYgMDA6MjEsIExpbmFzIFZlcHN0YXMgd3JvdGU6Cj4g
-K6CgoKCgoKAvKiBNZWFzdXJlIHRoZSBsZW5ndGggb2YgdGhlIHF1ZXVlLiAqLwo+ICugoKCgoKCg
-d2hpbGUgKGRlc2NyICE9IGNhcmQtPnR4X2NoYWluLmhlYWQpIHsKPiAroKCgoKCgoKCgoKCgoKCg
-c3RhdHVzID0gZGVzY3ItPmRtYWNfY21kX3N0YXR1cyAmIFNQSURFUl9ORVRfREVTQ1JfTk9UX0lO
-X1VTRTsKPiAroKCgoKCgoKCgoKCgoKCgaWYgKHN0YXR1cyA9PSBTUElERVJfTkVUX0RFU0NSX05P
-VF9JTl9VU0UpCj4gK6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgYnJlYWs7Cj4gK6CgoKCgoKCgoKCg
-oKCgoGRlc2NyID0gZGVzY3ItPm5leHQ7Cj4gK6CgoKCgoKCgoKCgoKCgoGNudCsrOwo+ICugoKCg
-oKCgfQo+ICugoKCgoKCgaWYgKGNudCA9PSAwKQo+ICugoKCgoKCgoKCgoKCgoKByZXR1cm47Cj4g
-Kwo+ICugoKCgoKCgLyogU2V0IGxvdy13YXRlcm1hcmsgMy80dGgncyBvZiB0aGUgd2F5IGludG8g
-dGhlIHF1ZXVlLiAqLwo+ICugoKCgoKCgZGVzY3IgPSBjYXJkLT50eF9jaGFpbi50YWlsOwo+ICug
-oKCgoKCgY250ID0gKGNudCozKS80Owo+ICugoKCgoKCgZm9yIChpPTA7aTxjbnQ7IGkrKykKPiAr
-oKCgoKCgoKCgoKCgoKCgZGVzY3IgPSBkZXNjci0+bmV4dDsKCkkgd29uZGVyIGlmIGNhbGxpbmcg
-dGhpcyBmcmVxdWVudGx5IHJlc3VsdHMgaW4gYSBzaWduaWZpY2FudCBwcm9jZXNzaW5nCm92ZXJo
-ZWFkIGluIHRoZSBDUFUuIERvZXMgdGhlIHNwaWRlcl9uZXRfc2V0X2xvd193YXRlcm1hcmsgZnVu
-Y3Rpb24Kc2hvdyB1cCBpbiB5b3VyIHByb2ZpbGVzPwoKQSBtb3JlIGVmZmljaWVudCBpbXBsZW1l
-bnRhdGlvbiBtaWdodCBiZSB0byBtYXJrIG9uZSBkZXNjcmlwdG9yIHRoYXQKaXMgYXQgYSBmaXhl
-ZCBvZmZzZXQgZnJvbSB0aGUgVFggcXVldWUgdGFpbCwgc28gd2Ugb25seSBuZWVkIHRvIGRvCgpj
-YXJkLT5sb3dfd2F0ZXJtYXJrLT5uZXh0LT5kbWFjX2NtZF9zdGF0dXMgfD0gU1BJREVSX05FVF9E
-RVNDUl9UWERFU0ZMRzsKbWIoKTsKY2FyZC0+bG93X3dhdGVybWFyay0+ZG1hY19jbWRfc3RhdHVz
-ICY9IH5TUElERVJfTkVUX0RFU0NSX1RYREVTRkxHOwpjYXJkLT5sb3dfd2F0ZXJtYXJrID0gY2Fy
-ZC0+bG93X3dhdGVybWFyay0+bmV4dDsKCndoZW4gd2UgcXVldWUgYW5vdGhlciBmcmFtZSBmb3Ig
-VFguCgoJQXJuZCA8PjwK
+On Saturday 19 August 2006 00:21, Linas Vepstas wrote:
+> +       /* Measure the length of the queue. */
+> +       while (descr != card->tx_chain.head) {
+> +               status = descr->dmac_cmd_status & SPIDER_NET_DESCR_NOT_IN_USE;
+> +               if (status == SPIDER_NET_DESCR_NOT_IN_USE)
+> +                       break;
+> +               descr = descr->next;
+> +               cnt++;
+> +       }
+> +       if (cnt == 0)
+> +               return;
+> +
+> +       /* Set low-watermark 3/4th's of the way into the queue. */
+> +       descr = card->tx_chain.tail;
+> +       cnt = (cnt*3)/4;
+> +       for (i=0;i<cnt; i++)
+> +               descr = descr->next;
+
+I wonder if calling this frequently results in a significant processing
+overhead in the CPU. Does the spider_net_set_low_watermark function
+show up in your profiles?
+
+A more efficient implementation might be to mark one descriptor that
+is at a fixed offset from the TX queue tail, so we only need to do
+
+card->low_watermark->next->dmac_cmd_status |= SPIDER_NET_DESCR_TXDESFLG;
+mb();
+card->low_watermark->dmac_cmd_status &= ~SPIDER_NET_DESCR_TXDESFLG;
+card->low_watermark = card->low_watermark->next;
+
+when we queue another frame for TX.
+
+	Arnd <><
diff --git a/a/content_digest b/N1/content_digest
index 4273c80..b3cde06 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -12,27 +12,38 @@
  " ens Osterkamp <Jens.Osterkamp@de.ibm.com>\0"
  "\00:1\0"
  "b\0"
- "T24gU2F0dXJkYXkgMTkgQXVndXN0IDIwMDYgMDA6MjEsIExpbmFzIFZlcHN0YXMgd3JvdGU6Cj4g\n"
- "K6CgoKCgoKAvKiBNZWFzdXJlIHRoZSBsZW5ndGggb2YgdGhlIHF1ZXVlLiAqLwo+ICugoKCgoKCg\n"
- "d2hpbGUgKGRlc2NyICE9IGNhcmQtPnR4X2NoYWluLmhlYWQpIHsKPiAroKCgoKCgoKCgoKCgoKCg\n"
- "c3RhdHVzID0gZGVzY3ItPmRtYWNfY21kX3N0YXR1cyAmIFNQSURFUl9ORVRfREVTQ1JfTk9UX0lO\n"
- "X1VTRTsKPiAroKCgoKCgoKCgoKCgoKCgaWYgKHN0YXR1cyA9PSBTUElERVJfTkVUX0RFU0NSX05P\n"
- "VF9JTl9VU0UpCj4gK6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgYnJlYWs7Cj4gK6CgoKCgoKCgoKCg\n"
- "oKCgoGRlc2NyID0gZGVzY3ItPm5leHQ7Cj4gK6CgoKCgoKCgoKCgoKCgoGNudCsrOwo+ICugoKCg\n"
- "oKCgfQo+ICugoKCgoKCgaWYgKGNudCA9PSAwKQo+ICugoKCgoKCgoKCgoKCgoKByZXR1cm47Cj4g\n"
- "Kwo+ICugoKCgoKCgLyogU2V0IGxvdy13YXRlcm1hcmsgMy80dGgncyBvZiB0aGUgd2F5IGludG8g\n"
- "dGhlIHF1ZXVlLiAqLwo+ICugoKCgoKCgZGVzY3IgPSBjYXJkLT50eF9jaGFpbi50YWlsOwo+ICug\n"
- "oKCgoKCgY250ID0gKGNudCozKS80Owo+ICugoKCgoKCgZm9yIChpPTA7aTxjbnQ7IGkrKykKPiAr\n"
- "oKCgoKCgoKCgoKCgoKCgZGVzY3IgPSBkZXNjci0+bmV4dDsKCkkgd29uZGVyIGlmIGNhbGxpbmcg\n"
- "dGhpcyBmcmVxdWVudGx5IHJlc3VsdHMgaW4gYSBzaWduaWZpY2FudCBwcm9jZXNzaW5nCm92ZXJo\n"
- "ZWFkIGluIHRoZSBDUFUuIERvZXMgdGhlIHNwaWRlcl9uZXRfc2V0X2xvd193YXRlcm1hcmsgZnVu\n"
- "Y3Rpb24Kc2hvdyB1cCBpbiB5b3VyIHByb2ZpbGVzPwoKQSBtb3JlIGVmZmljaWVudCBpbXBsZW1l\n"
- "bnRhdGlvbiBtaWdodCBiZSB0byBtYXJrIG9uZSBkZXNjcmlwdG9yIHRoYXQKaXMgYXQgYSBmaXhl\n"
- "ZCBvZmZzZXQgZnJvbSB0aGUgVFggcXVldWUgdGFpbCwgc28gd2Ugb25seSBuZWVkIHRvIGRvCgpj\n"
- "YXJkLT5sb3dfd2F0ZXJtYXJrLT5uZXh0LT5kbWFjX2NtZF9zdGF0dXMgfD0gU1BJREVSX05FVF9E\n"
- "RVNDUl9UWERFU0ZMRzsKbWIoKTsKY2FyZC0+bG93X3dhdGVybWFyay0+ZG1hY19jbWRfc3RhdHVz\n"
- "ICY9IH5TUElERVJfTkVUX0RFU0NSX1RYREVTRkxHOwpjYXJkLT5sb3dfd2F0ZXJtYXJrID0gY2Fy\n"
- "ZC0+bG93X3dhdGVybWFyay0+bmV4dDsKCndoZW4gd2UgcXVldWUgYW5vdGhlciBmcmFtZSBmb3Ig\n"
- VFguCgoJQXJuZCA8PjwK
+ "On Saturday 19 August 2006 00:21, Linas Vepstas wrote:\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Measure the length of the queue. */\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240while (descr != card->tx_chain.head) {\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240status = descr->dmac_cmd_status & SPIDER_NET_DESCR_NOT_IN_USE;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (status == SPIDER_NET_DESCR_NOT_IN_USE)\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240break;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240descr = descr->next;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240cnt++;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (cnt == 0)\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
+ "> +\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Set low-watermark 3/4th's of the way into the queue. */\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240descr = card->tx_chain.tail;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240cnt = (cnt*3)/4;\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240for (i=0;i<cnt; i++)\n"
+ "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240descr = descr->next;\n"
+ "\n"
+ "I wonder if calling this frequently results in a significant processing\n"
+ "overhead in the CPU. Does the spider_net_set_low_watermark function\n"
+ "show up in your profiles?\n"
+ "\n"
+ "A more efficient implementation might be to mark one descriptor that\n"
+ "is at a fixed offset from the TX queue tail, so we only need to do\n"
+ "\n"
+ "card->low_watermark->next->dmac_cmd_status |= SPIDER_NET_DESCR_TXDESFLG;\n"
+ "mb();\n"
+ "card->low_watermark->dmac_cmd_status &= ~SPIDER_NET_DESCR_TXDESFLG;\n"
+ "card->low_watermark = card->low_watermark->next;\n"
+ "\n"
+ "when we queue another frame for TX.\n"
+ "\n"
+ "\tArnd <><"
 
-1dfb1f20da73b392bc6242404e12e327cfbeb2a837683f058a6f528872e30e27
+0d670a79cbae200725025422d840769a36086e9a077d6eec4fee0a10a024a4a6

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.