Lines Matching refs:sas_ha
96 int sas_register_ha(struct sas_ha_struct *sas_ha)
101 mutex_init(&sas_ha->disco_mutex);
102 spin_lock_init(&sas_ha->phy_port_lock);
103 sas_hash_addr(sas_ha->hashed_sas_addr, sas_ha->sas_addr);
105 set_bit(SAS_HA_REGISTERED, &sas_ha->state);
106 spin_lock_init(&sas_ha->lock);
107 mutex_init(&sas_ha->drain_mutex);
108 init_waitqueue_head(&sas_ha->eh_wait_q);
109 INIT_LIST_HEAD(&sas_ha->defer_q);
110 INIT_LIST_HEAD(&sas_ha->eh_dev_q);
112 sas_ha->event_thres = SAS_PHY_SHUTDOWN_THRES;
114 error = sas_register_phys(sas_ha);
120 error = sas_register_ports(sas_ha);
127 snprintf(name, sizeof(name), "%s_event_q", dev_name(sas_ha->dev));
128 sas_ha->event_q = create_singlethread_workqueue(name);
129 if (!sas_ha->event_q)
132 snprintf(name, sizeof(name), "%s_disco_q", dev_name(sas_ha->dev));
133 sas_ha->disco_q = create_singlethread_workqueue(name);
134 if (!sas_ha->disco_q)
137 INIT_LIST_HEAD(&sas_ha->eh_done_q);
138 INIT_LIST_HEAD(&sas_ha->eh_ata_q);
143 destroy_workqueue(sas_ha->event_q);
145 sas_unregister_ports(sas_ha);
151 static void sas_disable_events(struct sas_ha_struct *sas_ha)
156 mutex_lock(&sas_ha->drain_mutex);
157 spin_lock_irq(&sas_ha->lock);
158 clear_bit(SAS_HA_REGISTERED, &sas_ha->state);
159 spin_unlock_irq(&sas_ha->lock);
160 __sas_drain_work(sas_ha);
161 mutex_unlock(&sas_ha->drain_mutex);
164 int sas_unregister_ha(struct sas_ha_struct *sas_ha)
166 sas_disable_events(sas_ha);
167 sas_unregister_ports(sas_ha);
170 mutex_lock(&sas_ha->drain_mutex);
171 __sas_drain_work(sas_ha);
172 mutex_unlock(&sas_ha->drain_mutex);
174 destroy_workqueue(sas_ha->disco_q);
175 destroy_workqueue(sas_ha->event_q);
184 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
185 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
187 to_sas_internal(sas_ha->core.shost->transportt);
233 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
234 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
236 to_sas_internal(sas_ha->core.shost->transportt);
267 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
268 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
270 to_sas_internal(sas_ha->core.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->core.shost->transportt);
338 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
339 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
341 to_sas_internal(sas_ha->core.shost->transportt);
591 struct sas_ha_struct *sas_ha = phy->ha;
593 to_sas_internal(sas_ha->core.shost->transportt);