All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Weil <weil@mail.berlios.de>
To: QEMU Developers <qemu-devel@nongnu.org>
Subject: [Qemu-devel] [PATCH 13/20] eepro100: Support RNR interrupt
Date: Sun, 14 Feb 2010 17:16:22 +0100	[thread overview]
Message-ID: <1266164189-21062-13-git-send-email-weil@mail.berlios.de> (raw)
In-Reply-To: <1266164189-21062-12-git-send-email-weil@mail.berlios.de>

The RNR interrupt is triggered under these conditions:

* the RU is not ready to receive a frame due to missing resources
* the RU is ready and a RU abort command was requested

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index b5bd05b..37176cd 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -120,7 +120,7 @@
 #define  RU_NOP         0x0000
 #define  RX_START       0x0001
 #define  RX_RESUME      0x0002
-#define  RX_ABORT       0x0004
+#define  RU_ABORT       0x0004
 #define  RX_ADDR_LOAD   0x0006
 #define  RX_RESUMENR    0x0007
 #define INT_MASK        0x0100
@@ -426,13 +426,11 @@ static void eepro100_fr_interrupt(EEPRO100State * s)
     eepro100_interrupt(s, 0x40);
 }
 
-#if 0
 static void eepro100_rnr_interrupt(EEPRO100State * s)
 {
     /* RU is not ready. */
     eepro100_interrupt(s, 0x10);
 }
-#endif
 
 static void eepro100_mdi_interrupt(EEPRO100State * s)
 {
@@ -1065,6 +1063,13 @@ static void eepro100_ru_command(EEPRO100State * s, uint8_t val)
         }
         set_ru_state(s, ru_ready);
         break;
+    case RU_ABORT:
+        /* RU abort. */
+        if (get_ru_state(s) == ru_ready) {
+            eepro100_rnr_interrupt(s);
+        }
+        set_ru_state(s, ru_idle);
+        break;
     case RX_ADDR_LOAD:
         /* Load RU base. */
         TRACE(OTHER, logout("val=0x%02x (RU base address)\n", val));
