xref: /freebsd/sys/dev/vnic/lmac_if.m (revision 031beb4e239bfce798af17f5fe8dba8bcaf13d99)
1*2306b72aSZbigniew Bodek#-
2*2306b72aSZbigniew Bodek# Copyright (c) 2015 The FreeBSD Foundation
3*2306b72aSZbigniew Bodek#
4*2306b72aSZbigniew Bodek# This software was developed by Semihalf under
5*2306b72aSZbigniew Bodek# the sponsorship of the FreeBSD Foundation.
6*2306b72aSZbigniew Bodek#
7*2306b72aSZbigniew Bodek# Redistribution and use in source and binary forms, with or without
8*2306b72aSZbigniew Bodek# modification, are permitted provided that the following conditions
9*2306b72aSZbigniew Bodek# are met:
10*2306b72aSZbigniew Bodek# 1. Redistributions of source code must retain the above copyright
11*2306b72aSZbigniew Bodek#    notice, this list of conditions and the following disclaimer.
12*2306b72aSZbigniew Bodek# 2. Redistributions in binary form must reproduce the above copyright
13*2306b72aSZbigniew Bodek#    notice, this list of conditions and the following disclaimer in the
14*2306b72aSZbigniew Bodek#    documentation and/or other materials provided with the distribution.
15*2306b72aSZbigniew Bodek#
16*2306b72aSZbigniew Bodek# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17*2306b72aSZbigniew Bodek# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*2306b72aSZbigniew Bodek# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*2306b72aSZbigniew Bodek# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20*2306b72aSZbigniew Bodek# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21*2306b72aSZbigniew Bodek# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22*2306b72aSZbigniew Bodek# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23*2306b72aSZbigniew Bodek# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24*2306b72aSZbigniew Bodek# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25*2306b72aSZbigniew Bodek# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*2306b72aSZbigniew Bodek# SUCH DAMAGE.
27*2306b72aSZbigniew Bodek#
28*2306b72aSZbigniew Bodek
29*2306b72aSZbigniew Bodek# LMAC (BGX controller) interface description
30*2306b72aSZbigniew Bodek#
31*2306b72aSZbigniew Bodek
32*2306b72aSZbigniew BodekINTERFACE lmac;
33*2306b72aSZbigniew Bodek
34*2306b72aSZbigniew BodekCODE {
35*2306b72aSZbigniew Bodek	static int null_lmac_media_status(device_t dev, int lmacid, int *link,
36*2306b72aSZbigniew Bodek	    int *duplex, int *speed)
37*2306b72aSZbigniew Bodek	{
38*2306b72aSZbigniew Bodek		return (ENXIO);
39*2306b72aSZbigniew Bodek	}
40*2306b72aSZbigniew Bodek
41*2306b72aSZbigniew Bodek	static int null_lmac_media_change(device_t dev, int lmacid, int link,
42*2306b72aSZbigniew Bodek	    int duplex, int speed)
43*2306b72aSZbigniew Bodek	{
44*2306b72aSZbigniew Bodek		return (ENXIO);
45*2306b72aSZbigniew Bodek	}
46*2306b72aSZbigniew Bodek
47*2306b72aSZbigniew Bodek	static int null_lmac_phy_connect(device_t dev, int lmacid, int phy)
48*2306b72aSZbigniew Bodek	{
49*2306b72aSZbigniew Bodek		return (ENXIO);
50*2306b72aSZbigniew Bodek	}
51*2306b72aSZbigniew Bodek
52*2306b72aSZbigniew Bodek	static int null_lmac_phy_disconnect(device_t dev, int lmacid, int phy)
53*2306b72aSZbigniew Bodek	{
54*2306b72aSZbigniew Bodek		return (ENXIO);
55*2306b72aSZbigniew Bodek	}
56*2306b72aSZbigniew Bodek};
57*2306b72aSZbigniew Bodek
58*2306b72aSZbigniew Bodek# Get link status
59*2306b72aSZbigniew Bodek#
60*2306b72aSZbigniew Bodek# 0 : Success
61*2306b72aSZbigniew Bodek#
62*2306b72aSZbigniew BodekMETHOD int media_status {
63*2306b72aSZbigniew Bodek	device_t		dev;
64*2306b72aSZbigniew Bodek	int			lmacid;
65*2306b72aSZbigniew Bodek	int *			link;
66*2306b72aSZbigniew Bodek	int *			duplex;
67*2306b72aSZbigniew Bodek	int *			speed;
68*2306b72aSZbigniew Bodek} DEFAULT null_lmac_media_status;
69*2306b72aSZbigniew Bodek
70*2306b72aSZbigniew Bodek# Change link status
71*2306b72aSZbigniew Bodek#
72*2306b72aSZbigniew Bodek# 0 : Success
73*2306b72aSZbigniew Bodek#
74*2306b72aSZbigniew BodekMETHOD int media_change {
75*2306b72aSZbigniew Bodek	device_t		dev;
76*2306b72aSZbigniew Bodek	int			lmacid;
77*2306b72aSZbigniew Bodek	int			link;
78*2306b72aSZbigniew Bodek	int			duplex;
79*2306b72aSZbigniew Bodek	int			speed;
80*2306b72aSZbigniew Bodek} DEFAULT null_lmac_media_change;
81*2306b72aSZbigniew Bodek
82*2306b72aSZbigniew Bodek# Connect PHY
83*2306b72aSZbigniew Bodek#
84*2306b72aSZbigniew Bodek# 0 : Success
85*2306b72aSZbigniew Bodek#
86*2306b72aSZbigniew BodekMETHOD int phy_connect {
87*2306b72aSZbigniew Bodek	device_t		dev;
88*2306b72aSZbigniew Bodek	int			lmacid;
89*2306b72aSZbigniew Bodek	int			phy;
90*2306b72aSZbigniew Bodek} DEFAULT null_lmac_phy_connect;
91*2306b72aSZbigniew Bodek
92*2306b72aSZbigniew Bodek# Disconnect PHY
93*2306b72aSZbigniew Bodek#
94*2306b72aSZbigniew Bodek# 0 : Success
95*2306b72aSZbigniew Bodek#
96*2306b72aSZbigniew BodekMETHOD int phy_disconnect {
97*2306b72aSZbigniew Bodek	device_t		dev;
98*2306b72aSZbigniew Bodek	int			lmacid;
99*2306b72aSZbigniew Bodek	int			phy;
100*2306b72aSZbigniew Bodek} DEFAULT null_lmac_phy_disconnect;
101