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