mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	soc: fsl: qbman: Add helper for sanity checking cgr ops
This breaks out/combines get_affine_portal and the cgr sanity check in preparation for the next commit. No functional change intended. Signed-off-by: Sean Anderson <sean.anderson@seco.com> Acked-by: Camelia Groza <camelia.groza@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									fca4804f68
								
							
						
					
					
						commit
						d0e17a4653
					
				
					 1 changed files with 19 additions and 10 deletions
				
			
		|  | @ -2483,13 +2483,8 @@ out: | |||
| } | ||||
| EXPORT_SYMBOL(qman_create_cgr); | ||||
| 
 | ||||
| int qman_delete_cgr(struct qman_cgr *cgr) | ||||
| static struct qman_portal *qman_cgr_get_affine_portal(struct qman_cgr *cgr) | ||||
| { | ||||
| 	unsigned long irqflags; | ||||
| 	struct qm_mcr_querycgr cgr_state; | ||||
| 	struct qm_mcc_initcgr local_opts; | ||||
| 	int ret = 0; | ||||
| 	struct qman_cgr *i; | ||||
| 	struct qman_portal *p = get_affine_portal(); | ||||
| 
 | ||||
| 	if (cgr->chan != p->config->channel) { | ||||
|  | @ -2497,10 +2492,25 @@ int qman_delete_cgr(struct qman_cgr *cgr) | |||
| 		dev_err(p->config->dev, "CGR not owned by current portal"); | ||||
| 		dev_dbg(p->config->dev, " create 0x%x, delete 0x%x\n", | ||||
| 			cgr->chan, p->config->channel); | ||||
| 
 | ||||
| 		ret = -EINVAL; | ||||
| 		goto put_portal; | ||||
| 		put_affine_portal(); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	return p; | ||||
| } | ||||
| 
 | ||||
| int qman_delete_cgr(struct qman_cgr *cgr) | ||||
| { | ||||
| 	unsigned long irqflags; | ||||
| 	struct qm_mcr_querycgr cgr_state; | ||||
| 	struct qm_mcc_initcgr local_opts; | ||||
| 	int ret = 0; | ||||
| 	struct qman_cgr *i; | ||||
| 	struct qman_portal *p = qman_cgr_get_affine_portal(cgr); | ||||
| 
 | ||||
| 	if (!p) | ||||
| 		return -EINVAL; | ||||
| 
 | ||||
| 	memset(&local_opts, 0, sizeof(struct qm_mcc_initcgr)); | ||||
| 	spin_lock_irqsave(&p->cgr_lock, irqflags); | ||||
| 	list_del(&cgr->node); | ||||
|  | @ -2528,7 +2538,6 @@ int qman_delete_cgr(struct qman_cgr *cgr) | |||
| 		list_add(&cgr->node, &p->cgr_cbs); | ||||
| release_lock: | ||||
| 	spin_unlock_irqrestore(&p->cgr_lock, irqflags); | ||||
| put_portal: | ||||
| 	put_affine_portal(); | ||||
| 	return ret; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Sean Anderson
						Sean Anderson