Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:sschapiro:openstack:upstream
gpxe
gpxe-Revert-Support-underlying-UNDI-devices-tha...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gpxe-Revert-Support-underlying-UNDI-devices-that-don-t-su.patch of Package gpxe
From 52947112cbda74b72d7c942f31270d287fb274c6 Mon Sep 17 00:00:00 2001 From: Eduardo Habkost <ehabkost@raisama.net> Date: Wed, 16 Feb 2011 17:30:49 -0200 Subject: [PATCH] Revert "Support underlying UNDI devices that don't support interrupts (v2)" RH-Reverts: ca83b1dafe5e20360221aa15758668fef41a6d64 RH-Reverts-patchwork-id: 16080 Bugzilla-related: 661840 Signed-off-by: Eduardo Habkost <ehabkost@raisama.net> --- src/arch/i386/drivers/net/undinet.c | 48 ++++++++++++---------------------- 1 files changed, 17 insertions(+), 31 deletions(-) diff --git a/src/arch/i386/drivers/net/undinet.c b/src/arch/i386/drivers/net/undinet.c index 7b6c242..d6db6f7 100644 --- a/src/arch/i386/drivers/net/undinet.c +++ b/src/arch/i386/drivers/net/undinet.c @@ -40,8 +40,6 @@ /** An UNDI NIC */ struct undi_nic { - /** Device supports IRQs */ - int irq_supported; /** Assigned IRQ number */ unsigned int irq; /** Currently processing ISR */ @@ -422,10 +420,8 @@ static void undinet_poll ( struct net_device *netdev ) { int rc; if ( ! undinic->isr_processing ) { - /* If interrupts are supported, then do nothing unless - * the ISR has been triggered. - */ - if ( undinic->irq_supported && ( ! undinet_isr_triggered() ) ){ + /* Do nothing unless ISR has been triggered */ + if ( ! undinet_isr_triggered() ) { /* Allow interrupt to occur */ __asm__ __volatile__ ( REAL_CODE ( "sti\n\t" "nop\n\t" @@ -529,12 +525,10 @@ static int undinet_open ( struct net_device *netdev ) { struct s_PXENV_UNDI_OPEN undi_open; int rc; - /* Hook interrupt service routine and enable interrupt if supported */ - if ( undinic->irq_supported ) { - undinet_hook_isr ( undinic->irq ); - enable_irq ( undinic->irq ); - send_eoi ( undinic->irq ); - } + /* Hook interrupt service routine and enable interrupt */ + undinet_hook_isr ( undinic->irq ); + enable_irq ( undinic->irq ); + send_eoi ( undinic->irq ); /* Set station address. Required for some PXE stacks; will * spuriously fail on others. Ignore failures. We only ever @@ -598,11 +592,9 @@ static void undinet_close ( struct net_device *netdev ) { undinet_call ( undinic, PXENV_UNDI_CLOSE, &undi_close, sizeof ( undi_close ) ); - /* Disable interrupt and unhook ISR if supported */ - if ( undinic->irq_supported ) { - disable_irq ( undinic->irq ); - undinet_unhook_isr ( undinic->irq ); - } + /* Disable interrupt and unhook ISR */ + disable_irq ( undinic->irq ); + undinet_unhook_isr ( undinic->irq ); DBGC ( undinic, "UNDINIC %p closed\n", undinic ); } @@ -698,8 +690,13 @@ int undinet_probe ( struct undi_device *undi ) { goto err_undi_get_information; memcpy ( netdev->ll_addr, undi_info.PermNodeAddress, ETH_ALEN ); undinic->irq = undi_info.IntNumber; - DBGC ( undinic, "UNDINIC %p has MAC address %s\n", - undinic, eth_ntoa ( netdev->hw_addr ) ); + if ( undinic->irq > IRQ_MAX ) { + DBGC ( undinic, "UNDINIC %p invalid IRQ %d\n", + undinic, undinic->irq ); + goto err_bad_irq; + } + DBGC ( undinic, "UNDINIC %p is %s on IRQ %d\n", + undinic, eth_ntoa ( netdev->ll_addr ), undinic->irq ); /* Get interface information */ memset ( &undi_iface, 0, sizeof ( undi_iface ) ); @@ -709,17 +706,6 @@ int undinet_probe ( struct undi_device *undi ) { goto err_undi_get_iface_info; DBGC ( undinic, "UNDINIC %p has type %s and link speed %d\n", undinic, undi_iface.IfaceType, undi_iface.LinkSpeed ); - if ( undi_iface.ServiceFlags & SUPPORTED_IRQ ) { - if ( undinic->irq > IRQ_MAX ) { - DBGC ( undinic, "UNDINIC %p has invalid IRQ %d\n", - undinic, undinic->irq ); - rc = -EINVAL; - goto err_bad_irq; - } - undinic->irq_supported = 1; - DBGC ( undinic, "UNDINIC %p uses IRQ %d\n", - undinic, undinic->irq ); - } if ( strncmp ( ( ( char * ) undi_iface.IfaceType ), "Etherboot", sizeof ( undi_iface.IfaceType ) ) == 0 ) { DBGC ( undinic, "UNDINIC %p Etherboot 5.4 workaround enabled\n", @@ -738,8 +724,8 @@ int undinet_probe ( struct undi_device *undi ) { return 0; err_register: - err_bad_irq: err_undi_get_iface_info: + err_bad_irq: err_undi_get_information: err_undi_initialize: /* Shut down UNDI stack */ -- 1.7.3.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor