Post Reply 
 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ipxe timeout
2014-05-30, 00:53 (This post was last modified: 2014-05-30 12:11 by mastacontrola.)
Post: #10
RE: ipxe timeout
I think I've found out what and/or possibly why 040ee119 is occurring.

While we initially suspected it was drivers, today I spent most of the day building and testing the undionly.kpxe (problem still occurs on vbox, but easily fixed with ipxe.{.,k,kk}pxe.

I ran through git bisect and it reports to me:
Code:
69313edad85f8958acc8a47272b3c3da494835ec is the first bad commit
commit 69313edad85f8958acc8a47272b3c3da494835ec
Author: Michael Brown <mcb30@ipxe.org>
Date:   Sat May 3 12:53:20 2014 +0100

    [undi] Place an upper limit on the number of PXENV_UNDI_ISR calls per poll
    
    PXENV_UNDI_ISR calls may implicitly refill the underlying receive
    ring, and so could continue to retrieve packets indefinitely.  Place
    an upper limit on the number of calls to PXENV_UNDI_ISR per call to
    undinet_poll().
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>

:040000 040000 2333a1b71a6fe8fb3d1d9f9698c28eef7c28679c 758241dde56deccc902e12cc4990c985d0bc9d36 M      src

Looking at the commit within reveal's that only one file was edited for this commit

The exact changes were:
Code:
index d7a632d..82dd8d2 100644 (file)
--- a/src/arch/i386/drivers/net/undinet.c
+++ b/src/arch/i386/drivers/net/undinet.c
@@ -72,6 +72,9 @@ struct undi_nic {
/** Delay between retries of PXENV_UNDI_INITIALIZE */
#define UNDI_INITIALIZE_RETRY_DELAY_MS 200

+/** Maximum number of calls to PXENV_UNDI_ISR per poll */
+#define UNDI_POLL_QUOTA 4
+
/** Alignment of received frame payload */
#define UNDI_RX_ALIGN 16

@@ -328,6 +331,7 @@ static void undinet_poll ( struct net_device *netdev ) {
        struct undi_nic *undinic = netdev->priv;
        struct s_PXENV_UNDI_ISR undi_isr;
        struct io_buffer *iobuf = NULL;
+       unsigned int quota = UNDI_POLL_QUOTA;
        size_t len;
        size_t reserve_len;
        size_t frag_len;
@@ -366,7 +370,7 @@ static void undinet_poll ( struct net_device *netdev ) {
        }

        /* Run through the ISR loop */
-       while ( 1 ) {
+       while ( quota-- ) {
                profile_start ( &undinet_isr_call_profiler );
                if ( ( rc = pxeparent_call ( undinet_entry, PXENV_UNDI_ISR,
                                             &undi_isr,
While most of the people using this aren't having problems, the problems seem to occur most consistently on intel/broadcom physical NIC's and of course VBox as I've told above.

This leads me to think the two lines aren't working properly on these particular nics. Maybe it doesn't like the way ISR's are, now, being handled?

I'm going to test more tomorrow with removing these lines, and hopefully all work be more easily identifiable.
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
ixpe time-out - oneindelijk - 2014-02-12, 20:20
RE: ipxe timeout - robinsmidsrod - 2014-02-14, 09:56
RE: ipxe timeout - oneindelijk - 2014-02-14, 13:25
RE: ipxe timeout - robinsmidsrod - 2014-02-20, 09:29
RE: ipxe timeout - oneindelijk - 2014-02-20, 10:05
RE: ipxe timeout - mastacontrola - 2014-05-16, 02:00
RE: ipxe timeout - robinsmidsrod - 2014-05-19, 08:47
RE: ipxe timeout - mastacontrola - 2014-05-20, 01:55
RE: ipxe timeout - mastacontrola - 2014-05-30 00:53
RE: ipxe timeout - TheUltimateUnltd - 2014-05-19, 12:55
RE: ipxe timeout - mastacontrola - 2014-05-30, 12:18
RE: ipxe timeout - mastacontrola - 2014-05-30, 17:11
RE: ipxe timeout - mcb30 - 2014-06-02, 10:49
RE: ipxe timeout - mastacontrola - 2014-06-02, 12:24
RE: ipxe timeout - mastacontrola - 2014-06-02, 16:41
RE: ipxe timeout - robinsmidsrod - 2014-06-02, 10:39



User(s) browsing this thread: 3 Guest(s)