@@ -1747,6 +1752,8 @@ static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size
     if (get_ru_state(s) != ru_ready) {
         /* No resources available. */
         logout("no resources, state=%u\n", get_ru_state(s));
+        /* TODO: RNR interrupt only at first failed frame? */
+        eepro100_rnr_interrupt(s);
         s->statistics.rx_resource_errors++;
         //~ assert(!"no resources");
         return -1;
-- 
1.6.6.1

  reply	other threads:[~2010-02-14 16:18 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-14 16:15 [Qemu-devel] eepro100: New patch series adds full GPXE support Stefan Weil
2010-02-14 16:16 ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Stefan Weil
2010-02-14 16:16   ` [Qemu-devel] [PATCH 02/20] eepro100: Add missing SCB register names Stefan Weil
2010-02-14 16:16     ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
2010-02-14 16:16       ` [Qemu-devel] [PATCH 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
2010-02-14 16:16         ` [Qemu-devel] [PATCH 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
2010-02-14 16:16           ` [Qemu-devel] [PATCH 06/20] eepro100: Add TODO list Stefan Weil
2010-02-14 16:16             ` [Qemu-devel] [PATCH 07/20] eepro100: Update copyright notice Stefan Weil
2010-02-14 16:16               ` [Qemu-devel] [PATCH 08/20] eepro100: Add device descriptions Stefan Weil
2010-02-14 16:16                 ` [Qemu-devel] [PATCH 09/20] eepro100: Use symbolic names and BIT macros in binary operations Stefan Weil
2010-02-14 16:16                   ` [Qemu-devel] [PATCH 10/20] eepro100: Remove old unused code Stefan Weil
2010-02-14 16:16                     ` [Qemu-devel] [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
2010-02-14 16:16                       ` [Qemu-devel] [PATCH 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
2010-02-14 16:16                         ` Stefan Weil [this message]
2010-02-14 16:16                           ` [Qemu-devel] [PATCH 14/20] eepro100: Fix CU Start command Stefan Weil
2010-02-14 16:16                             ` [Qemu-devel] [PATCH 15/20] eepro100: Prettify code (no functional changes) Stefan Weil
2010-02-14 16:16                               ` [Qemu-devel] [PATCH 16/20] eepro100: Use tx.status Stefan Weil
2010-02-14 16:16                                 ` [Qemu-devel] [PATCH 17/20] eepro100: New function for reading command block Stefan Weil
2010-02-14 16:16                                   ` [Qemu-devel] [PATCH 18/20] eepro100: Add diagnose command Stefan Weil
2010-02-14 16:16                                     ` [Qemu-devel] [PATCH 19/20] eepro100: Remove C++ comments Stefan Weil
2010-02-14 16:16                                       ` [Qemu-devel] [PATCH 20/20] eepro100: Keep includes sorted Stefan Weil
2010-02-21 17:05                       ` [Qemu-devel] Re: [PATCH 11/20] eepro100: Use symbolic names for bits in EEPROM id Michael S. Tsirkin
2010-02-21 21:38                         ` Stefan Weil
2010-02-22  9:00                           ` Michael S. Tsirkin
2010-03-02 18:42                       ` [Qemu-devel] " Stefan Weil
2010-02-21 17:00           ` [Qemu-devel] Re: [PATCH 05/20] eepro100: Add all supported devices to pci.c Michael S. Tsirkin
2010-02-21 21:08             ` Stefan Weil
2010-03-03 11:51               ` Michael S. Tsirkin
2010-03-03 13:31                 ` Gerd Hoffmann
2010-03-03 13:33                   ` Michael S. Tsirkin
2010-03-03 18:53                     ` Stefan Weil
2010-03-04  8:56                       ` Gerd Hoffmann
2010-03-02 18:43       ` [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot Stefan Weil
2010-03-02 20:04         ` [Qemu-devel] " Michael S. Tsirkin
2010-02-19 21:05   ` [Qemu-devel] [PATCH 01/20] eepro100: Fix compiler errors from debug messages Anthony Liguori
2010-03-01 17:54     ` Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 " Stefan Weil
2010-03-03 11:52   ` [Qemu-devel] " Michael S. Tsirkin
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 02/20] eepro100: Add missing SCB register names Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 03/20] eepro100: Fix PXE boot Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 04/20] eepro100: Support gpxe boot for all eepro100 devices Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 05/20] eepro100: Add all supported devices to pci.c Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 06/20] eepro100: Add TODO list Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 07/20] eepro100: Update copyright notice Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 08/20] eepro100: Add device descriptions Stefan Weil
2010-03-03 11:49   ` [Qemu-devel] " Michael S. Tsirkin
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 09/20] eepro100: Use symbolic names and BIT macros in binary operations Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 10/20] eepro100: Remove old unused code Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 11/20] eepro100: Use symbolic names for bits in EEPROM id Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 12/20] eepro100: Replace variable name to fix a compiler warning Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 13/20] eepro100: Support RNR interrupt Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 14/20] eepro100: Fix CU Start command Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 15/20] eepro100: Prettify code (no functional changes) Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 16/20] eepro100: Use tx.status Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 17/20] eepro100: New function for reading command block Stefan Weil
2010-03-03 11:44   ` [Qemu-devel] " Michael S. Tsirkin
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 18/20] eepro100: Add diagnose command Stefan Weil
2010-03-02 21:37 ` [Qemu-devel] [PATCHv3 19/20] eepro100: Remove C++ comments Stefan Weil
2010-03-03 11:47   ` [Qemu-devel] " Michael S. Tsirkin
2010-03-03 19:15     ` Stefan Weil
2010-03-03 19:59       ` Michael S. Tsirkin
2010-03-02 21:38 ` [Qemu-devel] [PATCHv3 20/20] eepro100: Keep includes sorted Stefan Weil

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=1266164189-21062-13-git-send-email-weil@mail.berlios.de \
    --to=weil@mail.berlios.de \
    --cc=qemu-devel@nongnu.org \
    /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.