osm_dr_path_t path;
uint8_t port_num;
uint16_t block_num, max_blocks;
+ uint32_t attr_mod_ho;
osm_switch_t* p_switch;
OSM_LOG_ENTER( p_log, osm_physp_has_pkey );
else
{
/* This is a switch, and not a management port. The maximum blocks is defined
- on the switch info partition enforcement cap. */
+ in the switch info partition enforcement cap. */
p_switch = osm_get_switch_by_guid(p_subn, p_node->node_info.node_guid);
if (! p_switch)
for (block_num = 0 ; block_num < max_blocks ; block_num++)
{
+ if (osm_node_get_type( p_node ) != IB_NODE_TYPE_SWITCH)
+ attr_mod_ho = block_num;
+ else
+ attr_mod_ho = block_num | (port_num << 16);
status = osm_req_get( p_req,
&path,
IB_MAD_ATTR_P_KEY_TABLE,
- cl_hton32(block_num | (port_num << 16) ),
+ cl_hton32(attr_mod_ho),
CL_DISP_MSGID_NONE,
&context );