Lines Matching refs:sas_ha

111 int sas_register_ha(struct sas_ha_struct *sas_ha)  in sas_register_ha()  argument
116 mutex_init(&sas_ha->disco_mutex); in sas_register_ha()
117 spin_lock_init(&sas_ha->phy_port_lock); in sas_register_ha()
118 sas_hash_addr(sas_ha->hashed_sas_addr, sas_ha->sas_addr); in sas_register_ha()
120 set_bit(SAS_HA_REGISTERED, &sas_ha->state); in sas_register_ha()
121 spin_lock_init(&sas_ha->lock); in sas_register_ha()
122 mutex_init(&sas_ha->drain_mutex); in sas_register_ha()
123 init_waitqueue_head(&sas_ha->eh_wait_q); in sas_register_ha()
124 INIT_LIST_HEAD(&sas_ha->defer_q); in sas_register_ha()
125 INIT_LIST_HEAD(&sas_ha->eh_dev_q); in sas_register_ha()
127 sas_ha->event_thres = SAS_PHY_SHUTDOWN_THRES; in sas_register_ha()
129 error = sas_register_phys(sas_ha); in sas_register_ha()
135 error = sas_register_ports(sas_ha); in sas_register_ha()
141 error = sas_init_events(sas_ha); in sas_register_ha()
148 snprintf(name, sizeof(name), "%s_event_q", dev_name(sas_ha->dev)); in sas_register_ha()
149 sas_ha->event_q = create_singlethread_workqueue(name); in sas_register_ha()
150 if (!sas_ha->event_q) in sas_register_ha()
153 snprintf(name, sizeof(name), "%s_disco_q", dev_name(sas_ha->dev)); in sas_register_ha()
154 sas_ha->disco_q = create_singlethread_workqueue(name); in sas_register_ha()
155 if (!sas_ha->disco_q) in sas_register_ha()
158 INIT_LIST_HEAD(&sas_ha->eh_done_q); in sas_register_ha()
159 INIT_LIST_HEAD(&sas_ha->eh_ata_q); in sas_register_ha()
164 destroy_workqueue(sas_ha->event_q); in sas_register_ha()
166 sas_unregister_ports(sas_ha); in sas_register_ha()
172 static void sas_disable_events(struct sas_ha_struct *sas_ha) in sas_disable_events() argument
177 mutex_lock(&sas_ha->drain_mutex); in sas_disable_events()
178 spin_lock_irq(&sas_ha->lock); in sas_disable_events()
179 clear_bit(SAS_HA_REGISTERED, &sas_ha->state); in sas_disable_events()
180 spin_unlock_irq(&sas_ha->lock); in sas_disable_events()
181 __sas_drain_work(sas_ha); in sas_disable_events()
182 mutex_unlock(&sas_ha->drain_mutex); in sas_disable_events()
185 int sas_unregister_ha(struct sas_ha_struct *sas_ha) in sas_unregister_ha() argument
187 sas_disable_events(sas_ha); in sas_unregister_ha()
188 sas_unregister_ports(sas_ha); in sas_unregister_ha()
191 mutex_lock(&sas_ha->drain_mutex); in sas_unregister_ha()
192 __sas_drain_work(sas_ha); in sas_unregister_ha()
193 mutex_unlock(&sas_ha->drain_mutex); in sas_unregister_ha()
195 destroy_workqueue(sas_ha->disco_q); in sas_unregister_ha()
196 destroy_workqueue(sas_ha->event_q); in sas_unregister_ha()
205 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost); in sas_get_linkerrors() local
206 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number]; in sas_get_linkerrors()
208 to_sas_internal(sas_ha->core.shost->transportt); in sas_get_linkerrors()
254 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost); in transport_sas_phy_reset() local
255 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number]; in transport_sas_phy_reset()
257 to_sas_internal(sas_ha->core.shost->transportt); in transport_sas_phy_reset()
288 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost); in sas_phy_enable() local
289 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number]; in sas_phy_enable()
291 to_sas_internal(sas_ha->core.shost->transportt); in sas_phy_enable()
324 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost); in sas_phy_reset() local
325 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number]; in sas_phy_reset()
327 to_sas_internal(sas_ha->core.shost->transportt); in sas_phy_reset()
359 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost); in sas_set_phy_speed() local
360 struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number]; in sas_set_phy_speed()
362 to_sas_internal(sas_ha->core.shost->transportt); in sas_set_phy_speed()
613 struct sas_ha_struct *sas_ha = phy->ha; in sas_alloc_event() local
615 to_sas_internal(sas_ha->core.shost->transportt); in sas_alloc_event()