mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 20:42:39 +00:00 
			
		
		
		
	 8b230ed8ec
			
		
	
	
		8b230ed8ec
		
	
	
	
	
		
			
			This is patch 1/6 which contains linux driver source for Brocade's BR1010/BR1020 10Gb CEE capable ethernet adapter. Signed-off-by: Debashis Dutt <ddutt@brocade.com> Signed-off-by: Rasesh Mody <rmody@brocade.com> Signed-off-by: David S. Miller <davem@davemloft.net>
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Linux network driver for Brocade Converged Network Adapter.
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify it
 | |
|  * under the terms of the GNU General Public License (GPL) Version 2 as
 | |
|  * published by the Free Software Foundation
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful, but
 | |
|  * WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|  * General Public License for more details.
 | |
|  */
 | |
| /*
 | |
|  * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
 | |
|  * All rights reserved
 | |
|  * www.brocade.com
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @file bfa_wc.h Generic wait counter.
 | |
|  */
 | |
| 
 | |
| #ifndef __BFA_WC_H__
 | |
| #define __BFA_WC_H__
 | |
| 
 | |
| typedef void (*bfa_wc_resume_t) (void *cbarg);
 | |
| 
 | |
| struct bfa_wc {
 | |
| 	bfa_wc_resume_t wc_resume;
 | |
| 	void		*wc_cbarg;
 | |
| 	int		wc_count;
 | |
| };
 | |
| 
 | |
| static inline void
 | |
| bfa_wc_up(struct bfa_wc *wc)
 | |
| {
 | |
| 	wc->wc_count++;
 | |
| }
 | |
| 
 | |
| static inline void
 | |
| bfa_wc_down(struct bfa_wc *wc)
 | |
| {
 | |
| 	wc->wc_count--;
 | |
| 	if (wc->wc_count == 0)
 | |
| 		wc->wc_resume(wc->wc_cbarg);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Initialize a waiting counter.
 | |
|  */
 | |
| static inline void
 | |
| bfa_wc_init(struct bfa_wc *wc, bfa_wc_resume_t wc_resume, void *wc_cbarg)
 | |
| {
 | |
| 	wc->wc_resume = wc_resume;
 | |
| 	wc->wc_cbarg = wc_cbarg;
 | |
| 	wc->wc_count = 0;
 | |
| 	bfa_wc_up(wc);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Wait for counter to reach zero
 | |
|  */
 | |
| static inline void
 | |
| bfa_wc_wait(struct bfa_wc *wc)
 | |
| {
 | |
| 	bfa_wc_down(wc);
 | |
| }
 | |
| 
 | |
| #endif
 |