From owner-svn-src-user@FreeBSD.ORG Sat Apr 24 09:57:20 2010
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
by hub.freebsd.org (Postfix) with ESMTP id 0B0441065673;
Sat, 24 Apr 2010 09:57:20 +0000 (UTC)
(envelope-from jmallett@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
by mx1.freebsd.org (Postfix) with ESMTP id D5B2A8FC25;
Sat, 24 Apr 2010 09:57:19 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3O9vIvE093670;
Sat, 24 Apr 2010 09:57:18 GMT
(envelope-from jmallett@svn.freebsd.org)
Received: (from jmallett@localhost)
by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3O9vIfG093668;
Sat, 24 Apr 2010 09:57:18 GMT
(envelope-from jmallett@svn.freebsd.org)
Message-Id: <201004240957.o3O9vIfG093668@svn.freebsd.org>
From: Juli Mallett <jmallett@FreeBSD.org>
Date: Sat, 24 Apr 2010 09:57:18 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc:
Subject: svn commit: r207149 - user/jmallett/octeon/sys/mips/cavium/octe
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental " user"
src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 24 Apr 2010 09:57:20 -0000
Author: jmallett
Date: Sat Apr 24 09:57:18 2010
New Revision: 207149
URL: http://svn.freebsd.org/changeset/base/207149
Log:
Add a stub ioctl, enough to call our not-quite-right medstat function.
Modified:
user/jmallett/octeon/sys/mips/cavium/octe/octe.c
Modified: user/jmallett/octeon/sys/mips/cavium/octe/octe.c
==============================================================================
--- user/jmallett/octeon/sys/mips/cavium/octe/octe.c Sat Apr 24 09:43:10 2010 (r207148)
+++ user/jmallett/octeon/sys/mips/cavium/octe/octe.c Sat Apr 24 09:57:18 2010 (r207149)
@@ -46,19 +46,22 @@
#include <sys/sockio.h>
#include <sys/sysctl.h>
+#include <net/ethernet.h>
#include <net/if.h>
#include <net/if_types.h>
#include "wrapper-cvmx-includes.h"
#include "cavium-ethernet.h"
-static int octe_probe(device_t dev);
-static int octe_attach(device_t dev);
-static int octe_detach(device_t dev);
-static int octe_shutdown(device_t dev);
+static int octe_probe(device_t);
+static int octe_attach(device_t);
+static int octe_detach(device_t);
+static int octe_shutdown(device_t);
-static int octe_medchange(struct ifnet *ifp);
-static void octe_medstat(struct ifnet *ifp, struct ifmediareq *ifm);
+static int octe_medchange(struct ifnet *);
+static void octe_medstat(struct ifnet *, struct ifmediareq *);
+
+static int octe_ioctl(struct ifnet *, u_long, caddr_t);
static device_method_t octe_methods[] = {
/* Device interface */
@@ -111,6 +114,8 @@ octe_attach(device_t dev)
ifmedia_add(&priv->media, IFM_ETHER | IFM_AUTO, 0, NULL);
ifmedia_set(&priv->media, IFM_ETHER | IFM_AUTO);
+ ifp->if_ioctl = octe_ioctl;
+
return (0);
}
@@ -138,10 +143,13 @@ octe_medstat(struct ifnet *ifp, struct i
cvm_oct_private_t *priv;
cvmx_helper_link_info_t link_info;
+ priv = ifp->if_softc;
+
ifm->ifm_status = IFM_AVALID;
ifm->ifm_active = IFT_ETHER;
- priv = ifp->if_softc;
+ if (priv->poll == NULL)
+ return;
priv->poll(ifp);
link_info.u64 = priv->link_info;
@@ -171,3 +179,29 @@ octe_medstat(struct ifnet *ifp, struct i
else
ifm->ifm_active |= IFM_HDX;
}
+
+static int
+octe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
+{
+ cvm_oct_private_t *priv;
+ struct ifreq *ifr;
+ int error;
+
+ priv = ifp->if_softc;
+ ifr = (struct ifreq *)data;
+
+ switch (cmd) {
+ case SIOCSIFMEDIA:
+ case SIOCGIFMEDIA:
+ error = ifmedia_ioctl(ifp, ifr, &priv->media, cmd);
+ if (error != 0)
+ return (error);
+ return (0);
+
+ default:
+ error = ether_ioctl(ifp, cmd, data);
+ if (error != 0)
+ return (error);
+ return (0);
+ }
+}