Hello&nbsp;<div>I used gdb &nbsp;serial debug gpxe1.0.1 in my&nbsp;board lan rtl8111b. I used undionly for boot file . After PXE ,Ctrl_B break in the gpxe shell ,used autoboot for debug.In the debugger ,I set some breakpoints, such as dhcp_tx, dhcp_rx_offer, ipv4_tx. It could break in dhcp_tx after dhcp net0(XXX).</div>
<div><font class="Apple-style-span" face="&#39;Times New Roman&#39;" size="4"><span class="Apple-style-span" style="font-size: 16px; line-height: 24px;">Debug info:</span></font></div><div><font class="Apple-style-span" face="&#39;Times New Roman&#39;" size="4"><span class="Apple-style-span" style="font-size: 16px; line-height: 24px;"><div>
Breakpoint 5, dhcp_tx (dhcp=0x152c4) at net/udp/dhcp.c:1208</div><div>1208<span class="Apple-tab-span" style="white-space:pre">        </span>static int dhcp_tx ( struct dhcp_session *dhcp ) {</div><div>(gdb) n</div><div>1213<span class="Apple-tab-span" style="white-space:pre">                        </span>.netdev = dhcp-&gt;netdev,</div>
<div>(gdb) n</div><div>1216<span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><div>(gdb) n</div><div>1218<span class="Apple-tab-span" style="white-space:pre">                </span>uint8_t msgtype = dhcp-&gt;state-&gt;tx_msgtype;</div>
<div>(gdb) n</div><div>1225<span class="Apple-tab-span" style="white-space:pre">                </span>start_timer ( &amp;dhcp-&gt;timer );</div><div>(gdb) p msgtype</div><div>$3 = 1 &#39;\001&#39;</div><div>(gdb) n</div><div>1228<span class="Apple-tab-span" style="white-space:pre">                </span>iobuf = xfer_alloc_iob ( &amp;dhcp-&gt;xfer, DHCP_MIN_LEN );</div>
<div>(gdb) n</div><div>1229<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ! iobuf )</div><div>(gdb) n</div><div>1233<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = dhcp_create_request ( &amp;dhcppkt, dhcp-&gt;netdev, msgtype,</div>
<div>(gdb) n</div><div>dhcp_create_request (dhcppkt=0x36120, netdev=0x151a4, msgtype=1, ciaddr=...,&nbsp;</div><div>&nbsp;&nbsp; &nbsp;data=0x15bf8, max_len=552) at net/udp/dhcp.c:1109</div><div>1109<span class="Apple-tab-span" style="white-space:pre">                                </span> &nbsp;struct in_addr ciaddr, void *data, size_t max_len ) {</div>
<div>(gdb) n</div><div>1120<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = dhcp_create_packet ( dhcppkt, netdev, msgtype,</div><div>(gdb) n</div><div>1130<span class="Apple-tab-span" style="white-space:pre">                </span>dhcppkt-&gt;dhcphdr-&gt;ciaddr = ciaddr;</div>
<div>(gdb) n</div><div>1135<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = dhcppkt_store ( dhcppkt, DHCP_EB_ENCAP, dhcp_features,</div><div>(gdb) n</div><div>1143<span class="Apple-tab-span" style="white-space:pre">                </span>fetch_setting ( &amp;netdev-&gt;settings.settings, &amp;busid_setting, &amp;dhcp_desc,</div>
<div>(gdb) n</div><div>1145<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = dhcppkt_store ( dhcppkt, DHCP_EB_BUS_ID, &amp;dhcp_desc,</div><div>(gdb) n</div><div>1155<span class="Apple-tab-span" style="white-space:pre">                </span>client_id.ll_proto = ntohs ( netdev-&gt;ll_protocol-&gt;ll_proto );</div>
</div><div><div>(gdb) n</div><div>1156<span class="Apple-tab-span" style="white-space:pre">                </span>ll_addr_len = netdev-&gt;ll_protocol-&gt;ll_addr_len;</div><div>(gdb) n</div><div>1158<span class="Apple-tab-span" style="white-space:pre">                </span>memcpy ( client_id.ll_addr, netdev-&gt;ll_addr, ll_addr_len );</div>
</div><div><div>(gdb) n</div><div>1159<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = dhcppkt_store ( dhcppkt, DHCP_CLIENT_ID, &amp;client_id,</div></div><div><div>(gdb) n</div><div>1167<span class="Apple-tab-span" style="white-space:pre">                </span>client_uuid.type = DHCP_CLIENT_UUID_TYPE;</div>
<div>(gdb) n</div><div>1168<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( len = fetch_uuid_setting ( NULL, &amp;uuid_setting,</div></div><div><div>(gdb) n</div><div>1170<span class="Apple-tab-span" style="white-space:pre">                        </span>if ( ( rc = dhcppkt_store ( dhcppkt, DHCP_CLIENT_UUID,</div>
<div>(gdb) n</div><div>1180<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( len = fetch_setting_len ( NULL, &amp;user_class_setting ) ) &gt;= 0 ) {</div><div>(gdb) n</div><div>1194<span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div>(gdb) n</div><div>dhcp_tx (dhcp=0x152c4) at net/udp/dhcp.c:1242</div><div>1242<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = dhcp-&gt;state-&gt;tx ( dhcp, &amp;dhcppkt, &amp;peer ) ) != 0 ) {</div>
<div>(gdb) n</div><div>1249<span class="Apple-tab-span" style="white-space:pre">                </span>iob_put ( iobuf, dhcppkt.len );</div><div>(gdb) n</div><div>1250<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = xfer_deliver_iob_meta ( &amp;dhcp-&gt;xfer, iob_disown ( iobuf ),</div>
<div>(gdb) n</div><div><br></div><div>Breakpoint 4, ipv4_tx (iobuf=0x15e20, tcpip_protocol=0x150b8, st_src=0x152e8,&nbsp;</div><div>&nbsp;&nbsp; &nbsp;st_dest=0x144d8, netdev=0x151a4, trans_csum=0x15bf6) at net/ipv4.c:306</div><div>306<span class="Apple-tab-span" style="white-space:pre">                        </span> &nbsp; &nbsp; uint16_t *trans_csum ) {</div>
<div>(gdb) n</div><div>307<span class="Apple-tab-span" style="white-space:pre">                </span>struct iphdr *iphdr = iob_push ( iobuf, sizeof ( *iphdr ) );</div><div>(gdb) n</div><div>316<span class="Apple-tab-span" style="white-space:pre">                </span>memset ( iphdr, 0, sizeof ( *iphdr ) );</div>
<div>(gdb) n</div><div>317<span class="Apple-tab-span" style="white-space:pre">                </span>iphdr-&gt;verhdrlen = ( IP_VER | ( sizeof ( *iphdr ) / 4 ) );</div></div><div><div>(gdb) n</div><div>318<span class="Apple-tab-span" style="white-space:pre">                </span>iphdr-&gt;service = IP_TOS;</div>
<div>(gdb) n</div><div>319<span class="Apple-tab-span" style="white-space:pre">                </span>iphdr-&gt;len = htons ( iob_len ( iobuf ) );<span class="Apple-tab-span" style="white-space:pre">        </span></div><div>(gdb) n</div><div>
320<span class="Apple-tab-span" style="white-space:pre">                </span>iphdr-&gt;ident = htons ( ++next_ident );</div><div>(gdb) n</div><div>321<span class="Apple-tab-span" style="white-space:pre">                </span>iphdr-&gt;ttl = IP_TTL;</div>
<div>(gdb) n</div><div>322<span class="Apple-tab-span" style="white-space:pre">                </span>iphdr-&gt;protocol = tcpip_protocol-&gt;tcpip_proto;</div><div>(gdb) n</div><div>323<span class="Apple-tab-span" style="white-space:pre">                </span>iphdr-&gt;dest = sin_dest-&gt;sin_addr;</div>
<div>(gdb) n</div><div>326<span class="Apple-tab-span" style="white-space:pre">                </span>next_hop = iphdr-&gt;dest;</div><div>(gdb) n</div><div>327<span class="Apple-tab-span" style="white-space:pre">                </span>if ( sin_src )</div>
<div>(gdb) n</div><div>328<span class="Apple-tab-span" style="white-space:pre">                        </span>iphdr-&gt;src = sin_src-&gt;sin_addr;</div></div><div><div>(gdb) n</div><div>329<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( next_hop.s_addr != INADDR_BROADCAST ) &amp;&amp;</div>
<div>(gdb) n</div><div>335<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ! netdev ) {</div><div>(gdb) n</div><div>342<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = ipv4_ll_addr ( next_hop, iphdr-&gt;src, netdev,</div>
<div>(gdb) n</div><div>350<span class="Apple-tab-span" style="white-space:pre">                </span>if ( trans_csum )</div><div>(gdb) n</div><div>351<span class="Apple-tab-span" style="white-space:pre">                        </span>*trans_csum = ipv4_pshdr_chksum ( iobuf, *trans_csum );</div>
<div>(gdb) n</div><div>352<span class="Apple-tab-span" style="white-space:pre">                </span>iphdr-&gt;chksum = tcpip_chksum ( iphdr, sizeof ( *iphdr ) );</div></div><div><div>(gdb) n</div><div>361<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = net_tx ( iobuf, netdev, &amp;ipv4_protocol, ll_dest ) ) != 0 ) {</div>
<div>(gdb) n</div><div>net_tx (iobuf=0x15e20, netdev=0x151a4, net_protocol=0x14d9c, ll_dest=0x36084)</div><div>&nbsp;&nbsp; &nbsp;at net/netdevice.c:540</div><div>540<span class="Apple-tab-span" style="white-space:pre">                </span> &nbsp; &nbsp; struct net_protocol *net_protocol, const void *ll_dest ) {</div>
<div>(gdb) n</div><div>541<span class="Apple-tab-span" style="white-space:pre">                </span>struct ll_protocol *ll_protocol = netdev-&gt;ll_protocol;</div><div>(gdb) n</div><div>549<span class="Apple-tab-span" style="white-space:pre">                </span>netdev_poll ( netdev );</div>
<div>(gdb) n</div><div>552<span class="Apple-tab-span" style="white-space:pre">                </span>if ( ( rc = ll_protocol-&gt;push ( netdev, iobuf, ll_dest, netdev-&gt;ll_addr,</div><div>(gdb) n</div><div>eth_push (netdev=0x151a4, iobuf=0x15e20, ll_dest=0x36084, ll_source=0x151d8,&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;net_proto=8) at net/ethernet.c:55</div><div>55<span class="Apple-tab-span" style="white-space:pre">                        </span> &nbsp; &nbsp; &nbsp;const void *ll_source, uint16_t net_proto ) {</div><div>(gdb) n</div><div>56<span class="Apple-tab-span" style="white-space:pre">                </span>struct ethhdr *ethhdr = iob_push ( iobuf, sizeof ( *ethhdr ) );</div>
<div>(gdb) n</div><div>59<span class="Apple-tab-span" style="white-space:pre">                </span>memcpy ( ethhdr-&gt;h_dest, ll_dest, ETH_ALEN );</div><div>(gdb) n</div><div>60<span class="Apple-tab-span" style="white-space:pre">                </span>memcpy ( ethhdr-&gt;h_source, ll_source, ETH_ALEN );</div>
<div>(gdb) n</div><div>61<span class="Apple-tab-span" style="white-space:pre">                </span>ethhdr-&gt;h_protocol = net_proto;</div><div>(gdb) n</div><div>64<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>
(gdb) n</div><div>net_tx (iobuf=0x15e20, netdev=0x151a4, net_protocol=0x14d9c, ll_dest=0x36084)</div><div>&nbsp;&nbsp; &nbsp;at net/netdevice.c:559</div><div>559<span class="Apple-tab-span" style="white-space:pre">                </span>return netdev_tx ( netdev, iobuf );</div>
<div>(gdb) n</div><div>560<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>(gdb) n</div><div>ipv4_tx (iobuf=0x15e20, tcpip_protocol=&lt;value optimized out&gt;,&nbsp;</div><div>&nbsp;&nbsp; &nbsp;st_src=&lt;value optimized out&gt;, st_dest=0x144d8, netdev=0x151a4,&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;trans_csum=0x15bf6) at net/ipv4.c:372</div><div>372<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>(gdb) n</div><div>tcpip_tx (iobuf=&lt;value optimized out&gt;, tcpip_protocol=&lt;value optimized out&gt;,&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;st_src=&lt;value optimized out&gt;, st_dest=0x144d8, netdev=0x151a4,&nbsp;</div><div>&nbsp;&nbsp; &nbsp;trans_csum=0x15bf6) at net/tcpip.c:80</div><div>80<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>(gdb) n</div>
<div>udp_xfer_deliver_iob (xfer=0x15bf0, iobuf=0x15e20, meta=&lt;value optimized out&gt;)</div><div>&nbsp;&nbsp; &nbsp;at net/udp.c:409</div><div>409<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>(gdb) n</div><div>
xfer_deliver_iob_meta (xfer=&lt;value optimized out&gt;,&nbsp;</div><div>&nbsp;&nbsp; &nbsp;iobuf=&lt;value optimized out&gt;, meta=&lt;value optimized out&gt;) at core/xfer.c:162</div><div>162<span class="Apple-tab-span" style="white-space:pre">                </span>xfer_put ( dest );</div>
<div>(gdb) n</div><div>164<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>(gdb) n</div><div>dhcp_tx (dhcp=0x152c4) at net/udp/dhcp.c:1258</div><div>1258<span class="Apple-tab-span" style="white-space:pre">                </span>free_iob ( iobuf );</div>
<div>(gdb) n</div><div>1260<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>(gdb) n</div><div>dhcp_timer_expired (timer=&lt;value optimized out&gt;, fail=&lt;value optimized out&gt;)</div><div>&nbsp;&nbsp; &nbsp;at net/udp/dhcp.c:1364</div>
<div>1364<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>(gdb) n</div><div>retry_step (process=&lt;value optimized out&gt;) at net/retry.c:181</div><div>181<span class="Apple-tab-span" style="white-space:pre">                </span>list_for_each_entry_safe ( timer, tmp, &amp;timers, list ) {</div>
<div>(gdb) n</div><div>186<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>(gdb) n</div><div>monojob_wait (string=&lt;value optimized out&gt;) at core/monojob.c:76</div><div>76<span class="Apple-tab-span" style="white-space:pre">                        </span>if ( iskey() ) {</div>
<div>(gdb) n</div><div>87<span class="Apple-tab-span" style="white-space:pre">                        </span>elapsed = ( currticks() - last_progress_dot );</div><div>(gdb) n</div><div>88<span class="Apple-tab-span" style="white-space:pre">                        </span>if ( elapsed &gt;= TICKS_PER_SEC ) {</div>
<div>(gdb) n</div><div>74<span class="Apple-tab-span" style="white-space:pre">                </span>while ( monojob_rc == -EINPROGRESS ) {</div><div>(gdb) n</div><div>75<span class="Apple-tab-span" style="white-space:pre">                        </span>step();</div>
<div>(gdb) c</div><div>Continuing.</div></div><div>Only break in xx_tx,but not break in xx_rx. I used wireshark &nbsp;in &nbsp;the server to moniter, found 4 times dhcp disocver and dhcp offer, and then timeout. Those debug infos are enough. Give some ideas for help me, thanks.</div>
</span></font></div><div><font class="Apple-style-span" face="&#39;Times New Roman&#39;" size="4"><span class="Apple-style-span" style="font-size: 16px; line-height: 24px; "><br></span></font></div><div><br><div class="gmail_quote">
在 2010年8月12日 下午5:15,kun zhu <span dir="ltr">&lt;<a href="mailto:bozer1228@gmail.com">bozer1228@gmail.com</a>&gt;</span>写道:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Hello once more<br></div></blockquote><div><div></div><div class="h5"><div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><br>
</div><div class="gmail_quote">2010/7/29 Thomas Miletich <span dir="ltr">&lt;<a href="mailto:thomas.miletich@gmail.com" target="_blank">thomas.miletich@gmail.com</a>&gt;</span><div><div></div><div><br>
<blockquote style="border-left:#ccc 1px solid;margin:0px 0px 0px 0.8ex;padding-left:1ex" class="gmail_quote">Hello once more<br>after reading your mail again I noticed that you say DHCP and TFTP<br>work is done, and then gPXE starts. Does that mean you&#39;re using<br>


&#39;undionly.kpxe&#39;? If that&#39;s the case we will have to look in a<br>different direction to find the problem.<br><br>--<br><font color="#888888">Thomas<br></font>
<div>
<div></div>
<div><br>On Thu, Jul 29, 2010 at 11:50 AM, Thomas Miletich<br>&lt;<a href="mailto:thomas.miletich@gmail.com" target="_blank">thomas.miletich@gmail.com</a>&gt; wrote:<br>&gt; Hello<br>&gt; from a quick comparison between the gPXE and linux driver I can&#39;t see<br>


&gt; any differences in the handling of 8111B specific things. As the<br>&gt; non-variant-specific code in the r8169 driver is well tested I don&#39;t<br>&gt; know what could be the problem.<br>&gt;<br>&gt; To give us an idea about the problem we need more information from the driver.<br>


&gt;<br>&gt; If you have another computer and a serial cable you can enable serial<br>&gt; console output by editing &#39;src/config/console.h&#39;.<br>&gt; In this file please replace &quot;//#define &nbsp;CONSOLE_SERIAL&quot; with<br>


&gt; &quot;#define &nbsp; &nbsp; &nbsp; &nbsp;CONSOLE_SERIAL&quot;.<br>&gt;<br>&gt; You can enable debugging output from the driver by building gPXE with<br>&gt; this command:<br>&gt;<br>&gt; make bin/r8169.dsk DEBUG=r8169<br>&gt;<br>&gt; (adjust &#39;bin/r8169.dsk&#39; to the image type you&#39;re using)<br>


&gt;<br>&gt; Now capture the output from gPXE on the other computer using some<br>&gt; terminal program(default settings are 115200 8N1)<br>&gt; Please send us the capture so we can look into the problem.<br>&gt;<br>&gt; --<br>


&gt; Thomas<br>&gt;<br>&gt; On Thu, Jul 29, 2010 at 10:26 AM, 朱堃 &lt;<a href="mailto:bozer1228@gmail.com" target="_blank">bozer1228@gmail.com</a>&gt; wrote:<br>&gt;&gt; I have a&nbsp;motherboard with&nbsp;onboard LAN RTL8111B.This device is work well in<br>


&gt;&gt; windows xp.&nbsp;I run it with gPXE . I get error.&nbsp;&nbsp;I run Wireshark to monitor<br>&gt;&gt; network in the server, DHCP ,TFTP work done, gPXE start &nbsp;work. In network<br>&gt;&gt; moniter , it show repeat arp request and reply.&nbsp;In gpxe , i found netdevice<br>


&gt;&gt; can transmit packet, but can&#39;t not receive packet.gPXE is not support<br>&gt;&gt; RTL8111B?<br>&gt;&gt;<br>&gt;&gt; _______________________________________________<br>&gt;&gt; gPXE-devel mailing list<br>&gt;&gt; <a href="mailto:gPXE-devel@etherboot.org" target="_blank">gPXE-devel@etherboot.org</a><br>


&gt;&gt; <a href="http://etherboot.org/mailman/listinfo/gpxe-devel" target="_blank">http://etherboot.org/mailman/listinfo/gpxe-devel</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;<br></div></div></blockquote></div></div></div><br>
</blockquote></div></div></div><br>
</blockquote></div><br></div>