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