Lines Matching refs:sas_ha

93 int sas_register_ha(struct sas_ha_struct *sas_ha)
98 mutex_init(&sas_ha->disco_mutex);
99 spin_lock_init(&sas_ha->phy_port_lock);
100 sas_hash_addr(sas_ha->hashed_sas_addr, sas_ha->sas_addr);
102 set_bit(SAS_HA_REGISTERED, &sas_ha->state);
103 spin_lock_init(&sas_ha->lock);
104 mutex_init(&sas_ha->drain_mutex);
105 init_waitqueue_head(&sas_ha->eh_wait_q);
106 INIT_LIST_HEAD(&sas_ha->defer_q);
107 INIT_LIST_HEAD(&sas_ha->eh_dev_q);
109 sas_ha->event_thres = SAS_PHY_SHUTDOWN_THRES;
111 error = sas_register_phys(sas_ha);
117 error = sas_register_ports(sas_ha);
124 snprintf(name, sizeof(name), "%s_event_q", dev_name(sas_ha->dev));
125 sas_ha->event_q = create_singlethread_workqueue(name);
126 if (!sas_ha->event_q)
129 snprintf(name, sizeof(name), "%s_disco_q", dev_name(sas_ha->dev));
130 sas_ha->disco_q = create_singlethread_workqueue(name);
131 if (!sas_ha->disco_q)
134 INIT_LIST_HEAD(&sas_ha->eh_done_q);
135 INIT_LIST_HEAD(&sas_ha->eh_ata_q);
140 destroy_workqueue(sas_ha->event_q);
142 sas_unregister_ports(sas_ha);
149 static void sas_disable_events(struct sas_ha_struct *sas_ha)
154 mutex_lock(&sas_ha->drain_mutex);
155 spin_lock_irq(&sas_ha->lock);
156 clear_bit(SAS_HA_REGISTERED, &sas_ha->state);
157 spin_unlock_irq(&sas_ha->lock);
158 __sas_drain_work(sas_ha);
159 mutex_unlock(&sas_ha->drain_mutex);
162 int sas_unregister_ha(struct sas_ha_struct *sas_ha)
164 sas_disable_events(sas_ha);
165 sas_unregister_ports(sas_ha);
168 mutex_lock(&sas_ha->drain_mutex);
169 __sas_drain_work(sas_ha);
170 mutex_unlock(&sas_ha->drain_mutex);
172 destroy_workqueue(sas_ha->disco_q);
173 destroy_workqueue(sas_ha->event_q);
183 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
184 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
186 to_sas_internal(sas_ha->shost->transportt);
232 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
233 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
235 to_sas_internal(sas_ha->shost->transportt);
266 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
267 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
269 to_sas_internal(sas_ha->shost->transportt);
303 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
304 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
306 to_sas_internal(sas_ha->shost->transportt);
339 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
340 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
342 to_sas_internal(sas_ha->shost->transportt);
642 struct sas_ha_struct *sas_ha = phy->ha;
644 to_sas_internal(sas_ha->shost->transportt);