From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ngh9J-0005xi-SP for qemu-devel@nongnu.org; Sun, 14 Feb 2010 11:16:45 -0500 Received: from [199.232.76.173] (port=43057 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ngh9I-0005xQ-DT for qemu-devel@nongnu.org; Sun, 14 Feb 2010 11:16:44 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Ngh9F-00021h-61 for qemu-devel@nongnu.org; Sun, 14 Feb 2010 11:16:44 -0500 Received: from moutng.kundenserver.de ([212.227.17.10]:57068) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ngh9E-00021N-9M for qemu-devel@nongnu.org; Sun, 14 Feb 2010 11:16:40 -0500 From: Stefan Weil Date: Sun, 14 Feb 2010 17:16:12 +0100 Message-Id: <1266164189-21062-3-git-send-email-weil@mail.berlios.de> In-Reply-To: <1266164189-21062-2-git-send-email-weil@mail.berlios.de> References: <4B7821AC.6080400@mail.berlios.de> <1266164189-21062-1-git-send-email-weil@mail.berlios.de> <1266164189-21062-2-git-send-email-weil@mail.berlios.de> Subject: [Qemu-devel] [PATCH 03/20] eepro100: Fix PXE boot List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: QEMU Developers The phy handling was wrong for PXE, GPXE boot: GPXE's eepro100 driver did not detect a valid link. This is fixed here. Signed-off-by: Stefan Weil --- hw/eepro100.c | 20 ++++++++++++++------ 1 files changed, 14 insertions(+), 6 deletions(-) diff --git a/hw/eepro100.c b/hw/eepro100.c index 124bc49..994722d 100644 --- a/hw/eepro100.c +++ b/hw/eepro100.c @@ -20,7 +20,7 @@ * along with this program; if not, see . * * Tested features (i82559): - * PXE boot (i386) no valid link + * PXE boot (i386) ok * Linux networking (i386) ok * * Untested: @@ -33,10 +33,6 @@ * Open Source Software Developer Manual */ -#if defined(TARGET_I386) -# warning "PXE boot still not working!" -#endif - #include /* offsetof */ #include #include "hw.h" @@ -243,6 +239,17 @@ typedef struct { bool has_extended_tcb_support; } EEPRO100State; +/* Word indices in EEPROM. */ +typedef enum { + eeprom_cnfg_mdix = 0x03, + eeprom_id = 0x05, + eeprom_phy_id = 0x06, + eeprom_vendor_id = 0x0c, + eeprom_config_asf = 0x0d, + eeprom_device_id = 0x23, + eeprom_smbus_addr = 0x90, +} EEPROMOffset; + /* Default values for MDI (PHY) registers */ static const uint16_t eepro100_mdi_default[] = { /* MDI Registers 0 - 6, 7 */ @@ -632,9 +639,10 @@ static void nic_selective_reset(EEPRO100State * s) uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom); //~ eeprom93xx_reset(s->eeprom); memcpy(eeprom_contents, s->conf.macaddr.a, 6); - eeprom_contents[0xa] = 0x4000; + eeprom_contents[eeprom_id] = 0x4000; if (s->device == i82557B || s->device == i82557C) eeprom_contents[5] = 0x0100; + eeprom_contents[eeprom_phy_id] = 1; uint16_t sum = 0; for (i = 0; i < EEPROM_SIZE - 1; i++) { sum += eeprom_contents[i]; -- 1.6.6.1