Lines Matching refs:port
66 static int sas_get_port_device(struct asd_sas_port *port) in sas_get_port_device() argument
77 spin_lock_irq(&port->phy_list_lock); in sas_get_port_device()
78 if (list_empty(&port->phy_list)) { in sas_get_port_device()
79 spin_unlock_irq(&port->phy_list_lock); in sas_get_port_device()
83 phy = container_of(port->phy_list.next, struct asd_sas_phy, port_phy_el); in sas_get_port_device()
88 spin_unlock_irq(&port->phy_list_lock); in sas_get_port_device()
90 if (dev->frame_rcvd[0] == 0x34 && port->oob_mode == SATA_OOB_MODE) { in sas_get_port_device()
110 dev->port = port; in sas_get_port_device()
120 rphy = sas_end_device_alloc(port->port); in sas_get_port_device()
123 rphy = sas_expander_alloc(port->port, in sas_get_port_device()
127 rphy = sas_expander_alloc(port->port, in sas_get_port_device()
142 memcpy(dev->sas_addr, port->attached_sas_addr, SAS_ADDR_SIZE); in sas_get_port_device()
145 port->port_dev = dev; in sas_get_port_device()
146 dev->linkrate = port->linkrate; in sas_get_port_device()
147 dev->min_linkrate = port->linkrate; in sas_get_port_device()
148 dev->max_linkrate = port->linkrate; in sas_get_port_device()
149 dev->pathways = port->num_phys; in sas_get_port_device()
150 memset(port->disc.fanout_sas_addr, 0, SAS_ADDR_SIZE); in sas_get_port_device()
151 memset(port->disc.eeds_a, 0, SAS_ADDR_SIZE); in sas_get_port_device()
152 memset(port->disc.eeds_b, 0, SAS_ADDR_SIZE); in sas_get_port_device()
153 port->disc.max_level = 0; in sas_get_port_device()
154 sas_device_set_phy(dev, port->port); in sas_get_port_device()
160 list_add_tail(&dev->disco_list_node, &port->disco_list); in sas_get_port_device()
162 spin_lock_irq(&port->dev_list_lock); in sas_get_port_device()
163 list_add_tail(&dev->dev_list_node, &port->dev_list); in sas_get_port_device()
164 spin_unlock_irq(&port->dev_list_lock); in sas_get_port_device()
167 spin_lock_irq(&port->phy_list_lock); in sas_get_port_device()
168 list_for_each_entry(phy, &port->phy_list, port_phy_el) in sas_get_port_device()
170 spin_unlock_irq(&port->phy_list_lock); in sas_get_port_device()
180 struct sas_ha_struct *sas_ha = dev->port->ha; in sas_notify_lldd_dev_found()
202 struct sas_ha_struct *sas_ha = dev->port->ha; in sas_notify_lldd_dev_gone()
219 struct asd_sas_port *port = ev->port; in sas_probe_devices() local
221 clear_bit(DISCE_PROBE, &port->disc.pending); in sas_probe_devices()
224 list_for_each_entry(dev, &port->disco_list, disco_list_node) { in sas_probe_devices()
225 spin_lock_irq(&port->dev_list_lock); in sas_probe_devices()
226 list_add_tail(&dev->dev_list_node, &port->dev_list); in sas_probe_devices()
227 spin_unlock_irq(&port->dev_list_lock); in sas_probe_devices()
230 sas_probe_sata(port); in sas_probe_devices()
232 list_for_each_entry_safe(dev, n, &port->disco_list, disco_list_node) { in sas_probe_devices()
248 struct asd_sas_port *port = ev->port; in sas_suspend_devices() local
249 struct Scsi_Host *shost = port->ha->core.shost; in sas_suspend_devices()
252 clear_bit(DISCE_SUSPEND, &port->disc.pending); in sas_suspend_devices()
254 sas_suspend_sata(port); in sas_suspend_devices()
260 list_for_each_entry(dev, &port->dev_list, dev_list_node) in sas_suspend_devices()
266 list_for_each_entry(phy, &port->phy_list, port_phy_el) { in sas_suspend_devices()
270 port->suspended = 1; in sas_suspend_devices()
277 struct asd_sas_port *port = ev->port; in sas_resume_devices() local
279 clear_bit(DISCE_RESUME, &port->disc.pending); in sas_resume_devices()
281 sas_resume_sata(port); in sas_resume_devices()
297 sas_discover_event(dev->port, DISCE_PROBE); in sas_discover_end_dev()
329 static void sas_unregister_common_dev(struct asd_sas_port *port, struct domain_device *dev) in sas_unregister_common_dev() argument
331 struct sas_ha_struct *ha = port->ha; in sas_unregister_common_dev()
335 dev->port->port_dev = NULL; in sas_unregister_common_dev()
339 spin_lock_irq(&port->dev_list_lock); in sas_unregister_common_dev()
343 spin_unlock_irq(&port->dev_list_lock); in sas_unregister_common_dev()
360 struct asd_sas_port *port = ev->port; in sas_destruct_devices() local
362 clear_bit(DISCE_DESTRUCT, &port->disc.pending); in sas_destruct_devices()
364 list_for_each_entry_safe(dev, n, &port->destroy_list, disco_list_node) { in sas_destruct_devices()
369 sas_unregister_common_dev(port, dev); in sas_destruct_devices()
373 void sas_unregister_dev(struct asd_sas_port *port, struct domain_device *dev) in sas_unregister_dev() argument
380 sas_unregister_common_dev(port, dev); in sas_unregister_dev()
386 list_move_tail(&dev->disco_list_node, &port->destroy_list); in sas_unregister_dev()
387 sas_discover_event(dev->port, DISCE_DESTRUCT); in sas_unregister_dev()
391 void sas_unregister_domain_devices(struct asd_sas_port *port, int gone) in sas_unregister_domain_devices() argument
395 list_for_each_entry_safe_reverse(dev, n, &port->dev_list, dev_list_node) { in sas_unregister_domain_devices()
398 sas_unregister_dev(port, dev); in sas_unregister_domain_devices()
401 list_for_each_entry_safe(dev, n, &port->disco_list, disco_list_node) in sas_unregister_domain_devices()
402 sas_unregister_dev(port, dev); in sas_unregister_domain_devices()
404 port->port->rphy = NULL; in sas_unregister_domain_devices()
408 void sas_device_set_phy(struct domain_device *dev, struct sas_port *port) in sas_device_set_phy() argument
416 ha = dev->port->ha; in sas_device_set_phy()
417 new_phy = sas_port_get_phy(port); in sas_device_set_phy()
444 struct asd_sas_port *port = ev->port; in sas_discover_domain() local
446 clear_bit(DISCE_DISCOVER_DOMAIN, &port->disc.pending); in sas_discover_domain()
448 if (port->port_dev) in sas_discover_domain()
451 error = sas_get_port_device(port); in sas_discover_domain()
454 dev = port->port_dev; in sas_discover_domain()
456 SAS_DPRINTK("DOING DISCOVERY on port %d, pid:%d\n", port->id, in sas_discover_domain()
485 spin_lock_irq(&port->dev_list_lock); in sas_discover_domain()
487 spin_unlock_irq(&port->dev_list_lock); in sas_discover_domain()
490 port->port_dev = NULL; in sas_discover_domain()
493 SAS_DPRINTK("DONE DISCOVERY on port %d, pid:%d, result:%d\n", port->id, in sas_discover_domain()
501 struct asd_sas_port *port = ev->port; in sas_revalidate_domain() local
502 struct sas_ha_struct *ha = port->ha; in sas_revalidate_domain()
503 struct domain_device *ddev = port->port_dev; in sas_revalidate_domain()
509 port->id, task_pid_nr(current)); in sas_revalidate_domain()
513 clear_bit(DISCE_REVALIDATE_DOMAIN, &port->disc.pending); in sas_revalidate_domain()
515 SAS_DPRINTK("REVALIDATING DOMAIN on port %d, pid:%d\n", port->id, in sas_revalidate_domain()
523 port->id, task_pid_nr(current), res); in sas_revalidate_domain()
553 int sas_discover_event(struct asd_sas_port *port, enum discover_event ev) in sas_discover_event() argument
557 if (!port) in sas_discover_event()
559 disc = &port->disc; in sas_discover_event()
563 sas_chain_event(ev, &disc->pending, &disc->disc_work[ev].work, port->ha); in sas_discover_event()
574 void sas_init_disc(struct sas_discovery *disc, struct asd_sas_port *port) in sas_init_disc() argument
590 disc->disc_work[i].port = port; in sas_init_disc()