100 lines
		
	
	
	
		
			2.5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
	
		
			2.5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * Copyright (c) 2005-2009 Brocade Communications Systems, Inc. | ||
|  |  * All rights reserved | ||
|  |  * www.brocade.com | ||
|  |  * | ||
|  |  * Linux driver for Brocade Fibre Channel Host Bus 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. | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef __BFA_DEFS_QOS_H__
 | ||
|  | #define __BFA_DEFS_QOS_H__
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * QoS states | ||
|  |  */ | ||
|  | enum bfa_qos_state { | ||
|  | 	BFA_QOS_ONLINE = 1,		/*  QoS is online */ | ||
|  | 	BFA_QOS_OFFLINE = 2,		/*  QoS is offline */ | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * QoS  Priority levels. | ||
|  |  */ | ||
|  | enum bfa_qos_priority { | ||
|  | 	BFA_QOS_UNKNOWN = 0, | ||
|  | 	BFA_QOS_HIGH  = 1,	/*  QoS Priority Level High */ | ||
|  | 	BFA_QOS_MED  =  2,	/*  QoS Priority Level Medium */ | ||
|  | 	BFA_QOS_LOW  =  3,	/*  QoS Priority Level Low */ | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * QoS  bandwidth allocation for each priority level | ||
|  |  */ | ||
|  | enum bfa_qos_bw_alloc { | ||
|  | 	BFA_QOS_BW_HIGH  = 60,	/*  bandwidth allocation for High */ | ||
|  | 	BFA_QOS_BW_MED  =  30,	/*  bandwidth allocation for Medium */ | ||
|  | 	BFA_QOS_BW_LOW  =  10,	/*  bandwidth allocation for Low */ | ||
|  | }; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * QoS attribute returned in QoS Query | ||
|  |  */ | ||
|  | struct bfa_qos_attr_s { | ||
|  | 	enum bfa_qos_state state;		/*  QoS current state */ | ||
|  | 	u32  total_bb_cr;  	 	/*  Total BB Credits */ | ||
|  | }; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * These fields should be displayed only from the CLI. | ||
|  |  * There will be a separate BFAL API (get_qos_vc_attr ?) | ||
|  |  * to retrieve this. | ||
|  |  * | ||
|  |  */ | ||
|  | #define  BFA_QOS_MAX_VC  16
 | ||
|  | 
 | ||
|  | struct bfa_qos_vc_info_s { | ||
|  | 	u8 vc_credit; | ||
|  | 	u8 borrow_credit; | ||
|  | 	u8 priority; | ||
|  | 	u8 resvd; | ||
|  | }; | ||
|  | 
 | ||
|  | struct bfa_qos_vc_attr_s { | ||
|  | 	u16  total_vc_count;                    /*  Total VC Count */ | ||
|  | 	u16  shared_credit; | ||
|  | 	u32  elp_opmode_flags; | ||
|  | 	struct bfa_qos_vc_info_s vc_info[BFA_QOS_MAX_VC];  /*   as many as
 | ||
|  | 							    * total_vc_count */ | ||
|  | }; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * QoS statistics | ||
|  |  */ | ||
|  | struct bfa_qos_stats_s { | ||
|  | 	u32	flogi_sent; 		/*  QoS Flogi sent */ | ||
|  | 	u32	flogi_acc_recvd;	/*  QoS Flogi Acc received */ | ||
|  | 	u32	flogi_rjt_recvd; /*  QoS Flogi rejects received */ | ||
|  | 	u32	flogi_retries;		/*  QoS Flogi retries */ | ||
|  | 
 | ||
|  | 	u32	elp_recvd; 	   	/*  QoS ELP received */ | ||
|  | 	u32	elp_accepted;       /*  QoS ELP Accepted */ | ||
|  | 	u32	elp_rejected;       /*  QoS ELP rejected */ | ||
|  | 	u32	elp_dropped;        /*  QoS ELP dropped  */ | ||
|  | 
 | ||
|  | 	u32	qos_rscn_recvd;     /*  QoS RSCN received */ | ||
|  | 	u32	rsvd; 		/* padding for 64 bit alignment */ | ||
|  | }; | ||
|  | 
 | ||
|  | #endif /* __BFA_DEFS_QOS_H__ */
 |