gen2_basic - fix is_global settings for AH attributes For valid address handles, the is_global field of the AH attribute should not be a random number if the dlid is a multicast LID.
Signed-off by: Robert Walsh <[EMAIL PROTECTED]> diff -rNu a/gen2_basic/main.h b/gen2_basic/main.h --- a/gen2_basic/main.h 2006-01-08 10:59:26.320271000 -0800 +++ b/gen2_basic/main.h 2006-09-13 18:41:24.169155000 -0700 @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 Mellanox Technologies. All rights reserved. + * Copyright (c) 2006 QLogic Corporation. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -102,6 +103,10 @@ IN int valid_value, IN struct VL_random_t *rand_gen); +uint8_t get_is_global( + IN struct VL_random_t *rand_gen, + IN uint16_t dlid); + int my_modify_qp( IN struct VL_random_t *rand_gen, IN struct ibv_qp *qp, diff -rNu a/gen2_basic/test_av.c b/gen2_basic/test_av.c --- a/gen2_basic/test_av.c 2006-07-26 17:46:51.707754000 -0700 +++ b/gen2_basic/test_av.c 2006-08-14 14:16:43.790758000 -0700 @@ -1,5 +1,6 @@ /* * Copyright (c) 2005 Mellanox Technologies. All rights reserved. + * Copyright (c) 2006 QLogic Corporation. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -71,6 +72,16 @@ return static_rate; } +uint8_t get_is_global( + IN struct VL_random_t *rand_gen, + IN uint16_t dlid) +{ + if (dlid >= 0xC000 && dlid < 0xFFFF) + return 1; + + return VL_random(rand_gen, 2); +} + /* ibv_create_ah ibv_destroy_ah */ int av_1( IN struct config_t *config, @@ -105,7 +116,6 @@ { struct ibv_ah *av = NULL; struct ibv_ah_attr av_attr = { - .is_global = VL_random(rand_gen, 2), .dlid = VL_range(rand_gen, 1, 0xffff), .sl = VL_range(rand_gen, 0, 15), .src_path_bits = VL_range(rand_gen, 0, 0x8f), @@ -117,6 +127,7 @@ .hop_limit = VL_range(rand_gen, 1, 0xff), } }; + av_attr.is_global = get_is_global(rand_gen, av_attr.dlid); av = ibv_create_ah(pd, &av_attr); CHECK_PTR("ibv_create_ah", av, goto cleanup); @@ -130,7 +141,6 @@ { struct ibv_ah *av = NULL; struct ibv_ah_attr av_attr = { - .is_global = VL_random(rand_gen, 2), .dlid = VL_range(rand_gen, 1, 0xffff), .sl = VL_range(rand_gen, 0, 15), .src_path_bits = VL_range(rand_gen, 0, 0x8f), @@ -142,6 +152,7 @@ .hop_limit = VL_range(rand_gen, 1, 0xff), } }; + av_attr.is_global = get_is_global(rand_gen, av_attr.dlid); av = ibv_create_ah(pd, &av_attr); if (av != NULL) { FAILED; @@ -152,7 +163,6 @@ { struct ibv_ah *av = NULL; struct ibv_ah_attr av_attr = { - .is_global = VL_random(rand_gen, 2), .dlid = VL_range(rand_gen, 1, 0xffff), .sl = VL_range(rand_gen, 0, 15), .src_path_bits = VL_range(rand_gen, 0, 0x8f), @@ -164,6 +174,7 @@ .hop_limit = VL_range(rand_gen, 1, 0xff), } }; + av_attr.is_global = get_is_global(rand_gen, av_attr.dlid); av = ibv_create_ah(pd, &av_attr); if (av != NULL) { FAILED; @@ -174,7 +185,6 @@ { struct ibv_ah *av = NULL; struct ibv_ah_attr av_attr = { - .is_global = VL_random(rand_gen, 2), .dlid = VL_range(rand_gen, 1, 0xffff), .sl = VL_range(rand_gen, 0, 15), .src_path_bits = VL_range(rand_gen, 0, 0x8f), @@ -186,6 +196,7 @@ .hop_limit = VL_range(rand_gen, 1, 0xff), } }; + av_attr.is_global = get_is_global(rand_gen, av_attr.dlid); av = ibv_create_ah(pd, &av_attr); if (av != NULL) { FAILED; @@ -199,7 +210,6 @@ { struct ibv_ah *av = NULL; struct ibv_ah_attr av_attr = { - .is_global = VL_random(rand_gen, 2), .dlid = 0, .sl = VL_range(rand_gen, 0, 15), .src_path_bits = VL_range(rand_gen, 0, 0x8f), @@ -211,6 +221,7 @@ .hop_limit = VL_range(rand_gen, 1, 0xff), } }; + av_attr.is_global = get_is_global(rand_gen, av_attr.dlid); av = ibv_create_ah(pd, &av_attr); if (av != NULL) { FAILED; @@ -286,7 +297,6 @@ for (i = 0; i < device_attr.max_ah; ++i) { struct ibv_ah_attr av_attr = { - .is_global = VL_random(rand_gen, 2), .dlid = VL_range(rand_gen, 1, 0xffff), .sl = VL_range(rand_gen, 0, 15), .src_path_bits = VL_range(rand_gen, 0, 0x8f), @@ -298,12 +308,12 @@ .hop_limit = VL_range(rand_gen, 1, 0xff), } }; + av_attr.is_global = get_is_global(rand_gen, av_attr.dlid); av[i] = ibv_create_ah(pd, &av_attr); CHECK_PTR("ibv_create_ah", av[i], goto cleanup); } { struct ibv_ah_attr av_attr = { - .is_global = VL_random(rand_gen, 2), .dlid = VL_range(rand_gen, 1, 0xffff), .sl = VL_range(rand_gen, 0, 15), .src_path_bits = VL_range(rand_gen, 0, 0x8f), @@ -315,6 +325,7 @@ .hop_limit = VL_range(rand_gen, 1, 0xff), } }; + av_attr.is_global = get_is_global(rand_gen, av_attr.dlid); av[device_attr.max_ah] = ibv_create_ah(pd, &av_attr); if (av[device_attr.max_ah]) { FAILED; @@ -324,6 +335,8 @@ } PASSED; + test_result = 0; + cleanup: WAIT_CLEANUP; diff -rNu a/gen2_basic/test_poll_post.c b/gen2_basic/test_poll_post.c --- a/gen2_basic/test_poll_post.c 2006-07-26 17:46:51.753706000 -0700 +++ b/gen2_basic/test_poll_post.c 2006-08-14 14:17:03.705821000 -0700 @@ -280,7 +281,6 @@ { struct ibv_ah_attr av_attr = { - .is_global = VL_random(rand_gen, 2), .dlid = VL_range(rand_gen, 1, 0xffff), .sl = VL_range(rand_gen, 0, 15), .src_path_bits = VL_range(rand_gen, 0, 0x8f), @@ -292,6 +292,7 @@ .hop_limit = VL_range(rand_gen, 1, 0xff), } }; + av_attr.is_global = get_is_global(rand_gen, av_attr.dlid); av = ibv_create_ah(pd, &av_attr); CHECK_PTR("ibv_create_ah", av, goto cleanup); }
_______________________________________________ openib-general mailing list openib-general@openib.org http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general