[openib-general] [PATCH] opensm: observe PartitionEnforcementCap ofzero
Eitan Zahavi
eitan at mellanox.co.il
Thu Mar 30 00:33:07 PST 2006
I would rather have the PartitionManager inspect the IB attributes
defining the port P_Key table length then change the pre-allocation of
PKey entry. Even if this does not break anything.
So I propose the partition manager inspect:
NodeInfo.PartitionCap - for Switch Port 0, HCA and Router)
SwitchInfo.PartitionEnforcementCap - for Switch Extarnal ports
Eitan Zahavi
Design Technology Director
Mellanox Technologies LTD
Tel:+972-4-9097208
Fax:+972-4-9593245
P.O. Box 586 Yokneam 20692 ISRAEL
> -----Original Message-----
> From: openib-general-bounces at openib.org [mailto:openib-general-
> bounces at openib.org] On Behalf Of Rolf Manderscheid
> Sent: Thursday, March 30, 2006 1:55 AM
> To: halr at voltaire.com
> Cc: openib-general at openib.org
> Subject: [openib-general] [PATCH] opensm: observe
PartitionEnforcementCap ofzero
>
> Hi Hal,
>
> opensm attempts to set pkey table entries on external switch ports
> even if the switch declares a PartitionEnforcementCap of zero. The
> consequence is ERR 4108.
>
> The decision to set the block is based on the size of the
> pkeys->blocks vector, which is initialized to one. There is a
> comment that claims there must be a pre-allocated block in said vector
> "for the sake of empty table test", but I can't see why it's
> necessary. Is this comment wrong or am I missing something?
>
> The vector size grows, if necessary, when processing the response from
> a SubnGet(PKeyTable). The query happens during a sweep after
> obtaining the portinfo, and the query code is careful to observe the
> partition cap. All this means that the vector size can still be used
> to decide whether to do the set provided the vector size starts out at
> zero. So, the patch below just initializes the vector to size zero
> and removes the code that inserts the pre-allocated block.
>
> Rolf
>
> Index: osm_pkey.c
> ===================================================================
> --- osm_pkey.c (revision 5971)
> +++ osm_pkey.c (working copy)
> @@ -91,21 +91,7 @@
> int osm_pkey_tbl_init(
> IN osm_pkey_tbl_t *p_pkey_tbl)
> {
> - ib_pkey_table_t *p_pkey_block;
> - /*
> - we always need one block to be pre-allocated for the sake of
> - empty table test
> - */
> - cl_ptr_vector_init( &p_pkey_tbl->blocks, 1, 1);
> - p_pkey_block = (ib_pkey_table_t
*)cl_zalloc(sizeof(ib_pkey_table_t));
> - if (! p_pkey_block)
> - {
> - return(IB_ERROR);
> - }
> -
> - cl_ptr_vector_set(&p_pkey_tbl->blocks, 0, p_pkey_block);
> -
> - /* deal with the map */
> + cl_ptr_vector_init( &p_pkey_tbl->blocks, 0, 1);
> cl_map_init( &p_pkey_tbl->keys, 1 );
> return(IB_SUCCESS);
> }
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
>
> To unsubscribe, please visit
http://openib.org/mailman/listinfo/openib-general
More information about the general
mailing list