diff options
author | RajithaY <rajithax.yerrumsetty@intel.com> | 2017-04-25 03:31:15 -0700 |
---|---|---|
committer | Rajitha Yerrumchetty <rajithax.yerrumsetty@intel.com> | 2017-05-22 06:48:08 +0000 |
commit | bb756eebdac6fd24e8919e2c43f7d2c8c4091f59 (patch) | |
tree | ca11e03542edf2d8f631efeca5e1626d211107e3 /qemu/roms/ipxe/src/usr/ifmgmt.c | |
parent | a14b48d18a9ed03ec191cf16b162206998a895ce (diff) |
Adding qemu as a submodule of KVMFORNFV
This Patch includes the changes to add qemu as a submodule to
kvmfornfv repo and make use of the updated latest qemu for the
execution of all testcase
Change-Id: I1280af507a857675c7f81d30c95255635667bdd7
Signed-off-by:RajithaY<rajithax.yerrumsetty@intel.com>
Diffstat (limited to 'qemu/roms/ipxe/src/usr/ifmgmt.c')
-rw-r--r-- | qemu/roms/ipxe/src/usr/ifmgmt.c | 294 |
1 files changed, 0 insertions, 294 deletions
diff --git a/qemu/roms/ipxe/src/usr/ifmgmt.c b/qemu/roms/ipxe/src/usr/ifmgmt.c deleted file mode 100644 index aefdaa45d..000000000 --- a/qemu/roms/ipxe/src/usr/ifmgmt.c +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Copyright (C) 2007 Michael Brown <mbrown@fensystems.co.uk>. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - * - * You can also choose to distribute this program under the terms of - * the Unmodified Binary Distribution Licence (as given in the file - * COPYING.UBDL), provided that you have satisfied its requirements. - */ - -FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); - -#include <string.h> -#include <stdio.h> -#include <unistd.h> -#include <errno.h> -#include <ipxe/console.h> -#include <ipxe/netdevice.h> -#include <ipxe/device.h> -#include <ipxe/job.h> -#include <ipxe/monojob.h> -#include <ipxe/timer.h> -#include <usr/ifmgmt.h> - -/** @file - * - * Network interface management - * - */ - -/** Default time to wait for link-up */ -#define LINK_WAIT_TIMEOUT ( 15 * TICKS_PER_SEC ) - -/** Default unsuccessful configuration status code */ -#define EADDRNOTAVAIL_CONFIG __einfo_error ( EINFO_EADDRNOTAVAIL_CONFIG ) -#define EINFO_EADDRNOTAVAIL_CONFIG \ - __einfo_uniqify ( EINFO_EADDRNOTAVAIL, 0x01, \ - "No configuration methods succeeded" ) - -/** - * Open network device - * - * @v netdev Network device - * @ret rc Return status code - */ -int ifopen ( struct net_device *netdev ) { - int rc; - - if ( ( rc = netdev_open ( netdev ) ) != 0 ) { - printf ( "Could not open %s: %s\n", - netdev->name, strerror ( rc ) ); - return rc; - } - - return 0; -} - -/** - * Close network device - * - * @v netdev Network device - */ -void ifclose ( struct net_device *netdev ) { - netdev_close ( netdev ); -} - -/** - * Print network device error breakdown - * - * @v stats Network device statistics - * @v prefix Message prefix - */ -static void ifstat_errors ( struct net_device_stats *stats, - const char *prefix ) { - unsigned int i; - - for ( i = 0 ; i < ( sizeof ( stats->errors ) / - sizeof ( stats->errors[0] ) ) ; i++ ) { - if ( stats->errors[i].count ) - printf ( " [%s: %d x \"%s\"]\n", prefix, - stats->errors[i].count, - strerror ( stats->errors[i].rc ) ); - } -} - -/** - * Print status of network device - * - * @v netdev Network device - */ -void ifstat ( struct net_device *netdev ) { - printf ( "%s: %s using %s on %s (%s)\n" - " [Link:%s%s, TX:%d TXE:%d RX:%d RXE:%d]\n", - netdev->name, netdev_addr ( netdev ), - netdev->dev->driver_name, netdev->dev->name, - ( netdev_is_open ( netdev ) ? "open" : "closed" ), - ( netdev_link_ok ( netdev ) ? "up" : "down" ), - ( netdev_link_blocked ( netdev ) ? " (blocked)" : "" ), - netdev->tx_stats.good, netdev->tx_stats.bad, - netdev->rx_stats.good, netdev->rx_stats.bad ); - if ( ! netdev_link_ok ( netdev ) ) { - printf ( " [Link status: %s]\n", - strerror ( netdev->link_rc ) ); - } - ifstat_errors ( &netdev->tx_stats, "TXE" ); - ifstat_errors ( &netdev->rx_stats, "RXE" ); -} - -/** Network device poller */ -struct ifpoller { - /** Job control interface */ - struct interface job; - /** Network device */ - struct net_device *netdev; - /** Network device configurator (if applicable) */ - struct net_device_configurator *configurator; - /** - * Check progress - * - * @v ifpoller Network device poller - * @ret ongoing_rc Ongoing job status code (if known) - */ - int ( * progress ) ( struct ifpoller *ifpoller ); -}; - -/** - * Report network device poller progress - * - * @v ifpoller Network device poller - * @v progress Progress report to fill in - * @ret ongoing_rc Ongoing job status code (if known) - */ -static int ifpoller_progress ( struct ifpoller *ifpoller, - struct job_progress *progress __unused ) { - - /* Hand off to current progress checker */ - return ifpoller->progress ( ifpoller ); -} - -/** Network device poller operations */ -static struct interface_operation ifpoller_job_op[] = { - INTF_OP ( job_progress, struct ifpoller *, ifpoller_progress ), -}; - -/** Network device poller descriptor */ -static struct interface_descriptor ifpoller_job_desc = - INTF_DESC ( struct ifpoller, job, ifpoller_job_op ); - -/** - * Poll network device until completion - * - * @v netdev Network device - * @v configurator Network device configurator (if applicable) - * @v timeout Timeout period, in ticks - * @v progress Method to check progress - * @ret rc Return status code - */ -static int ifpoller_wait ( struct net_device *netdev, - struct net_device_configurator *configurator, - unsigned long timeout, - int ( * progress ) ( struct ifpoller *ifpoller ) ) { - static struct ifpoller ifpoller = { - .job = INTF_INIT ( ifpoller_job_desc ), - }; - - ifpoller.netdev = netdev; - ifpoller.configurator = configurator; - ifpoller.progress = progress; - intf_plug_plug ( &monojob, &ifpoller.job ); - return monojob_wait ( "", timeout ); -} - -/** - * Check link-up progress - * - * @v ifpoller Network device poller - * @ret ongoing_rc Ongoing job status code (if known) - */ -static int iflinkwait_progress ( struct ifpoller *ifpoller ) { - struct net_device *netdev = ifpoller->netdev; - int ongoing_rc = netdev->link_rc; - - /* Terminate successfully if link is up */ - if ( ongoing_rc == 0 ) - intf_close ( &ifpoller->job, 0 ); - - /* Otherwise, report link status as ongoing job status */ - return ongoing_rc; -} - -/** - * Wait for link-up, with status indication - * - * @v netdev Network device - * @v timeout Timeout period, in ticks - */ -int iflinkwait ( struct net_device *netdev, unsigned long timeout ) { - int rc; - - /* Ensure device is open */ - if ( ( rc = ifopen ( netdev ) ) != 0 ) - return rc; - - /* Return immediately if link is already up */ - netdev_poll ( netdev ); - if ( netdev_link_ok ( netdev ) ) - return 0; - - /* Wait for link-up */ - printf ( "Waiting for link-up on %s", netdev->name ); - return ifpoller_wait ( netdev, NULL, timeout, iflinkwait_progress ); -} - -/** - * Check configuration progress - * - * @v ifpoller Network device poller - * @ret ongoing_rc Ongoing job status code (if known) - */ -static int ifconf_progress ( struct ifpoller *ifpoller ) { - struct net_device *netdev = ifpoller->netdev; - struct net_device_configurator *configurator = ifpoller->configurator; - struct net_device_configuration *config; - int rc; - - /* Do nothing unless configuration has completed */ - if ( netdev_configuration_in_progress ( netdev ) ) - return 0; - - /* Terminate with appropriate overall return status code */ - if ( configurator ) { - config = netdev_configuration ( netdev, configurator ); - rc = config->rc; - } else { - rc = ( netdev_configuration_ok ( netdev ) ? - 0 : -EADDRNOTAVAIL_CONFIG ); - } - intf_close ( &ifpoller->job, rc ); - - return rc; -} - -/** - * Perform network device configuration - * - * @v netdev Network device - * @v configurator Network device configurator, or NULL to use all - * @ret rc Return status code - */ -int ifconf ( struct net_device *netdev, - struct net_device_configurator *configurator ) { - int rc; - - /* Ensure device is open and link is up */ - if ( ( rc = iflinkwait ( netdev, LINK_WAIT_TIMEOUT ) ) != 0 ) - return rc; - - /* Start configuration */ - if ( configurator ) { - if ( ( rc = netdev_configure ( netdev, configurator ) ) != 0 ) { - printf ( "Could not configure %s via %s: %s\n", - netdev->name, configurator->name, - strerror ( rc ) ); - return rc; - } - } else { - if ( ( rc = netdev_configure_all ( netdev ) ) != 0 ) { - printf ( "Could not configure %s: %s\n", - netdev->name, strerror ( rc ) ); - return rc; - } - } - - /* Wait for configuration to complete */ - printf ( "Configuring %s%s%s(%s %s)", - ( configurator ? "[" : "" ), - ( configurator ? configurator->name : "" ), - ( configurator ? "] " : "" ), - netdev->name, netdev->ll_protocol->ntoa ( netdev->ll_addr ) ); - return ifpoller_wait ( netdev, configurator, 0, ifconf_progress ); -} |