xref: /illumos-gate/usr/src/man/man9e/mc_unicst.9e (revision 2c0ebdee8f56c8a9d9e34e30367999396b38fec9)
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.\"
12*2c0ebdeeSRobert Mustacchi.\" Copyright (c) 2017, Joyent, Inc.
13*2c0ebdeeSRobert Mustacchi.\" Copyright 2022 Oxide Computer Company
1452d2369aSRobert Mustacchi.\"
15*2c0ebdeeSRobert Mustacchi.Dd July 2, 2022
1652d2369aSRobert Mustacchi.Dt MC_UNICST 9E
1752d2369aSRobert Mustacchi.Os
1852d2369aSRobert Mustacchi.Sh NAME
1952d2369aSRobert Mustacchi.Nm mc_unicst
2052d2369aSRobert Mustacchi.Nd set device unicast address
2152d2369aSRobert Mustacchi.Sh SYNOPSIS
2252d2369aSRobert Mustacchi.In sys/mac_provider.h
2352d2369aSRobert Mustacchi.Ft int
2452d2369aSRobert Mustacchi.Fo prefix_m_unicst
2552d2369aSRobert Mustacchi.Fa "void *driver"
2652d2369aSRobert Mustacchi.Fa "const uint8_t *mac"
2752d2369aSRobert Mustacchi.Fc
2852d2369aSRobert Mustacchi.Sh INTERFACE LEVEL
2952d2369aSRobert Mustacchiillumos DDI specific
3052d2369aSRobert Mustacchi.Sh PARAMETERS
3152d2369aSRobert Mustacchi.Bl -tag -width Fa
3252d2369aSRobert Mustacchi.It Fa driver
3352d2369aSRobert MustacchiA pointer to the driver's private data that was passed in via the
34*2c0ebdeeSRobert Mustacchi.Fa m_pdata
3552d2369aSRobert Mustacchimember of the
3652d2369aSRobert Mustacchi.Xr mac_register 9S
3752d2369aSRobert Mustacchistructure to the
3852d2369aSRobert Mustacchi.Xr mac_register 9F
3952d2369aSRobert Mustacchifunction.
4052d2369aSRobert Mustacchi.It Fa mac
4152d2369aSRobert MustacchiA pointer to an array of bytes that contains the new unicast address of
4272d3dbb9SYuri Pankovthe device.
4372d3dbb9SYuri PankovIt is guaranteed to be at least a number of bytes long equal to the length of
4472d3dbb9SYuri Pankovthe MAC plugin's address length.
4572d3dbb9SYuri PankovFor Ethernet devices that length is six bytes,
46*2c0ebdeeSRobert Mustacchi.Dv ETHERADDRL .
4752d2369aSRobert Mustacchi.El
4852d2369aSRobert Mustacchi.Sh DESCRIPTION
4952d2369aSRobert MustacchiThe
5052d2369aSRobert Mustacchi.Fn mc_unicst
51*2c0ebdeeSRobert Mustacchientry point is used by the MAC framework to indicate that the device driver
5272d3dbb9SYuri Pankovshould update the primary MAC address of the device.
5372d3dbb9SYuri PankovIn the basic mode of operation, this entry point is required and the device has
5472d3dbb9SYuri Pankova single primary MAC address.
5572d3dbb9SYuri PankovIf multiple MAC addresses are required, the device will be placed into
5672d3dbb9SYuri Pankovpromiscuous mode.
5772d3dbb9SYuri PankovThis call should overwrite the existing MAC address that is programmed into the
5872d3dbb9SYuri Pankovdevice.
5952d2369aSRobert Mustacchi.Pp
60*2c0ebdeeSRobert MustacchiDevice drivers that implement the
61*2c0ebdeeSRobert Mustacchi.Dv MAC_CAPAB_RINGS
62*2c0ebdeeSRobert Mustacchicapability
63*2c0ebdeeSRobert Mustacchi.Em must not
64*2c0ebdeeSRobert Mustacchiimplement this interface.
65*2c0ebdeeSRobert Mustacchi.Pp
6652d2369aSRobert MustacchiAs noted in the
67*2c0ebdeeSRobert Mustacchi.Sy PARAMETERS
6852d2369aSRobert Mustacchisection, the
6952d2369aSRobert Mustacchi.Fa mac
7052d2369aSRobert Mustacchiarray is guaranteed to be at least as many bytes as is required to
7152d2369aSRobert Mustacchispecify an address; however, it should be assumed to be no longer than
7252d2369aSRobert Mustacchithat value.
7352d2369aSRobert Mustacchi.Pp
7452d2369aSRobert MustacchiThe device driver can optionally assert that the address is in the
7572d3dbb9SYuri Pankovvalid form for a unicast address and then program the device.
7672d3dbb9SYuri PankovThe device driver can access its device soft state by casting the
7752d2369aSRobert Mustacchi.Fa device
7872d3dbb9SYuri Pankovpointer to the appropriate structure.
7972d3dbb9SYuri PankovAs this may be called while other operations are ongoing, the device driver
8072d3dbb9SYuri Pankovshould employ the appropriate locking while updating the data.
8152d2369aSRobert Mustacchi.Pp
8252d2369aSRobert MustacchiIt is recommended that device drivers always maintain a copy of the
8352d2369aSRobert Mustacchicurrent unicast address in its soft state so that way it can recover
8452d2369aSRobert Mustacchifrom various device reset and errors or handle requests to suspend and
8552d2369aSRobert Mustacchiresume the device that may result in device registers being cleared.
8652d2369aSRobert Mustacchi.Pp
8772d3dbb9SYuri PankovSome devices support multiple MAC address filters.
8872d3dbb9SYuri PankovThe
8952d2369aSRobert Mustacchi.Fn mc_unicst
9072d3dbb9SYuri Pankoventry point only supports a single MAC address.
9172d3dbb9SYuri PankovIn this case, devices should only use a single MAC address and replace that MAC
9272d3dbb9SYuri Pankovaddress.
93*2c0ebdeeSRobert MustacchiTo enable the operating system to take advantage of multiple unicast MAC
94*2c0ebdeeSRobert Mustacchiaddress filters, the driver should implement the
95*2c0ebdeeSRobert Mustacchi.Dv MAC_CAPAB_RINGS
96*2c0ebdeeSRobert Mustacchicapability.
97*2c0ebdeeSRobert MustacchiSee
98*2c0ebdeeSRobert Mustacchi.Xr mac_capab_rings 9E
99*2c0ebdeeSRobert Mustacchifor more information.
10052d2369aSRobert Mustacchi.Sh RETURN VALUES
10152d2369aSRobert MustacchiUpon successful completion, the device driver should have updated its
10252d2369aSRobert Mustacchiunicast filter and return
10352d2369aSRobert Mustacchi.Sy 0 .
10452d2369aSRobert MustacchiOtherwise, the MAC address should remain unchanged and the driver should
10552d2369aSRobert Mustacchireturn an appropriate error number.
10652d2369aSRobert Mustacchi.Sh ERRORS
10772d3dbb9SYuri PankovThe device driver may return one of the following errors.
10872d3dbb9SYuri PankovWhile this list is not intended to be exhaustive, it is recommended to use one
10972d3dbb9SYuri Pankovof these if possible.
11052d2369aSRobert Mustacchi.Bl -tag -width Er
11152d2369aSRobert Mustacchi.It Er EINVAL
11252d2369aSRobert MustacchiThe address
11352d2369aSRobert Mustacchi.Fa mac
11452d2369aSRobert Mustacchiis not a valid unicast address.
11552d2369aSRobert Mustacchi.It Er EIO
11652d2369aSRobert MustacchiThe driver encountered a device or transport error while trying to
11752d2369aSRobert Mustacchiupdate the device's state.
11852d2369aSRobert Mustacchi.El
11952d2369aSRobert Mustacchi.Sh SEE ALSO
12052d2369aSRobert Mustacchi.Xr mac 9E ,
121*2c0ebdeeSRobert Mustacchi.Xr mac_capab_rings 9E ,
12252d2369aSRobert Mustacchi.Xr mac_register 9F ,
12352d2369aSRobert Mustacchi.Xr mac_register 9S
124