1*3385b472SRobert Mustacchi.\" 2*3385b472SRobert Mustacchi.\" This file and its contents are supplied under the terms of the 3*3385b472SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 4*3385b472SRobert Mustacchi.\" You may only use this file in accordance with the terms of version 5*3385b472SRobert Mustacchi.\" 1.0 of the CDDL. 6*3385b472SRobert Mustacchi.\" 7*3385b472SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 8*3385b472SRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 9*3385b472SRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 10*3385b472SRobert Mustacchi.\" 11*3385b472SRobert Mustacchi.\" 12*3385b472SRobert Mustacchi.\" Copyright (c) 2017, Joyent, Inc. 13*3385b472SRobert Mustacchi.\" 14*3385b472SRobert Mustacchi.Dd Apr 18, 2017 15*3385b472SRobert Mustacchi.Dt SCSI_HBA_IPORTMAP_CREATE 9F 16*3385b472SRobert Mustacchi.Os 17*3385b472SRobert Mustacchi.Sh NAME 18*3385b472SRobert Mustacchi.Nm scsi_hba_iportmap_create , 19*3385b472SRobert Mustacchi.Nm scsi_hba_iportmap_destroy , 20*3385b472SRobert Mustacchi.Nm scsi_hba_iportmap_iport_add , 21*3385b472SRobert Mustacchi.Nm scsi_hba_iportmap_iport_remove 22*3385b472SRobert Mustacchi.Nd create and manage an iportmap 23*3385b472SRobert Mustacchi.Sh SYNOPSIS 24*3385b472SRobert Mustacchi.In sys/scsi/scsi.h 25*3385b472SRobert Mustacchi.Ft int 26*3385b472SRobert Mustacchi.Fo scsi_hba_iportmap_create 27*3385b472SRobert Mustacchi.Fa "dev_info_t *dip" 28*3385b472SRobert Mustacchi.Fa "int csync_usec" 29*3385b472SRobert Mustacchi.Fa "int settle_usec" 30*3385b472SRobert Mustacchi.Fa "scsi_hba_iportmap_t **iportmapout" 31*3385b472SRobert Mustacchi.Fc 32*3385b472SRobert Mustacchi.Ft void 33*3385b472SRobert Mustacchi.Fo scsi_hba_iportmap_destroy 34*3385b472SRobert Mustacchi.Fa "scsi_hba_iportmap_t *iportmap" 35*3385b472SRobert Mustacchi.Fc 36*3385b472SRobert Mustacchi.Ft int 37*3385b472SRobert Mustacchi.Fo scsi_hba_iportmap_iport_add 38*3385b472SRobert Mustacchi.Fa "scsi_hba_iportmap_t *iportmap" 39*3385b472SRobert Mustacchi.Fa "char *ua" 40*3385b472SRobert Mustacchi.Fa "void *priv" 41*3385b472SRobert Mustacchi.Fc 42*3385b472SRobert Mustacchi.Ft int 43*3385b472SRobert Mustacchi.Fo scsi_hba_iportmap_iport_remove 44*3385b472SRobert Mustacchi.Fa "scsi_hba_iportmap_t *iportmap" 45*3385b472SRobert Mustacchi.Fa "char *ua" 46*3385b472SRobert Mustacchi.Fc 47*3385b472SRobert Mustacchi.Sh INTERFACE LEVEL 48*3385b472SRobert Mustacchi.Sy Evolving - 49*3385b472SRobert MustacchiThis interface is still evolving in illumos. 50*3385b472SRobert MustacchiAPI and ABI stability is not guaranteed. 51*3385b472SRobert Mustacchi.Sh PARAMETERS 52*3385b472SRobert Mustacchi.Bl -tag -width Fa 53*3385b472SRobert Mustacchi.It Fa dip 54*3385b472SRobert MustacchiPointer to 55*3385b472SRobert Mustacchi.Vt dev_info 56*3385b472SRobert Mustacchistructure. 57*3385b472SRobert Mustacchi.It Fa csync_usec 58*3385b472SRobert MustacchiA time in microseconds. 59*3385b472SRobert Mustacchi.It Fa settle_usec 60*3385b472SRobert MustacchiA time in microseconds. 61*3385b472SRobert Mustacchi.It Fa iportmap 62*3385b472SRobert MustacchiAn allocated iportmap. 63*3385b472SRobert Mustacchi.It Fa iportmapout 64*3385b472SRobert MustacchiPointer where the iportmap is stored. 65*3385b472SRobert Mustacchi.It Fa ua 66*3385b472SRobert MustacchiA character string that represents a unit address for an iport. 67*3385b472SRobert Mustacchi.It Fa priv 68*3385b472SRobert MustacchiDrivers should pass 69*3385b472SRobert Mustacchi.Dv NULL 70*3385b472SRobert Mustacchifor this field. 71*3385b472SRobert Mustacchi.El 72*3385b472SRobert Mustacchi.Sh DESCRIPTION 73*3385b472SRobert MustacchiThe 74*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_create 75*3385b472SRobert Mustacchiand 76*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_destroy 77*3385b472SRobert Mustacchifunctions are used by HBA drivers to create and destroy an iportmap. 78*3385b472SRobert MustacchiFor more information on an iportmap and its purpose, see 79*3385b472SRobert Mustacchi.Xr iportmap 9 . 80*3385b472SRobert Mustacchi.Pp 81*3385b472SRobert MustacchiThe 82*3385b472SRobert Mustacchi.Fa csync_usec 83*3385b472SRobert Mustacchiand 84*3385b472SRobert Mustacchi.Fa settle_usec 85*3385b472SRobert Mustacchiare both times measured in microseconds that control two different 86*3385b472SRobert Mustacchiproperties of the iportmap and how it behaves. 87*3385b472SRobert MustacchiThe value in 88*3385b472SRobert Mustacchi.Fa settle_usec 89*3385b472SRobert Mustacchiindicates the amount of time that the system should wait to quiesce all 90*3385b472SRobert Mustacchichanges and consider the resulting system stable. 91*3385b472SRobert MustacchiChanges will not be reported until after 92*3385b472SRobert Mustacchi.Fa settle_usec 93*3385b472SRobert Mustacchihave passed. 94*3385b472SRobert Mustacchi.Fa csync_usec 95*3385b472SRobert Mustacchiindicates how much time needs to elapse after creation before an initial 96*3385b472SRobert Mustacchienumeration has been completed. 97*3385b472SRobert Mustacchi.Pp 98*3385b472SRobert MustacchiThe 99*3385b472SRobert Mustacchi.Vt dev_info 100*3385b472SRobert Mustacchistructure passed into 101*3385b472SRobert Mustacchi.Fa dip 102*3385b472SRobert Mustacchiis usually the HBA driver's 103*3385b472SRobert Mustacchi.Vt dev_info 104*3385b472SRobert Mustacchistructure. 105*3385b472SRobert Mustacchi.Pp 106*3385b472SRobert MustacchiWhen the 107*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_iport 108*3385b472SRobert Mustacchifunction returns, 109*3385b472SRobert Mustacchi.Fa iportmapout 110*3385b472SRobert Mustacchiwill be populated with a pointer to an iportmap that can be used to add 111*3385b472SRobert Mustacchiand remove iports. 112*3385b472SRobert Mustacchi.Pp 113*3385b472SRobert MustacchiTo destroy the iportmap, drivers should use the 114*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_destroy 115*3385b472SRobert Mustacchifunction. 116*3385b472SRobert MustacchiAs part of destroying the iportmap, all associated iports will 117*3385b472SRobert Mustacchibe detached from the system by having the driver's 118*3385b472SRobert Mustacchi.Xr detach 9E 119*3385b472SRobert Mustacchientry point called. 120*3385b472SRobert Mustacchi.Pp 121*3385b472SRobert MustacchiWhen the driver needs to add an iport to the system, generally in 122*3385b472SRobert Mustacchiresponse to a hotplug event, then the driver should call the 123*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_iport_add 124*3385b472SRobert Mustacchifunction. 125*3385b472SRobert MustacchiThe value of 126*3385b472SRobert Mustacchi.Fa ua 127*3385b472SRobert Mustacchishould be a character string that uniquely identifies the device. 128*3385b472SRobert MustacchiIf the driver is using a phymap, then this unit address should be the 129*3385b472SRobert Mustacchisame one as the phymap's callback provided. 130*3385b472SRobert MustacchiOtherwise, the driver sets 131*3385b472SRobert Mustacchi.Fa ua 132*3385b472SRobert Mustacchito a unique string which is generally the iport's WWN. 133*3385b472SRobert Mustacchi.Pp 134*3385b472SRobert MustacchiWhen the corresponding iport needs to be removed, then the driver should 135*3385b472SRobert Mustacchicall the 136*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_remove 137*3385b472SRobert Mustacchifunction. 138*3385b472SRobert MustacchiThe iport to remove is indicated by the 139*3385b472SRobert Mustacchi.Fa ua 140*3385b472SRobert Mustacchiargument, which should match the value passed into the 141*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_add 142*3385b472SRobert Mustacchifunction. 143*3385b472SRobert Mustacchi.Sh CONTEXT 144*3385b472SRobert MustacchiThe 145*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_create 146*3385b472SRobert Mustacchifunction is generally called during a driver's 147*3385b472SRobert Mustacchi.Xr attach 9E 148*3385b472SRobert Mustacchientry point. 149*3385b472SRobert Mustacchi.Pp 150*3385b472SRobert MustacchiThe 151*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_destroy 152*3385b472SRobert Mustacchifunction is generally called during a driver's 153*3385b472SRobert Mustacchi.Xr detach 9E 154*3385b472SRobert Mustacchientry point. 155*3385b472SRobert Mustacchi.Pp 156*3385b472SRobert MustacchiThe 157*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_iport_add 158*3385b472SRobert Mustacchiand 159*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_iport_remove 160*3385b472SRobert Mustacchifunctions should be called from 161*3385b472SRobert Mustacchi.Sy kernel 162*3385b472SRobert Mustacchicontext. 163*3385b472SRobert Mustacchi.Sh RETURN VALUES 164*3385b472SRobert MustacchiUpon successful completion, the 165*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_create , 166*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_iport_add , 167*3385b472SRobert Mustacchiand 168*3385b472SRobert Mustacchi.Fn scsi_hba_iportmap_iport_remove 169*3385b472SRobert Mustacchifunctions return 170*3385b472SRobert Mustacchi.Dv DDI_SUCCESS. 171*3385b472SRobert MustacchiOtherwise, 172*3385b472SRobert Mustacchi.Dv DDI_FAILURE 173*3385b472SRobert Mustacchiis returned. 174*3385b472SRobert Mustacchi.Sh SEE ALSO 175*3385b472SRobert Mustacchi.Xr iport 9 , 176*3385b472SRobert Mustacchi.Xr iportmap 9 , 177*3385b472SRobert Mustacchi.Xr attach 9E , 178*3385b472SRobert Mustacchi.Xr detach 9E 179