xref: /illumos-gate/usr/src/man/man9f/scsi_hba_iportmap_create.9f (revision 3385b4726f1b09aa9511340017fb23c7cde6aadd)
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