Lines Matching +full:port +full:- +full:phys
1 .. SPDX-License-Identifier: GPL-2.0
13 * SAS Phy/Port/HA event management (LLDD generates,
15 * SAS Port management (creation/destruction),
39 It will then return. Then you enable your phys to actually
47 ------------------
58 And then all the phys are an array of my_phy in your HA
61 Then as you go along and initialize your phys you also
65 In general, the phys are managed by the LLDD and the ports
66 are managed by the SAS layer. So the phys are initialized
75 - must be set (0/1)
78 - must be set [0,MAX_PHYS)]
81 - must be set
84 - you set this when OOB has finished and then notify
88 - this normally points to an array holding the sas
93 - set this when you (LLDD) receive an
96 or provide a different SAS address on that phy/port and this
103 - this is where you copy the IDENTIFY/FIS frame
112 - this is where primitives go when they're
116 port
117 - this points to the sas_port if the phy belongs
118 to a port -- the LLDD only reads this. It points to the
122 - may be set; the SAS layer sets it anyway.
125 - you should set this to point to your phy so you
128 embedded you can also use container_of -- whatever you
133 -------------------
135 The LLDD doesn't set any fields of this struct -- it only
139 haven't heard of a HA having more than 8 phys.
142 - I haven't found use for that -- maybe other
143 LLDD who wish to have internal port representation can make
147 ------------------------
155 struct my_phy phys[MAX_PHYS];
160 (1) If your LLDD doesn't have its own port representation.
168 - since the SAS layer doesn't want to mess with
178 - an array of pointers to structures. (see
183 - the number of phys present in the sas_phy array,
186 port) so we drop the num_ports, and only use
195 The port notification::
201 If the LLDD wants notification when a port has been formed
217 Port and Adapter management::
219 /* Port and Adapter management */
231 - set this to point to your HA struct. You can also
236 *but* before you enable the phys to do OOB::
244 my_ha->sas_ha.sas_addr = &my_ha->sas_addr[0];
247 sas_phys[i] = &my_ha->phys[i].sas_phy;
248 sas_ports[i] = &my_ha->sas_ports[i];
251 my_ha->sas_ha.sas_phy = sas_phys;
252 my_ha->sas_ha.sas_port = sas_ports;
253 my_ha->sas_ha.num_phys = MAX_PHYS;
255 my_ha->sas_ha.lldd_port_formed = my_port_formed;
257 my_ha->sas_ha.lldd_dev_found = my_dev_found;
258 my_ha->sas_ha.lldd_dev_gone = my_dev_gone;
260 my_ha->sas_ha.lldd_execute_task = my_execute_task;
262 my_ha->sas_ha.lldd_abort_task = my_abort_task;
263 my_ha->sas_ha.lldd_abort_task_set = my_abort_task_set;
264 my_ha->sas_ha.lldd_clear_task_set = my_clear_task_set;
265 my_ha->sas_ha.lldd_I_T_nexus_reset= NULL; (2)
266 my_ha->sas_ha.lldd_lu_reset = my_lu_reset;
267 my_ha->sas_ha.lldd_query_task = my_query_task;
269 my_ha->sas_ha.lldd_clear_nexus_port = my_clear_nexus_port;
270 my_ha->sas_ha.lldd_clear_nexus_ha = my_clear_nexus_ha;
272 my_ha->sas_ha.lldd_control_phy = my_control_phy;
274 return sas_register_ha(&my_ha->sas_ha);
294 Port events, passed on a _phy_::
307 - at least one event from group C (choice),
308 - events marked M (mandatory) are mandatory (only one),
309 - events marked E (expander) if it wants the SAS layer
311 - Unmarked events are optional.
316 - when your HA got internal error and was reset.
319 - on receiving an IDENTIFY/FIS frame
322 - on receiving a primitive
325 - timer expired, loss of signal, loss of DWS, etc. [1]_
328 - DWS reset timeout timer expired [1]_
331 - Hard Reset primitive received.
334 - the device is gone [1]_
337 - OOB went fine and oob_mode is valid
340 - Error while doing OOB, the device probably
344 - SATA is present, COMWAKE not sent.
365 * -SAS_QUEUE_FULL, -ENOMEM, nothing was queued;
371 dev -- the device this task is destined to
372 task_proto -- _one_ of enum sas_proto
373 scatter -- pointer to scatter gather list array
374 num_scatter -- number of elements in scatter
375 total_xfer_len -- total number of bytes expected to be transferred
376 data_dir -- PCI_DMA_...
377 task_done -- callback when the task has finished execution
421 implements an SMP portal (Note: this is *NOT* an SMP port),