Day 1 ( July 25 )

Some RX ring code reworking. Code simplified and functions moved from tg3_hw.c to the more appropriate tg3_main.c.

Day 2 ( July 26 )

Little coding today. Most of the time was spent verifying that we do things correctly by reading the datasheet, linux driver and etherboot driver. Added a missing function that sets thresholds for RX indications.

Day 3 ( July 27 )

Again more work on the RX ring handling, which is now implemented in a way I think it should work. I discovered some sort of memory corruption issue that freezes gPXE on all test machines when certain packets are received, and tried to debug this issue.

Day 4 ( July 28 )

Debugging obscure freeze issue. I found out that the card doesn't freeze if I set the data length field to 0 in the rx descriptor. It freezes if I use the expected value(1536 bytes). It also freezes on packet RX if I don't allocate any io_buffers and leave the DMA addresses to 0, when the length field is 1536. This happens if I connect the test machine to my development workstation, and do a DHCP request on the _workstation_, so gPXE receives a DHCP request. I did this as a test and gPXE freezes as soon as the packets leave the wire on the workstation. It does neither freeze, nor properly receive packets when connected to a real DHCP server that responds with a DHCP offer through a switch.

QR Code
QR Code soc:2011:meteger:journal:week10 (generated for current page)