From nobody@FreeBSD.org  Wed Oct 26 10:58:21 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id ADF04106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 26 Oct 2011 10:58:21 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 9E49A8FC08
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 26 Oct 2011 10:58:21 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p9QAwL6V038811
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 26 Oct 2011 10:58:21 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id p9QAwL5v038810;
	Wed, 26 Oct 2011 10:58:21 GMT
	(envelope-from nobody)
Message-Id: <201110261058.p9QAwL5v038810@red.freebsd.org>
Date: Wed, 26 Oct 2011 10:58:21 GMT
From: Hooman Fazaeli <hoomanfazaeli@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: misplaced #endif in ixgbe.c
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         162028
>Category:       kern
>Synopsis:       [ixgbe] [patch] misplaced #endif in ixgbe.c
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-net
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Oct 26 11:00:20 UTC 2011
>Closed-Date:    
>Last-Modified:  Sun Oct 30 08:10:11 UTC 2011
>Originator:     Hooman Fazaeli
>Release:        7.4-RELEASE
>Organization:
Sepehr S. T. Co. Ltd.
>Environment:
FreeBSD HP04 7.4-RELEASE FreeBSD 7.4-RELEASE #1: Thu May 12 02:24:45 IRDT 2011     admin@:/usr/src/sys/i386/compile/SERVER74-001  i386

>Description:
A misplaced #endif in ixgbe_ioctl() causes interface MTU to become
zero when INET and INET6 are undefined. 

>How-To-Repeat:
See sys/dev/ixgbe/ixgbe.c v 1.53 
function ixgbe_ioctl.
>Fix:


Patch attached with submission follows:

--- ixgbe.c.orig	2011-10-17 20:37:17.000000000 +0330
+++ ixgbe.c	2011-10-17 20:38:40.000000000 +0330
@@ -898,8 +898,8 @@
 				arp_ifinit(ifp, ifa);
 		} else
 			error = ether_ioctl(ifp, command, data);
-		break;
 #endif
