Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvar...
[pandora-kernel.git] / drivers / scsi / qla2xxx / qla_inline.h
index 5e0a709..84c2fea 100644 (file)
@@ -37,7 +37,10 @@ qla2x00_poll(struct rsp_que *rsp)
        unsigned long flags;
        struct qla_hw_data *ha = rsp->hw;
        local_irq_save(flags);
-       ha->isp_ops->intr_handler(0, rsp);
+       if (IS_QLA82XX(ha))
+               qla82xx_poll(0, rsp);
+       else
+               ha->isp_ops->intr_handler(0, rsp);
        local_irq_restore(flags);
 }
 
@@ -64,3 +67,19 @@ qla2x00_is_reserved_id(scsi_qla_host_t *vha, uint16_t loop_id)
        return ((loop_id > ha->max_loop_id && loop_id < SNS_FIRST_LOOP_ID) ||
            loop_id == MANAGEMENT_SERVER || loop_id == BROADCAST);
 }
+
+static inline void
+qla2x00_clean_dsd_pool(struct qla_hw_data *ha, srb_t *sp)
+{
+       struct dsd_dma *dsd_ptr, *tdsd_ptr;
+
+       /* clean up allocated prev pool */
+       list_for_each_entry_safe(dsd_ptr, tdsd_ptr,
+           &((struct crc_context *)sp->ctx)->dsd_list, list) {
+               dma_pool_free(ha->dl_dma_pool, dsd_ptr->dsd_addr,
+                   dsd_ptr->dsd_list_dma);
+               list_del(&dsd_ptr->list);
+               kfree(dsd_ptr);
+       }
+       INIT_LIST_HEAD(&((struct crc_context *)sp->ctx)->dsd_list);
+}