qemu-devel.nongnu.org archive mirror
 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 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).