Go to main content

man pages section 9: DDI and DKI Properties and Data Structures

Exit Print View

Updated: Thursday, June 13, 2019
 
 

mac_register(9S)

Name

mac_register - MAC device driver registration data structure

Synopsis

#include <sys/mac_provider.h>
#include <sys/mac_ether.h>

Interface Level

Solaris architecture specific (Solaris DDI)

Description

The mac_register data structure is passed by device drivers to the MAC layer when registering using the mac_register(9F).

Structure Members

uint_t          m_version;      /* set by framework */
const char      *m_type_ident;
void            *m_driver;
dev_info_t      *m_dip;
uint_t          m_instance;
uint8_t         *m_src_addr;
uint8_t         *m_dst_addr;
mac_callbacks_t *m_callbacks;
uint_t          m_min_sdu;
uint_t          m_max_sdu;
void            *m_pdata;
size_t          m_pdata_size;
char            **m_priv_props;
uint32_t	  m_margin;

The following fields of mac_register_t must be set by the device driver before invoking the mac_register()entry point:

m_version

Set by mac_alloc(9F), device drivers should not modify this field.

m_type_ident

Must be set to one of the following depending on the type of device being registered.

MAC_PLUGIN_IDENT_ETHER

Ethernet driver

m_driver

Driver handle, opaque to the framework, usually points to a per-driver instance data structure. Passed back as argument to driver's entry points invoked by the framework.

m_dip

Pointer to the driver instance dev_info structure. For more information, see the attach(9E) man page.

m_instance

Used by the driver to specify the instance number to be associated with the MAC being registered. This value should always specified by 0.

m_src_addr

Pointer to the primary MAC address value of the MAC instance.

m_dst_addr

Pointer to the destination MAC address value of a fixed destination MAC address. This field is optional and should be set to NULL for regular device drivers.

m_callbacks

Pointer to an instance of the mac_callbacks(9S) structure.

m_min_sdu

Minimum Service Data Unit size, the minimum packet size, not including the MAC header, that the device can transmit. This can be zero if the device driver can handle any required padding.

m_max_sdu

Maximum Service Data Unit size, the maximum packet size, not including the MAC header, that can be transmitted by the device. For Ethernet, this number is commonly referred to as the MTU (maximum transmission unit.)

m_priv_props

Array of driver-private property names, terminated by a null pointer.

m_margin

Drivers set this value to the amount of data in bytes that the device can transmit beyond m_max_sdu. For example, if an Ethernet device can handle packets whose payload section is no greater than 1522 bytes and m_max_sdu is set to 1500 (as is typical for Ethernet), then m_margin is set to 22.

For more information about the use of these fields, see the mac_register(9F) man page.

The driver is responsible for allocating the memory pointed to by the fields m_priv_props, m_src_addr, and m_dst_addr. The driver can free this memory after the call to mac_register() returns.

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Availability
system/header
Interface Stability
Committed

See Also

attributes(7), attach(9E), mac_register(9F), mac_callbacks(9S)