xref: /illumos-gate/usr/src/man/man9s/mac_register.9s (revision 72d3dbb9ab4481606cb93caca98ba3b3a8eb6ce2)
152d2369aSRobert Mustacchi.\"
252d2369aSRobert Mustacchi.\" This file and its contents are supplied under the terms of the
352d2369aSRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
452d2369aSRobert Mustacchi.\" You may only use this file in accordance with the terms of version
552d2369aSRobert Mustacchi.\" 1.0 of the CDDL.
652d2369aSRobert Mustacchi.\"
752d2369aSRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
852d2369aSRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
952d2369aSRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
1052d2369aSRobert Mustacchi.\"
1152d2369aSRobert Mustacchi.\"
1252d2369aSRobert Mustacchi.\" Copyright 2016 Joyent, Inc.
1352d2369aSRobert Mustacchi.\"
1452d2369aSRobert Mustacchi.Dd May 10, 2016
1552d2369aSRobert Mustacchi.Dt MAC_REGISTER 9S
1652d2369aSRobert Mustacchi.Os
1752d2369aSRobert Mustacchi.Sh NAME
1852d2369aSRobert Mustacchi.Nm mac_register ,
1952d2369aSRobert Mustacchi.Nm mac_register_t
2052d2369aSRobert Mustacchi.Nd networking device driver registration structure
2152d2369aSRobert Mustacchi.Sh SYNOPSIS
2252d2369aSRobert Mustacchi.In sys/mac_provider.h
2352d2369aSRobert Mustacchi.In sys/mac_ether.h
2452d2369aSRobert Mustacchi.Sh INTERFACE LEVEL
2552d2369aSRobert Mustacchiillumos DDI specific
2652d2369aSRobert Mustacchi.Sh DESCRIPTION
2752d2369aSRobert MustacchiThe
2852d2369aSRobert Mustacchi.Sy mac_register
2952d2369aSRobert Mustacchistructure is used by GLDv3 networking device drivers implementing the
3052d2369aSRobert Mustacchi.Xr mac 9E
3152d2369aSRobert Mustacchiinterface.
3252d2369aSRobert Mustacchi.Pp
3352d2369aSRobert MustacchiThe structure is allocated by a call to
3452d2369aSRobert Mustacchi.Xr mac_alloc 9F
35*72d3dbb9SYuri Pankovafter which the various structure members should be set.
36*72d3dbb9SYuri PankovOnce they have been set, the structure can be used by a GLDv3 device driver to
37*72d3dbb9SYuri Pankovregister with the MAC framework by calling the
3852d2369aSRobert Mustacchi.Xr mac_register 9F
39*72d3dbb9SYuri Pankovfunction.
40*72d3dbb9SYuri PankovOnce
4152d2369aSRobert Mustacchi.Xr mac_register 9F
4252d2369aSRobert Mustacchihas been called, the structure can be freed through a call to
4352d2369aSRobert Mustacchi.Xr mac_free 9F .
4452d2369aSRobert Mustacchi.Sh STRUCTURE MEMBERS
4552d2369aSRobert Mustacchi.Bd -literal -offset indent
4652d2369aSRobert Mustacchiuint_t                  m_version;
4752d2369aSRobert Mustacchiconst char              *m_type_ident;
4852d2369aSRobert Mustacchivoid                    *m_driver;
4952d2369aSRobert Mustacchidev_info_t              *m_dip;
5052d2369aSRobert Mustacchiuint_t                  m_instance;
5152d2369aSRobert Mustacchiuint8_t                 *m_src_addr;
5252d2369aSRobert Mustacchiuint8_t                 *m_dst_addr;
5352d2369aSRobert Mustacchimac_callbacks_t         *m_callbacks;
5452d2369aSRobert Mustacchiuint_t                  m_min_sdu;
5552d2369aSRobert Mustacchiuint_t                  m_max_sdu;
5652d2369aSRobert Mustacchivoid                    *m_pdata;
5752d2369aSRobert Mustacchisize_t                  m_pdata_size;
5852d2369aSRobert Mustacchichar                    **m_priv_props;
5952d2369aSRobert Mustacchiuint32_t                m_margin;
6052d2369aSRobert Mustacchi.Ed
6152d2369aSRobert Mustacchi.Pp
6252d2369aSRobert MustacchiThe
6352d2369aSRobert Mustacchi.Sy m_version
6452d2369aSRobert Mustacchimember is set during a call to
6552d2369aSRobert Mustacchi.Xr mac_alloc 9F .
6652d2369aSRobert MustacchiDevice drivers should not modify this field.
6752d2369aSRobert Mustacchi.Pp
6852d2369aSRobert MustacchiThe
6952d2369aSRobert Mustacchi.Sy m_type_ident
7052d2369aSRobert Mustacchimember identifies the kind of networking device that this driver
71*72d3dbb9SYuri Pankovrepresents.
72*72d3dbb9SYuri PankovThe following constants should be used to identify the device type:
7352d2369aSRobert Mustacchi.Bl -tag -width Dv
7452d2369aSRobert Mustacchi.It Sy MAC_PLUGIN_IDENT_ETHER
7552d2369aSRobert MustacchiThe device driver implements IEEE 802.3 Ethernet.
7652d2369aSRobert Mustacchi.El
7752d2369aSRobert Mustacchi.Pp
7852d2369aSRobert MustacchiThe
7952d2369aSRobert Mustacchi.Sy m_driver
8052d2369aSRobert Mustacchivalue is a private value that the device driver may set and will be
8152d2369aSRobert Mustacchiprovided as an argument in many of the
8252d2369aSRobert Mustacchi.Xr mac 9E
83*72d3dbb9SYuri Pankovcallbacks.
84*72d3dbb9SYuri PankovMost often this is set to the driver's soft state for a specific instance.
8552d2369aSRobert Mustacchi.Pp
8652d2369aSRobert MustacchiThe
8752d2369aSRobert Mustacchi.Sy m_dip
8852d2369aSRobert Mustacchimember should point to the device driver's
8952d2369aSRobert Mustacchi.Sy dev_info
90*72d3dbb9SYuri Pankovstructure for that specific instance.
91*72d3dbb9SYuri PankovThis structure is provided during the driver's
9252d2369aSRobert Mustacchi.Xr attach 9E
9352d2369aSRobert Mustacchientry point.
9452d2369aSRobert Mustacchi.Pp
9552d2369aSRobert MustacchiThe
9652d2369aSRobert Mustacchi.Sy m_instance
97*72d3dbb9SYuri Pankovmember should be set to zero.
98*72d3dbb9SYuri PankovThe GLDv3 framework will determine the appropriate instance.
9952d2369aSRobert Mustacchi.Pp
10052d2369aSRobert MustacchiThe
10152d2369aSRobert Mustacchi.Sy m_src_addr
10252d2369aSRobert Mustacchimember should be set to a byte array that describes the source MAC
103*72d3dbb9SYuri Pankovaddress of the device.
104*72d3dbb9SYuri PankovThis is usually the default MAC address as programmed by the device manufacturer
105*72d3dbb9SYuri Pankovin that instance of the device.
10652d2369aSRobert Mustacchi.Pp
10752d2369aSRobert MustacchiThe
10852d2369aSRobert Mustacchi.Sy m_dst_addr
10952d2369aSRobert Mustacchimember is an optional property and should be set to
11052d2369aSRobert Mustacchi.Dv NULL
111*72d3dbb9SYuri Pankovby most device drivers.
112*72d3dbb9SYuri PankovIf set, this address will be the destination for outgoing frames.
11352d2369aSRobert Mustacchi.Pp
11452d2369aSRobert MustacchiThe
11552d2369aSRobert Mustacchi.Sy m_callbacks
11652d2369aSRobert Mustacchimember contains the GLDv3 entry points implemented by the device driver.
11752d2369aSRobert MustacchiSee
11852d2369aSRobert Mustacchi.Xr mac_callbacks 9S
11952d2369aSRobert Mustacchifor a full explanation of the structure, its members, and their
120*72d3dbb9SYuri Pankovresponsibilities.
121*72d3dbb9SYuri PankovSee
12252d2369aSRobert Mustacchi.Xr mac 9E
12352d2369aSRobert Mustacchifor a broader picture of how the entry points are used.
12452d2369aSRobert Mustacchi.Pp
12552d2369aSRobert MustacchiThe
12652d2369aSRobert Mustacchi.Sy m_min_sdu
127*72d3dbb9SYuri Pankovproperty is the minimum service data unit.
128*72d3dbb9SYuri PankovIt represents the minimum size packet that the device can transmit, ignoring its
129*72d3dbb9SYuri Pankovown headers.
130*72d3dbb9SYuri PankovThus for an Ethernet device, this value would exclude the Ethernet header and
131*72d3dbb9SYuri Pankovany VLAN headers.
132*72d3dbb9SYuri PankovIf this is set to zero, then that means that either the MAC protocol does not
133*72d3dbb9SYuri Pankovrequire a minimum size or that the device driver and hardware will ensure that
134*72d3dbb9SYuri Pankovany minimum size is taken care of.
13552d2369aSRobert Mustacchi.Pp
13652d2369aSRobert MustacchiThe
13752d2369aSRobert Mustacchi.Sy m_max_sdu
138*72d3dbb9SYuri Pankovproperty is the maximum service data unit.
139*72d3dbb9SYuri PankovIt represents the maximum size packet that the device can transmit, ignoring its
140*72d3dbb9SYuri Pankovown headers.
141*72d3dbb9SYuri PankovFor an Ethernet based device, this would exclude the size of the Ethernet
142*72d3dbb9SYuri Pankovheader and a VLAN headers.
143*72d3dbb9SYuri PankovThis value is often called the maximum transmission unit (MTU).
14452d2369aSRobert Mustacchi.Pp
14552d2369aSRobert MustacchiThe
14652d2369aSRobert Mustacchi.Sy m_pdata
14752d2369aSRobert Mustacchimember is used for data specific to the type specified in the
14852d2369aSRobert Mustacchi.Sy m_type_ident
149*72d3dbb9SYuri Pankovmember.
150*72d3dbb9SYuri PankovFor all devices of type
15152d2369aSRobert Mustacchi.Sy MAC_PLUGIN_IDENT_ETHER ,
15252d2369aSRobert Mustacchithis should be set to
15352d2369aSRobert Mustacchi.Dv NULL .
15452d2369aSRobert Mustacchi.Pp
15552d2369aSRobert MustacchiThe
15652d2369aSRobert Mustacchi.Sy m_pdata_size
15752d2369aSRobert Mustacchimember indicates the size of the member
15852d2369aSRobert Mustacchi.Sy m_pdata .
15952d2369aSRobert MustacchiFor all devices of type
16052d2369aSRobert Mustacchi.Sy MAC_PLUGIN_IDENT_ETHER ,
16152d2369aSRobert Mustacchithis should be set to 0.
16252d2369aSRobert Mustacchi.Pp
16352d2369aSRobert MustacchiThe
16452d2369aSRobert Mustacchi.Sy m_priv_props
16552d2369aSRobert Mustacchimember is an optional member that lists device-specific properties.
16652d2369aSRobert MustacchiThese properties will be queried through functions like
16752d2369aSRobert Mustacchi.Xr mc_getprop 9E ,
16852d2369aSRobert Mustacchi.Xr mc_propinfo 9E ,
16952d2369aSRobert Mustacchiand
17052d2369aSRobert Mustacchi.Xr mc_setprop 9E .
17152d2369aSRobert MustacchiIf the driver does not have any private properties, it should be set to
17252d2369aSRobert Mustacchi.Dv NULL .
17352d2369aSRobert MustacchiOtherwise, it should be set to a NULL-terminated array of character
174*72d3dbb9SYuri Pankovstrings where each entry is the name of a distinct property.
175*72d3dbb9SYuri PankovSee
17652d2369aSRobert Mustacchi.Xr mac 9E
17752d2369aSRobert Mustacchifor more information on private properties.
17852d2369aSRobert Mustacchi.Pp
17952d2369aSRobert MustacchiThe
18052d2369aSRobert Mustacchi.Sy m_margin
18152d2369aSRobert Mustacchiproperty
18252d2369aSRobert Mustacchiindicates the amount of additional bytes of information that may be
183*72d3dbb9SYuri Pankovincluded beyond the basic MAC header.
184*72d3dbb9SYuri PankovFor example, with an Ethernet device, if the hardware supports a VLAN tag, then
185*72d3dbb9SYuri Pankovthis property would be set to the size of a VLAN tag, indicating that it
186*72d3dbb9SYuri Pankovsupported the additional bytes in a single packet beyond the Ethernet header and
187*72d3dbb9SYuri Pankovthe
18852d2369aSRobert Mustacchi.Sy m_max_sdu .
18952d2369aSRobert Mustacchi.Sh SEE ALSO
19052d2369aSRobert Mustacchi.Xr attach 9E ,
19152d2369aSRobert Mustacchi.Xr mac 9E ,
19252d2369aSRobert Mustacchi.Xr mac_alloc 9F ,
19352d2369aSRobert Mustacchi.Xr mac_free 9F ,
19452d2369aSRobert Mustacchi.Xr mac_register 9F ,
19552d2369aSRobert Mustacchi.Xr mac_callbacks 9S
196