cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ql4_inline.h (2364B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * QLogic iSCSI HBA Driver
      4 * Copyright (c)  2003-2013 QLogic Corporation
      5 */
      6
      7/*
      8 *
      9 * qla4xxx_lookup_ddb_by_fw_index
     10 *	This routine locates a device handle given the firmware device
     11 *	database index.	 If device doesn't exist, returns NULL.
     12 *
     13 * Input:
     14 *	ha - Pointer to host adapter structure.
     15 *	fw_ddb_index - Firmware's device database index
     16 *
     17 * Returns:
     18 *	Pointer to the corresponding internal device database structure
     19 */
     20static inline struct ddb_entry *
     21qla4xxx_lookup_ddb_by_fw_index(struct scsi_qla_host *ha, uint32_t fw_ddb_index)
     22{
     23	struct ddb_entry *ddb_entry = NULL;
     24
     25	if ((fw_ddb_index < MAX_DDB_ENTRIES) &&
     26	    (ha->fw_ddb_index_map[fw_ddb_index] !=
     27		(struct ddb_entry *) INVALID_ENTRY)) {
     28		ddb_entry = ha->fw_ddb_index_map[fw_ddb_index];
     29	}
     30
     31	DEBUG3(printk("scsi%d: %s: ddb [%d], ddb_entry = %p\n",
     32	    ha->host_no, __func__, fw_ddb_index, ddb_entry));
     33
     34	return ddb_entry;
     35}
     36
     37static inline void
     38__qla4xxx_enable_intrs(struct scsi_qla_host *ha)
     39{
     40	if (is_qla4022(ha) | is_qla4032(ha)) {
     41		writel(set_rmask(IMR_SCSI_INTR_ENABLE),
     42		       &ha->reg->u1.isp4022.intr_mask);
     43		readl(&ha->reg->u1.isp4022.intr_mask);
     44	} else {
     45		writel(set_rmask(CSR_SCSI_INTR_ENABLE), &ha->reg->ctrl_status);
     46		readl(&ha->reg->ctrl_status);
     47	}
     48	set_bit(AF_INTERRUPTS_ON, &ha->flags);
     49}
     50
     51static inline void
     52__qla4xxx_disable_intrs(struct scsi_qla_host *ha)
     53{
     54	if (is_qla4022(ha) | is_qla4032(ha)) {
     55		writel(clr_rmask(IMR_SCSI_INTR_ENABLE),
     56		       &ha->reg->u1.isp4022.intr_mask);
     57		readl(&ha->reg->u1.isp4022.intr_mask);
     58	} else {
     59		writel(clr_rmask(CSR_SCSI_INTR_ENABLE), &ha->reg->ctrl_status);
     60		readl(&ha->reg->ctrl_status);
     61	}
     62	clear_bit(AF_INTERRUPTS_ON, &ha->flags);
     63}
     64
     65static inline void
     66qla4xxx_enable_intrs(struct scsi_qla_host *ha)
     67{
     68	unsigned long flags;
     69
     70	spin_lock_irqsave(&ha->hardware_lock, flags);
     71	__qla4xxx_enable_intrs(ha);
     72	spin_unlock_irqrestore(&ha->hardware_lock, flags);
     73}
     74
     75static inline void
     76qla4xxx_disable_intrs(struct scsi_qla_host *ha)
     77{
     78	unsigned long flags;
     79
     80	spin_lock_irqsave(&ha->hardware_lock, flags);
     81	__qla4xxx_disable_intrs(ha);
     82	spin_unlock_irqrestore(&ha->hardware_lock, flags);
     83}
     84
     85static inline int qla4xxx_get_chap_type(struct ql4_chap_table *chap_entry)
     86{
     87	int type;
     88
     89	if (chap_entry->flags & BIT_7)
     90		type = LOCAL_CHAP;
     91	else
     92		type = BIDI_CHAP;
     93
     94	return type;
     95}