diff mbox series

[v2,07/13] qla2xxx: edif: replace list_for_each_safe with list_for_each_entry_safe

Message ID 20211021073208.27582-8-njavali@marvell.com (mailing list archive)
State Superseded
Headers show
Series qla2xxx - misc driver and EDIF bug fixes | expand

Commit Message

Nilesh Javali Oct. 21, 2021, 7:32 a.m. UTC
From: Quinn Tran <qutran@marvell.com>

This patch is per review comment by Hannes Reinecke from
previous submission to replace list_for_each_safe with
list_for_each_entry_safe.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
---
 drivers/scsi/qla2xxx/qla_edif.c | 39 ++++++++-------------------------
 drivers/scsi/qla2xxx/qla_edif.h |  1 -
 drivers/scsi/qla2xxx/qla_os.c   |  8 +++----
 3 files changed, 13 insertions(+), 35 deletions(-)

Comments

Himanshu Madhani Oct. 21, 2021, 2:22 p.m. UTC | #1
> On Oct 21, 2021, at 2:32 AM, Nilesh Javali <njavali@marvell.com> wrote:
> 
> From: Quinn Tran <qutran@marvell.com>
> 
> This patch is per review comment by Hannes Reinecke from
> previous submission to replace list_for_each_safe with
> list_for_each_entry_safe.
> 
> Reviewed-by: Hannes Reinecke <hare@suse.de>
> Signed-off-by: Quinn Tran <qutran@marvell.com>
> Signed-off-by: Nilesh Javali <njavali@marvell.com>
> ---
> drivers/scsi/qla2xxx/qla_edif.c | 39 ++++++++-------------------------
> drivers/scsi/qla2xxx/qla_edif.h |  1 -
> drivers/scsi/qla2xxx/qla_os.c   |  8 +++----
> 3 files changed, 13 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c
> index b4eca966067a..ca3b947770b9 100644
> --- a/drivers/scsi/qla2xxx/qla_edif.c
> +++ b/drivers/scsi/qla2xxx/qla_edif.c
> @@ -1674,41 +1674,25 @@ static struct enode *
> qla_enode_find(scsi_qla_host_t *vha, uint32_t ntype, uint32_t p1, uint32_t p2)
> {
> 	struct enode		*node_rtn = NULL;
> -	struct enode		*list_node = NULL;
> +	struct enode		*list_node, *q;
> 	unsigned long		flags;
> -	struct list_head	*pos, *q;
> 	uint32_t		sid;
> -	uint32_t		rw_flag;
> 	struct purexevent	*purex;
> 
> 	/* secure the list from moving under us */
> 	spin_lock_irqsave(&vha->pur_cinfo.pur_lock, flags);
> 
> -	list_for_each_safe(pos, q, &vha->pur_cinfo.head) {
> -		list_node = list_entry(pos, struct enode, list);
> +	list_for_each_entry_safe(list_node, q, &vha->pur_cinfo.head, list) {
> 
> 		/* node type determines what p1 and p2 are */
> 		purex = &list_node->u.purexinfo;
> 		sid = p1;
> -		rw_flag = p2;
> 
> 		if (purex->pur_info.pur_sid.b24 == sid) {
> -			if (purex->pur_info.pur_pend == 1 &&
> -			    rw_flag == PUR_GET) {
> -				/*
> -				 * if the receive is in progress
> -				 * and its a read/get then can't
> -				 * transfer yet
> -				 */
> -				ql_dbg(ql_dbg_edif, vha, 0x9106,
> -				    "%s purex xfer in progress for sid=%x\n",
> -				    __func__, sid);
> -			} else {
> -				/* found it and its complete */
> -				node_rtn = list_node;
> -				list_del(pos);
> -				break;
> -			}
> +			/* found it and its complete */
> +			node_rtn = list_node;
> +			list_del(&list_node->list);
> +			break;
> 		}
> 	}
> 
> @@ -2419,7 +2403,6 @@ void qla24xx_auth_els(scsi_qla_host_t *vha, void **pkt, struct rsp_que **rsp)
> 
> 	purex = &ptr->u.purexinfo;
> 	purex->pur_info.pur_sid = a.did;
> -	purex->pur_info.pur_pend = 0;
> 	purex->pur_info.pur_bytes_rcvd = totlen;
> 	purex->pur_info.pur_rx_xchg_address = le32_to_cpu(p->rx_xchg_addr);
> 	purex->pur_info.pur_nphdl = le16_to_cpu(p->nport_handle);
> @@ -3171,18 +3154,14 @@ static uint16_t qla_edif_sadb_get_sa_index(fc_port_t *fcport,
> /* release any sadb entries -- only done at teardown */
> void qla_edif_sadb_release(struct qla_hw_data *ha)
> {
> -	struct list_head *pos;
> -	struct list_head *tmp;
> -	struct edif_sa_index_entry *entry;
> +	struct edif_sa_index_entry *entry, *tmp;
> 
> -	list_for_each_safe(pos, tmp, &ha->sadb_rx_index_list) {
> -		entry = list_entry(pos, struct edif_sa_index_entry, next);
> +	list_for_each_entry_safe(entry, tmp, &ha->sadb_rx_index_list, next) {
> 		list_del(&entry->next);
> 		kfree(entry);
> 	}
> 
> -	list_for_each_safe(pos, tmp, &ha->sadb_tx_index_list) {
> -		entry = list_entry(pos, struct edif_sa_index_entry, next);
> +	list_for_each_entry_safe(entry, tmp, &ha->sadb_tx_index_list, next) {
> 		list_del(&entry->next);
> 		kfree(entry);
> 	}
> diff --git a/drivers/scsi/qla2xxx/qla_edif.h b/drivers/scsi/qla2xxx/qla_edif.h
> index 9e8f28d0caa1..cd54c1dfe3cb 100644
> --- a/drivers/scsi/qla2xxx/qla_edif.h
> +++ b/drivers/scsi/qla2xxx/qla_edif.h
> @@ -102,7 +102,6 @@ struct dinfo {
> };
> 
> struct pur_ninfo {
> -	unsigned int	pur_pend:1;
> 	port_id_t       pur_sid;
> 	port_id_t	pur_did;
> 	uint8_t		vp_idx;
> diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
> index 3fca6b8bb23f..df0e46ef3e96 100644
> --- a/drivers/scsi/qla2xxx/qla_os.c
> +++ b/drivers/scsi/qla2xxx/qla_os.c
> @@ -3885,13 +3885,13 @@ qla2x00_remove_one(struct pci_dev *pdev)
> static inline void
> qla24xx_free_purex_list(struct purex_list *list)
> {
> -	struct list_head *item, *next;
> +	struct purex_item *item, *next;
> 	ulong flags;
> 
> 	spin_lock_irqsave(&list->lock, flags);
> -	list_for_each_safe(item, next, &list->head) {
> -		list_del(item);
> -		kfree(list_entry(item, struct purex_item, list));
> +	list_for_each_entry_safe(item, next, &list->head, list) {
> +		list_del(&item->list);
> +		kfree(item);
> 	}
> 	spin_unlock_irqrestore(&list->lock, flags);
> }
> -- 
> 2.19.0.rc0
> 

Looks Good. 

Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>

--
Himanshu Madhani	 Oracle Linux Engineering
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c
index b4eca966067a..ca3b947770b9 100644
--- a/drivers/scsi/qla2xxx/qla_edif.c
+++ b/drivers/scsi/qla2xxx/qla_edif.c
@@ -1674,41 +1674,25 @@  static struct enode *
 qla_enode_find(scsi_qla_host_t *vha, uint32_t ntype, uint32_t p1, uint32_t p2)
 {
 	struct enode		*node_rtn = NULL;
-	struct enode		*list_node = NULL;
+	struct enode		*list_node, *q;
 	unsigned long		flags;
-	struct list_head	*pos, *q;
 	uint32_t		sid;
-	uint32_t		rw_flag;
 	struct purexevent	*purex;
 
 	/* secure the list from moving under us */
 	spin_lock_irqsave(&vha->pur_cinfo.pur_lock, flags);
 
-	list_for_each_safe(pos, q, &vha->pur_cinfo.head) {
-		list_node = list_entry(pos, struct enode, list);
+	list_for_each_entry_safe(list_node, q, &vha->pur_cinfo.head, list) {
 
 		/* node type determines what p1 and p2 are */
 		purex = &list_node->u.purexinfo;
 		sid = p1;
-		rw_flag = p2;
 
 		if (purex->pur_info.pur_sid.b24 == sid) {
-			if (purex->pur_info.pur_pend == 1 &&
-			    rw_flag == PUR_GET) {
-				/*
-				 * if the receive is in progress
-				 * and its a read/get then can't
-				 * transfer yet
-				 */
-				ql_dbg(ql_dbg_edif, vha, 0x9106,
-				    "%s purex xfer in progress for sid=%x\n",
-				    __func__, sid);
-			} else {
-				/* found it and its complete */
-				node_rtn = list_node;
-				list_del(pos);
-				break;
-			}
+			/* found it and its complete */
+			node_rtn = list_node;
+			list_del(&list_node->list);
+			break;
 		}
 	}
 
@@ -2419,7 +2403,6 @@  void qla24xx_auth_els(scsi_qla_host_t *vha, void **pkt, struct rsp_que **rsp)
 
 	purex = &ptr->u.purexinfo;
 	purex->pur_info.pur_sid = a.did;
-	purex->pur_info.pur_pend = 0;
 	purex->pur_info.pur_bytes_rcvd = totlen;
 	purex->pur_info.pur_rx_xchg_address = le32_to_cpu(p->rx_xchg_addr);
 	purex->pur_info.pur_nphdl = le16_to_cpu(p->nport_handle);
@@ -3171,18 +3154,14 @@  static uint16_t qla_edif_sadb_get_sa_index(fc_port_t *fcport,
 /* release any sadb entries -- only done at teardown */
 void qla_edif_sadb_release(struct qla_hw_data *ha)
 {
-	struct list_head *pos;
-	struct list_head *tmp;
-	struct edif_sa_index_entry *entry;
+	struct edif_sa_index_entry *entry, *tmp;
 
-	list_for_each_safe(pos, tmp, &ha->sadb_rx_index_list) {
-		entry = list_entry(pos, struct edif_sa_index_entry, next);
+	list_for_each_entry_safe(entry, tmp, &ha->sadb_rx_index_list, next) {
 		list_del(&entry->next);
 		kfree(entry);
 	}
 
-	list_for_each_safe(pos, tmp, &ha->sadb_tx_index_list) {
-		entry = list_entry(pos, struct edif_sa_index_entry, next);
+	list_for_each_entry_safe(entry, tmp, &ha->sadb_tx_index_list, next) {
 		list_del(&entry->next);
 		kfree(entry);
 	}
diff --git a/drivers/scsi/qla2xxx/qla_edif.h b/drivers/scsi/qla2xxx/qla_edif.h
index 9e8f28d0caa1..cd54c1dfe3cb 100644
--- a/drivers/scsi/qla2xxx/qla_edif.h
+++ b/drivers/scsi/qla2xxx/qla_edif.h
@@ -102,7 +102,6 @@  struct dinfo {
 };
 
 struct pur_ninfo {
-	unsigned int	pur_pend:1;
 	port_id_t       pur_sid;
 	port_id_t	pur_did;
 	uint8_t		vp_idx;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 3fca6b8bb23f..df0e46ef3e96 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -3885,13 +3885,13 @@  qla2x00_remove_one(struct pci_dev *pdev)
 static inline void
 qla24xx_free_purex_list(struct purex_list *list)
 {
-	struct list_head *item, *next;
+	struct purex_item *item, *next;
 	ulong flags;
 
 	spin_lock_irqsave(&list->lock, flags);
-	list_for_each_safe(item, next, &list->head) {
-		list_del(item);
-		kfree(list_entry(item, struct purex_item, list));
+	list_for_each_entry_safe(item, next, &list->head, list) {
+		list_del(&item->list);
+		kfree(item);
 	}
 	spin_unlock_irqrestore(&list->lock, flags);
 }