+		break;
 	case SIOCSIFMTU:
 		IOCTL_DEBUGOUT("ioctl: SIOCSIFMTU (Set Interface MTU)");
 		if (ifr->ifr_mtu > IXGBE_MAX_FRAME_SIZE - ETHER_HDR_LEN) {


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-net 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Sat Oct 29 12:13:14 UTC 2011 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=162028 

From: Sergey Kandaurov <pluknet@gmail.com>
To: bug-followup@FreeBSD.org, hoomanfazaeli@gmail.com
Cc:  
Subject: Re: kern/162028: [ixgbe] [patch] misplaced #endif in ixgbe.c
Date: Sat, 29 Oct 2011 16:58:09 +0400

 I have a more complete patch. Can you test it please?
 
 Index: sys/dev/ixgbe/ixgbe.c
 ===================================================================
 --- sys/dev/ixgbe/ixgbe.c       (revision 226068)
 +++ sys/dev/ixgbe/ixgbe.c       (working copy)
 @@ -867,16 +867,15 @@ static int
  ixgbe_ioctl(struct ifnet * ifp, u_long command, caddr_t data)
  {
         struct adapter  *adapter = ifp->if_softc;
 -       struct ifreq    *ifr = (struct ifreq *) data;
 +       struct ifreq    *ifr = (struct ifreq *)data;
  #if defined(INET) || defined(INET6)
 -       struct ifaddr *ifa = (struct ifaddr *)data;
 -       bool            avoid_reset = FALSE;
 +       struct ifaddr   *ifa = (struct ifaddr *)data;
  #endif
 -       int             error = 0;
 +       bool            avoid_reset = FALSE;
 +       int             error = 0;
 
         switch (command) {
 -
 -        case SIOCSIFADDR:
 +       case SIOCSIFADDR:
  #ifdef INET
                 if (ifa->ifa_addr->sa_family == AF_INET)
                         avoid_reset = TRUE;
 @@ -885,7 +884,6 @@ ixgbe_ioctl(struct ifnet * ifp, u_long command, ca
                 if (ifa->ifa_addr->sa_family == AF_INET6)
                         avoid_reset = TRUE;
  #endif
 -#if defined(INET) || defined(INET6)
                 /*
                 ** Calling init results in link renegotiation,
                 ** so we avoid doing it when possible.
 @@ -894,12 +892,13 @@ ixgbe_ioctl(struct ifnet * ifp, u_long command, ca
                         ifp->if_flags |= IFF_UP;
                         if (!(ifp->if_drv_flags & IFF_DRV_RUNNING))
                                 ixgbe_init(adapter);
 +#ifdef INET
                         if (!(ifp->if_flags & IFF_NOARP))
                                 arp_ifinit(ifp, ifa);
 +#endif
                 } else
                         error = ether_ioctl(ifp, command, data);
                 break;
 -#endif
         case SIOCSIFMTU:
                 IOCTL_DEBUGOUT("ioctl: SIOCSIFMTU (Set Interface MTU)");
                 if (ifr->ifr_mtu > IXGBE_MAX_FRAME_SIZE - ETHER_HDR_LEN) {
 
 
 -- 
 wbr,
 pluknet

From: Hooman Fazaeli <hoomanfazaeli@gmail.com>
To: Sergey Kandaurov <pluknet@gmail.com>
Cc: bug-followup@FreeBSD.org
Subject: Re: kern/162028: [ixgbe] [patch] misplaced #endif in ixgbe.c
Date: Sun, 30 Oct 2011 11:03:44 +0330

 On 10/29/2011 4:28 PM, Sergey Kandaurov wrote:
 > I have a more complete patch. Can you test it please?
 >
 > Index: sys/dev/ixgbe/ixgbe.c
 > ===================================================================
 > --- sys/dev/ixgbe/ixgbe.c       (revision 226068)
 > +++ sys/dev/ixgbe/ixgbe.c       (working copy)
 > @@ -867,16 +867,15 @@ static int
 >   ixgbe_ioctl(struct ifnet * ifp, u_long command, caddr_t data)
 >   {
 >          struct adapter  *adapter = ifp->if_softc;
 > -       struct ifreq    *ifr = (struct ifreq *) data;
 > +       struct ifreq    *ifr = (struct ifreq *)data;
 >   #if defined(INET) || defined(INET6)
 > -       struct ifaddr *ifa = (struct ifaddr *)data;
 > -       bool            avoid_reset = FALSE;
 > +       struct ifaddr   *ifa = (struct ifaddr *)data;
 >   #endif
 > -       int             error = 0;
 > +       bool            avoid_reset = FALSE;
 > +       int             error = 0;
 >
 >          switch (command) {
 > -
 > -        case SIOCSIFADDR:
 > +       case SIOCSIFADDR:
 >   #ifdef INET
 >                  if (ifa->ifa_addr->sa_family == AF_INET)
 >                          avoid_reset = TRUE;
 > @@ -885,7 +884,6 @@ ixgbe_ioctl(struct ifnet * ifp, u_long command, ca
 >                  if (ifa->ifa_addr->sa_family == AF_INET6)
 >                          avoid_reset = TRUE;
 >   #endif
 > -#if defined(INET) || defined(INET6)
 >                  /*
 >                  ** Calling init results in link renegotiation,
 >                  ** so we avoid doing it when possible.
 > @@ -894,12 +892,13 @@ ixgbe_ioctl(struct ifnet * ifp, u_long command, ca
 >                          ifp->if_flags |= IFF_UP;
 >                          if (!(ifp->if_drv_flags&  IFF_DRV_RUNNING))
 >                                  ixgbe_init(adapter);
 > +#ifdef INET
 >                          if (!(ifp->if_flags&  IFF_NOARP))
 >                                  arp_ifinit(ifp, ifa);
 > +#endif
 >                  } else
 >                          error = ether_ioctl(ifp, command, data);
 >                  break;
 > -#endif
 >          case SIOCSIFMTU:
 >                  IOCTL_DEBUGOUT("ioctl: SIOCSIFMTU (Set Interface MTU)");
 >                  if (ifr->ifr_mtu>  IXGBE_MAX_FRAME_SIZE - ETHER_HDR_LEN) {
 >
 >
 sure.
 I am very busy right now.
 Will test as soon as I can.
>Unformatted:
