Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Feb 2018 03:22:04 +0000 (UTC)
From:      Ravi Pokala <rpokala@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r329295 - head/sys/dev/mxge
Message-ID:  <201802150322.w1F3M4fC017815@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rpokala
Date: Thu Feb 15 03:22:04 2018
New Revision: 329295
URL: https://svnweb.freebsd.org/changeset/base/329295

Log:
  mxge(4) should pass unhandled ioctls to ether_ioctl()
  
  Panasas discovered that ioctl(SIOCGLAGGPORT) returns ENOTTY for mxge(4) when
  the NIC is not a member of a lagg. This came as a surprise, because the
  SIOCGLAGGPORT handler in if_lagg.c only returns ENOENT (if run against the
  laggX interface, rather than a physical port) or EINVAL (if run against a
  non-member physical port). This behavior was not seen with other drivers,
  such as bge(4), igb(4), and cxl(4). When I compared their respective ioctl
  handlers, I found that they all called ether_ioctl() for the default (i.e.
  unhandled) case; by contrast, mxge(4) only calls ether_ioctl() for two
  specific cases, and returns ENOTTY for the default case.
  
  Remove the two cases which explicitly call ether_ioctl(), and let the
  default case call it instead. This matches what the vast majority of the NIC
  drivers do.
  
  Reviewed by:	kmacy
  MFC after:	1 week
  Differential Revision:	https://reviews.freebsd.org/D14381

Modified:
  head/sys/dev/mxge/if_mxge.c

Modified: head/sys/dev/mxge/if_mxge.c
==============================================================================
--- head/sys/dev/mxge/if_mxge.c	Thu Feb 15 00:27:30 2018	(r329294)
+++ head/sys/dev/mxge/if_mxge.c	Thu Feb 15 03:22:04 2018	(r329295)
@@ -4162,11 +4162,6 @@ mxge_ioctl(struct ifnet *ifp, u_long command, caddr_t 
 
 	err = 0;
 	switch (command) {
-	case SIOCSIFADDR:
-	case SIOCGIFADDR:
-		err = ether_ioctl(ifp, command, data);
-		break;
-
 	case SIOCSIFMTU:
 		err = mxge_change_mtu(sc, ifr->ifr_mtu);
 		break;
@@ -4290,7 +4285,8 @@ mxge_ioctl(struct ifnet *ifp, u_long command, caddr_t 
 		break;
 
 	default:
-		err = ENOTTY;
+		err = ether_ioctl(ifp, command, data);
+		break;
 	}
 	return err;
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201802150322.w1F3M4fC017815>