Lines Matching refs:ha

30 void sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw)  in sas_queue_work()  argument
32 if (!test_bit(SAS_HA_REGISTERED, &ha->state)) in sas_queue_work()
35 if (test_bit(SAS_HA_DRAINING, &ha->state)) { in sas_queue_work()
38 list_add(&sw->drain_node, &ha->defer_q); in sas_queue_work()
40 scsi_queue_work(ha->core.shost, &sw->work); in sas_queue_work()
45 struct sas_ha_struct *ha) in sas_queue_event() argument
50 spin_lock_irqsave(&ha->lock, flags); in sas_queue_event()
51 sas_queue_work(ha, work); in sas_queue_event()
52 spin_unlock_irqrestore(&ha->lock, flags); in sas_queue_event()
57 void __sas_drain_work(struct sas_ha_struct *ha) in __sas_drain_work() argument
59 struct workqueue_struct *wq = ha->core.shost->work_q; in __sas_drain_work()
62 set_bit(SAS_HA_DRAINING, &ha->state); in __sas_drain_work()
64 spin_lock_irq(&ha->lock); in __sas_drain_work()
65 spin_unlock_irq(&ha->lock); in __sas_drain_work()
69 spin_lock_irq(&ha->lock); in __sas_drain_work()
70 clear_bit(SAS_HA_DRAINING, &ha->state); in __sas_drain_work()
71 list_for_each_entry_safe(sw, _sw, &ha->defer_q, drain_node) { in __sas_drain_work()
73 sas_queue_work(ha, sw); in __sas_drain_work()
75 spin_unlock_irq(&ha->lock); in __sas_drain_work()
78 int sas_drain_work(struct sas_ha_struct *ha) in sas_drain_work() argument
82 err = mutex_lock_interruptible(&ha->drain_mutex); in sas_drain_work()
85 if (test_bit(SAS_HA_REGISTERED, &ha->state)) in sas_drain_work()
86 __sas_drain_work(ha); in sas_drain_work()
87 mutex_unlock(&ha->drain_mutex); in sas_drain_work()
93 void sas_disable_revalidation(struct sas_ha_struct *ha) in sas_disable_revalidation() argument
95 mutex_lock(&ha->disco_mutex); in sas_disable_revalidation()
96 set_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state); in sas_disable_revalidation()
97 mutex_unlock(&ha->disco_mutex); in sas_disable_revalidation()
100 void sas_enable_revalidation(struct sas_ha_struct *ha) in sas_enable_revalidation() argument
104 mutex_lock(&ha->disco_mutex); in sas_enable_revalidation()
105 clear_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state); in sas_enable_revalidation()
106 for (i = 0; i < ha->num_phys; i++) { in sas_enable_revalidation()
107 struct asd_sas_port *port = ha->sas_port[i]; in sas_enable_revalidation()
114 sas_queue_event(ev, &d->pending, &d->disc_work[ev].work, ha); in sas_enable_revalidation()
116 mutex_unlock(&ha->disco_mutex); in sas_enable_revalidation()
129 struct sas_ha_struct *ha = phy->ha; in notify_port_event() local
134 &phy->port_events[event].work, ha); in notify_port_event()
139 struct sas_ha_struct *ha = phy->ha; in sas_notify_phy_event() local
144 &phy->phy_events[event].work, ha); in sas_notify_phy_event()
157 sas_ha->ha_events[i].ha = sas_ha; in sas_init_events()