[openib-general] gen2_basic patch 8/10: handle auto path migration properly

Dotan Barak dotanb at dev.mellanox.co.il
Wed Sep 20 23:51:23 PDT 2006


Robert Walsh wrote:
> gen2_basic - handle auto path migration properly
>
> Signed-off by: Robert Walsh <robert.walsh at qlogic.com>
>
> diff -rNu a/gen2_basic/test_qp.c b/gen2_basic/test_qp.c
> --- a/gen2_basic/test_qp.c	2006-09-13 19:15:59.829006000 -0700
> +++ b/gen2_basic/test_qp.c	2006-08-14 14:16:57.911621000 -0700
> @@ -586,6 +586,7 @@
>  }
>  
>  void cleanup_mask(
> +	IN	struct ibv_device_attr *device_attr,
>  	IN	enum ibv_qp_type qp_type,
>  	IN OUT	int* mask)
>  {
> @@ -607,6 +608,8 @@
>  		*mask &= ~IBV_QP_MAX_DEST_RD_ATOMIC;
>  		*mask &= ~IBV_QP_MAX_QP_RD_ATOMIC;
>  	}
> +	if (!(device_attr->device_cap_flags & IBV_DEVICE_AUTO_PATH_MIG))
> +		*mask &= ~IBV_QP_ALT_PATH;
>  }
>  
>  int my_query_qp(
> @@ -774,7 +777,7 @@
>  	case REQUIRED_ATTR:
>  		mask |= test_vector[idx].required_attr;
>  
> -		cleanup_mask(qp_type, &mask);
> +		cleanup_mask(device_attr, qp_type, &mask);
>  		mask &= ~IBV_QP_PATH_MIG_STATE; 
>  
>  		if (test_vector[idx].to == IBV_QPS_SQD && test_vector[idx].from == IBV_QPS_SQD && qp_type != IBV_QPT_RC)
> @@ -798,8 +801,8 @@
>  			temp_mask = test_vector[idx].optional_attr;
>  			mask = test_vector[idx].required_attr | test_vector[idx].optional_attr;
>  		}
> -		cleanup_mask(qp_type, &mask);
> -		cleanup_mask(qp_type, &temp_mask);
> +		cleanup_mask(device_attr, qp_type, &mask);
> +		cleanup_mask(device_attr, qp_type, &temp_mask);
>  
>  		for (i = 1; i <= 20; ++i) {
>  			if ((1 << i) & temp_mask) {
> @@ -820,7 +823,7 @@
>  	
>  	case NOT_ALL_REQUIRED:
>  		mask = test_vector[idx].required_attr;
> -		cleanup_mask(qp_type, &mask);
> +		cleanup_mask(device_attr, qp_type, &mask);
>  
>  		for (i = 1; i <= 20; ++i) {
>  			if ((1 << i) & mask) {
> @@ -835,7 +838,7 @@
>  		break;
>  	case NOT_ALL_OPTIONAL:
>  		mask = test_vector[idx].required_attr | test_vector[idx].optional_attr;
> -		cleanup_mask(qp_type, &mask);
> +		cleanup_mask(device_attr, qp_type, &mask);
>  
>  		if (test_vector[idx].to == IBV_QPS_SQD && test_vector[idx].from == IBV_QPS_SQD && qp_type != IBV_QPT_RC)
>  			mask &= ~IBV_QP_PORT;
> @@ -855,7 +858,7 @@
>  		break;
>  	case INVALID_ATTR:
>  		mask = test_vector[idx].required_attr | test_vector[idx].optional_attr;
> -		cleanup_mask(qp_type, &mask);
> +		cleanup_mask(device_attr, qp_type, &mask);
>  
>  		mask = get_random_mask(rand_gen, mask);
>  
> @@ -1420,7 +1422,7 @@
>  
>  					for (j = 1; j < 20; ++j) {
>  						int mask = test_vector[i].optional_attr;
> -						cleanup_mask(qp_type, &mask);
> +						cleanup_mask(&device_attr, qp_type, &mask);
>  						if ((1 << j) & mask) {
>  							get_qp_cap(rand_gen, 1, &device_attr, &attr.cap);
>  
> @@ -1540,7 +1542,7 @@
>  				mask = IBV_QP_STATE | IBV_QP_TIMEOUT | IBV_QP_RETRY_CNT | IBV_QP_RNR_RETRY | 
>  					IBV_QP_SQ_PSN | IBV_QP_MAX_QP_RD_ATOMIC | IBV_QP_PATH_MIG_STATE;
>  
> -				cleanup_mask(qp_type, &mask);
> +				cleanup_mask(&device_attr, qp_type, &mask);
>  
>  				qp_attr.path_mig_state = IBV_MIG_REARM;
>  
> @@ -1556,7 +1558,7 @@
>  
>  				mask = IBV_QP_STATE | IBV_QP_PATH_MIG_STATE;
>  
> -				cleanup_mask(qp_type, &mask);
> +				cleanup_mask(&device_attr, qp_type, &mask);
>  
>  				qp_attr.path_mig_state = IBV_MIG_REARM;
>  
> @@ -1584,7 +1586,7 @@
>  
>  				mask = IBV_QP_STATE | IBV_QP_PATH_MIG_STATE;
>  
> -				cleanup_mask(qp_type, &mask);
> +				cleanup_mask(&device_attr, qp_type, &mask);
>  
>  				qp_attr.path_mig_state = IBV_MIG_REARM;
>  
>   
committed.

thanks
Dotan




More information about the general mailing list