Lines Matching refs:sas_ha

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