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
197 The port notification::
203 If the LLDD wants notification when a port has been formed
220 Port and Adapter management::
222 /* Port and Adapter management */
234 - set this to point to your HA struct. You can also
239 *but* before you enable the phys to do OOB::
247 my_ha->sas_ha.sas_addr = &my_ha->sas_addr[0];
250 sas_phys[i] = &my_ha->phys[i].sas_phy;
251 sas_ports[i] = &my_ha->sas_ports[i];
254 my_ha->sas_ha.sas_phy = sas_phys;
255 my_ha->sas_ha.sas_port = sas_ports;
256 my_ha->sas_ha.num_phys = MAX_PHYS;
258 my_ha->sas_ha.lldd_port_formed = my_port_formed;
260 my_ha->sas_ha.lldd_dev_found = my_dev_found;
261 my_ha->sas_ha.lldd_dev_gone = my_dev_gone;
263 my_ha->sas_ha.lldd_execute_task = my_execute_task;
265 my_ha->sas_ha.lldd_abort_task = my_abort_task;
266 my_ha->sas_ha.lldd_abort_task_set = my_abort_task_set;
267 my_ha->sas_ha.lldd_clear_aca = my_clear_aca;
268 my_ha->sas_ha.lldd_clear_task_set = my_clear_task_set;
269 my_ha->sas_ha.lldd_I_T_nexus_reset= NULL; (2)
270 my_ha->sas_ha.lldd_lu_reset = my_lu_reset;
271 my_ha->sas_ha.lldd_query_task = my_query_task;
273 my_ha->sas_ha.lldd_clear_nexus_port = my_clear_nexus_port;
274 my_ha->sas_ha.lldd_clear_nexus_ha = my_clear_nexus_ha;
276 my_ha->sas_ha.lldd_control_phy = my_control_phy;
278 return sas_register_ha(&my_ha->sas_ha);
298 Port events, passed on a _phy_::
311 - at least one event from group C (choice),
312 - events marked M (mandatory) are mandatory (only one),
313 - events marked E (expander) if it wants the SAS layer
315 - Unmarked events are optional.
320 - when your HA got internal error and was reset.
323 - on receiving an IDENTIFY/FIS frame
326 - on receiving a primitive
329 - timer expired, loss of signal, loss of DWS, etc. [1]_
332 - DWS reset timeout timer expired [1]_
335 - Hard Reset primitive received.
338 - the device is gone [1]_
341 - OOB went fine and oob_mode is valid
344 - Error while doing OOB, the device probably
348 - SATA is present, COMWAKE not sent.
369 * -SAS_QUEUE_FULL, -ENOMEM, nothing was queued;
375 dev -- the device this task is destined to
376 task_proto -- _one_ of enum sas_proto
377 scatter -- pointer to scatter gather list array
378 num_scatter -- number of elements in scatter
379 total_xfer_len -- total number of bytes expected to be transferred
380 data_dir -- PCI_DMA_...
381 task_done -- callback when the task has finished execution
425 implements an SMP portal (Note: this is *NOT* an SMP port),