boolean_t valid;\r
ipoib_adapter_t *p_adapter;\r
ipoib_port_t *p_prev_port;\r
- PRKTHREAD *p_halt_thread;\r
+ PRKTHREAD p_halt_thread;\r
int n_power_irps; // NdisDevicePnPEventPowerProfileChanged \r
int n_pnp_irps; // NdisDevicePnPEventSurpriseRemoved \r
\r
\r
ETH_COPY_NETWORK_ADDRESS( p_adapter->params.conf_mac.addr, p_adapter->mac.addr );\r
/* If there is a NetworkAddress override in registry, use it */\r
- if( (status == NDIS_STATUS_SUCCESS) && (len == HW_ADDR_LEN) )\r
+ if( (len == HW_ADDR_LEN) && (mac != NULL) )\r
{\r
if( ETH_IS_MULTICAST(mac) || ETH_IS_BROADCAST(mac) ||\r
!ETH_IS_LOCALLY_ADMINISTERED(mac) )\r
}\r
\r
p_pnp_rec->context = p_port;\r
-\r
- p_adapter->p_stat->p_prev_port = p_adapter->p_port;\r
+ if ( p_adapter->p_stat )\r
+ p_adapter->p_stat->p_prev_port = p_adapter->p_port;\r
p_adapter->p_port = p_port;\r
cl_obj_unlock( &p_adapter->obj );\r
break;\r
\r
cl_obj_lock( &p_adapter->obj );\r
p_adapter->state = IB_PNP_PORT_REMOVE;\r
- p_adapter->p_stat->p_prev_port = p_adapter->p_port;\r
+ if ( p_adapter->p_stat )\r
+ p_adapter->p_stat->p_prev_port = p_adapter->p_port;\r
p_port = p_adapter->p_port;\r
p_adapter->p_port = NULL;\r
cl_obj_unlock( &p_adapter->obj );\r
state = p_adapter->state;\r
\r
/* Destroy the current port instance if it still exists. */\r
- p_adapter->p_stat->p_prev_port = p_adapter->p_port;\r
+ if ( p_adapter->p_stat )\r
+ p_adapter->p_stat->p_prev_port = p_adapter->p_port;\r
p_port = p_adapter->p_port;\r
p_adapter->p_port = NULL;\r
cl_obj_unlock( &p_adapter->obj );\r
(sizeof(eth_hdr_t) + p_adapter->params.payload_mtu);\r
\r
NdisReadNetworkAddress( &status, (PVOID *) p_mac, p_len, h_config );\r
+ if (status != NDIS_STATUS_SUCCESS) {\r
+ // Don't rely on NDIS, zero the values\r
+ *p_mac = NULL;\r
+ *p_len = 0;\r
+ }\r
\r
NdisCloseConfiguration( h_config );\r
\r
boolean_t valid;\r
ipoib_adapter_t *p_adapter;\r
ipoib_port_t *p_prev_port;\r
- PRKTHREAD *p_halt_thread;\r
+ PRKTHREAD p_halt_thread;\r
int n_power_irps; // NdisDevicePnPEventPowerProfileChanged \r
int n_pnp_irps; // NdisDevicePnPEventSurpriseRemoved \r
\r
switch( p_profile->io_class )\r
{\r
case SRP_IO_CLASS_R10:\r
- p_connection->init_port_id.field1 = ca_guid;\r
+ p_connection->init_port_id.field1 = p_path_rec->sgid.unicast.interface_id;\r
p_connection->init_port_id.field2 = ext_id;\r
p_connection->targ_port_id.field1 = p_profile->ioc_guid;\r
p_connection->targ_port_id.field2 = ext_id;\r
\r
case SRP_IO_CLASS:\r
p_connection->init_port_id.field1 = ext_id;\r
- p_connection->init_port_id.field2 = ca_guid;\r
+ p_connection->init_port_id.field2 = p_path_rec->sgid.unicast.interface_id;\r
p_connection->targ_port_id.field1 = ext_id;\r
p_connection->targ_port_id.field2 = p_profile->ioc_guid;\r
break;\r