forked from mirrors/linux
		
	 fc85799ee3
			
		
	
	
		fc85799ee3
		
	
	
	
	
		
			
			Introduced module params to provide dynamic way of configuring
queue depth.
Added support to get max io throttle count through UCSM to
configure maximum outstanding IOs supported by fnic and push
that value to scsi mid-layer.
  Supported IO throttle values:
  UCSM IO THROTTLE VALUE        FNIC MAX OUTSTANDING IOS
  ------------------------------------------------------
        16 (Default)                    2048
        <= 256                          256
        > 256                           <ucsm value>
Signed-off-by: Hiral Patel <hiralpat@cisco.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
		
	
			
		
			
				
	
	
		
			100 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright 2008 Cisco Systems, Inc.  All rights reserved.
 | |
|  * Copyright 2007 Nuova Systems, Inc.  All rights reserved.
 | |
|  *
 | |
|  * This program is free software; you may redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License as published by
 | |
|  * the Free Software Foundation; version 2 of the License.
 | |
|  *
 | |
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | |
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | |
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | |
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 | |
|  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 | |
|  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | |
|  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | |
|  * SOFTWARE.
 | |
|  */
 | |
| #ifndef _VNIC_SCSI_H_
 | |
| #define _VNIC_SCSI_H_
 | |
| 
 | |
| #define VNIC_FNIC_WQ_COPY_COUNT_MIN         1
 | |
| #define VNIC_FNIC_WQ_COPY_COUNT_MAX         1
 | |
| 
 | |
| #define VNIC_FNIC_WQ_DESCS_MIN              64
 | |
| #define VNIC_FNIC_WQ_DESCS_MAX              128
 | |
| 
 | |
| #define VNIC_FNIC_WQ_COPY_DESCS_MIN         64
 | |
| #define VNIC_FNIC_WQ_COPY_DESCS_MAX         512
 | |
| 
 | |
| #define VNIC_FNIC_RQ_DESCS_MIN              64
 | |
| #define VNIC_FNIC_RQ_DESCS_MAX              128
 | |
| 
 | |
| #define VNIC_FNIC_EDTOV_MIN                 1000
 | |
| #define VNIC_FNIC_EDTOV_MAX                 255000
 | |
| #define VNIC_FNIC_EDTOV_DEF                 2000
 | |
| 
 | |
| #define VNIC_FNIC_RATOV_MIN                 1000
 | |
| #define VNIC_FNIC_RATOV_MAX                 255000
 | |
| 
 | |
| #define VNIC_FNIC_MAXDATAFIELDSIZE_MIN      256
 | |
| #define VNIC_FNIC_MAXDATAFIELDSIZE_MAX      2112
 | |
| 
 | |
| #define VNIC_FNIC_FLOGI_RETRIES_MIN         0
 | |
| #define VNIC_FNIC_FLOGI_RETRIES_MAX         0xffffffff
 | |
| #define VNIC_FNIC_FLOGI_RETRIES_DEF         0xffffffff
 | |
| 
 | |
| #define VNIC_FNIC_FLOGI_TIMEOUT_MIN         1000
 | |
| #define VNIC_FNIC_FLOGI_TIMEOUT_MAX         255000
 | |
| 
 | |
| #define VNIC_FNIC_PLOGI_RETRIES_MIN         0
 | |
| #define VNIC_FNIC_PLOGI_RETRIES_MAX         255
 | |
| #define VNIC_FNIC_PLOGI_RETRIES_DEF         8
 | |
| 
 | |
| #define VNIC_FNIC_PLOGI_TIMEOUT_MIN         1000
 | |
| #define VNIC_FNIC_PLOGI_TIMEOUT_MAX         255000
 | |
| 
 | |
| #define VNIC_FNIC_IO_THROTTLE_COUNT_MIN     1
 | |
| #define VNIC_FNIC_IO_THROTTLE_COUNT_MAX     2048
 | |
| 
 | |
| #define VNIC_FNIC_LINK_DOWN_TIMEOUT_MIN     0
 | |
| #define VNIC_FNIC_LINK_DOWN_TIMEOUT_MAX     240000
 | |
| 
 | |
| #define VNIC_FNIC_PORT_DOWN_TIMEOUT_MIN     0
 | |
| #define VNIC_FNIC_PORT_DOWN_TIMEOUT_MAX     240000
 | |
| 
 | |
| #define VNIC_FNIC_PORT_DOWN_IO_RETRIES_MIN  0
 | |
| #define VNIC_FNIC_PORT_DOWN_IO_RETRIES_MAX  255
 | |
| 
 | |
| #define VNIC_FNIC_LUNS_PER_TARGET_MIN       1
 | |
| #define VNIC_FNIC_LUNS_PER_TARGET_MAX       1024
 | |
| 
 | |
| /* Device-specific region: scsi configuration */
 | |
| struct vnic_fc_config {
 | |
| 	u64 node_wwn;
 | |
| 	u64 port_wwn;
 | |
| 	u32 flags;
 | |
| 	u32 wq_enet_desc_count;
 | |
| 	u32 wq_copy_desc_count;
 | |
| 	u32 rq_desc_count;
 | |
| 	u32 flogi_retries;
 | |
| 	u32 flogi_timeout;
 | |
| 	u32 plogi_retries;
 | |
| 	u32 plogi_timeout;
 | |
| 	u32 io_throttle_count;
 | |
| 	u32 link_down_timeout;
 | |
| 	u32 port_down_timeout;
 | |
| 	u32 port_down_io_retries;
 | |
| 	u32 luns_per_tgt;
 | |
| 	u16 maxdatafieldsize;
 | |
| 	u16 ed_tov;
 | |
| 	u16 ra_tov;
 | |
| 	u16 intr_timer;
 | |
| 	u8 intr_timer_type;
 | |
| };
 | |
| 
 | |
| #define VFCF_FCP_SEQ_LVL_ERR	0x1	/* Enable FCP-2 Error Recovery */
 | |
| #define VFCF_PERBI		0x2	/* persistent binding info available */
 | |
| #define VFCF_FIP_CAPABLE	0x4	/* firmware can handle FIP */
 | |
| 
 | |
| #endif /* _VNIC_SCSI_H_ */
 |