// TODO: put into Globals
// "Reset device on internal errors if non-zero (default 1)")
-int g_internal_err_reset = 1;
+int g_internal_err_reset = 0;
static void dispatch_event(struct ib_device *ibdev, enum ib_event_type type)
{
IN DEVICE_OBJECT* p_dev_obj,
IN struct ib_event_handler * event_handler )
{
- NTSTATUS status;
struct ib_device *ibdev = event_handler->device;
- struct mlx4_dev *dev = ibdev->dma_device;
UNUSED_PARAM(p_dev_obj);
IoFreeWorkItem( event_handler->rsrv_ptr );
- // reset the card
- mlx4_stop_catas_poll( dev );
- status = mlx4_reset( dev );
- if ( !NT_SUCCESS( status ) )
- mlx4_err( dev, "Failed to reset HCA, aborting. (status %#x)\n", status );
-
// notify the clients
dispatch_event(ibdev, IB_EVENT_RESET_CLIENT);
}
__print_opcode(op), mlx4_priv(dev)->cmd.use_events, in_param, out_param,
out_is_imm, in_modifier, (int)op_modifier);
#endif
+
+ if ( mlx4_is_barred(dev) )
+ return -EFAULT;
if (mlx4_priv(dev)->cmd.use_events)
return mlx4_cmd_wait(dev, in_param, out_param, out_is_imm,
int imlx4_cmd(struct mlx4_dev *dev, u64 in_param, u64 *out_param, int out_is_imm,
u32 in_modifier, u8 op_modifier, u16 op, unsigned long timeout)
{
- if ( mlx4_is_barred(dev) )
- return -EFAULT;
-
return __mlx4_cmd(dev, in_param, out_param, out_is_imm, in_modifier,
op_modifier, op, timeout);
}
int i;
mailbox = mlx4_alloc_cmd_mailbox(dev);
- if (IS_ERR(mailbox))
- return;
-
- err = mlx4_HW2SW_EQ(dev, mailbox, eq->eqn);
- if (err)
- mlx4_warn(dev, "HW2SW_EQ failed (%d)\n", err);
+ if (IS_ERR(mailbox))
+ mailbox = NULL;
+ else {
+ err = mlx4_HW2SW_EQ(dev, mailbox, eq->eqn);
+ if (err)
+ mlx4_warn(dev, "HW2SW_EQ failed (%d)\n", err);
+ }
#if 0
{