al_cep_drep(\r
IN ib_al_handle_t h_al,\r
IN net32_t cid,\r
- IN const ib_cm_drep_t* const p_cm_drep );\r
+ IN const uint8_t* const p_pdata OPTIONAL,\r
+ IN const uint8_t pdata_len );\r
\r
\r
ib_api_status_t\r
\r
static void\r
__proc_failed_send(\r
- IN ib_qp_handle_t FUNC_PTR64 h_qp,\r
+ IN ib_qp_handle_t h_qp,\r
IN const ib_mad_t* const p_mad )\r
{\r
AL_ENTER( AL_DBG_CM );\r
return IB_INVALID_PARAMETER;\r
}\r
\r
- status = al_cep_drep( h_cm_dreq.h_al, h_cm_dreq.cid, p_cm_drep );\r
+ status = al_cep_drep( h_cm_dreq.h_al, h_cm_dreq.cid,\r
+ p_cm_drep->p_drep_pdata, p_cm_drep->drep_length );\r
switch( status )\r
{\r
case IB_INVALID_SETTING:\r
#define AL_DEVICE_NAME L"\\Device\\ibal"\r
#define ALDEV_KEY (0x3B) /* Matches FILE_DEVICE_INFINIBAND from wdm.h */\r
\r
-#define AL_IOCTL_VERSION (8)\r
+#define AL_IOCTL_VERSION (9)\r
\r
/* max number of devices with non-default pkey */\r
#define MAX_NUM_PKEY 16\r
ib_put_mad( p_mad );\r
}\r
\r
+\r
/* Called with the CEP and CEP manager locks held */\r
static ib_api_status_t\r
__cep_queue_mad(\r
al_cep_drep(\r
IN ib_al_handle_t h_al,\r
IN net32_t cid,\r
- IN const ib_cm_drep_t* const p_cm_drep )\r
+ IN const uint8_t* const p_pdata OPTIONAL,\r
+ IN const uint8_t pdata_len )\r
{\r
ib_api_status_t status;\r
kcep_t *p_cep;\r
if( status != IB_SUCCESS )\r
break;\r
\r
- status = __format_drep( p_cep, p_cm_drep->p_drep_pdata,\r
- p_cm_drep->drep_length, (mad_cm_drep_t*)p_mad->p_mad_buf );\r
+ status = __format_drep( p_cep, p_pdata,\r
+ pdata_len, (mad_cm_drep_t*)p_mad->p_mad_buf );\r
if( status != IB_SUCCESS )\r
break;\r
\r
return CL_INVALID_PARAMETER;\r
}\r
\r
- p_ioctl->cm_drep.p_drep_pdata = p_ioctl->pdata;\r
-\r
(*(ib_api_status_t*)cl_ioctl_out_buf( h_ioctl )) = al_cep_drep(\r
- p_context->h_al, p_ioctl->cid, &p_ioctl->cm_drep );\r
+ p_context->h_al, p_ioctl->cid, p_ioctl->pdata, p_ioctl->pdata_len );\r
\r
*p_ret_bytes = sizeof(ib_api_status_t);\r
\r
al_cep_drep(\r
IN ib_al_handle_t h_al,\r
IN net32_t cid,\r
- IN const ib_cm_drep_t* const p_cm_drep )\r
+ IN const uint8_t* const p_pdata OPTIONAL,\r
+ IN const uint8_t pdata_len )\r
{\r
ib_api_status_t status;\r
ual_cep_drep_ioctl_t ioctl;\r
return IB_INVALID_HANDLE;\r
}\r
\r
- if( !p_cm_drep )\r
- {\r
- AL_EXIT( AL_DBG_CM );\r
- return IB_INVALID_HANDLE;\r
- }\r
- cl_memclr(&ioctl, sizeof(ioctl));\r
ioctl.cid = cid;\r
- ioctl.cm_drep = *p_cm_drep;\r
/* Copy private data, if any. */\r
- if( p_cm_drep->p_drep_pdata )\r
+ if( p_pdata )\r
{\r
- if( p_cm_drep->drep_length > IB_DREP_PDATA_SIZE )\r
+ if( pdata_len > IB_DREP_PDATA_SIZE )\r
{\r
AL_PRINT_EXIT(TRACE_LEVEL_ERROR ,AL_DBG_ERROR,\r
("private data larger than DREP private data.\n") );\r
return IB_INVALID_SETTING;\r
}\r
\r
- cl_memcpy(\r
- ioctl.pdata, p_cm_drep->p_drep_pdata, p_cm_drep->drep_length );\r
+ cl_memcpy( ioctl.pdata, p_pdata, pdata_len );\r
+ ioctl.pdata_len = pdata_len;\r
+ }\r
+ else\r
+ {\r
+ ioctl.pdata_len = 0;\r
}\r
\r
if( !DeviceIoControl( g_al_device, UAL_CEP_DREP, &ioctl,\r
typedef struct _ual_cep_drep_ioctl\r
{\r
net32_t cid;\r
- ib_cm_drep_t cm_drep;\r
+ uint8_t pdata_len;\r
uint8_t pdata[IB_DREP_PDATA_SIZE];\r
\r
} ual_cep_drep_ioctl_t;\r