From: leonidk Date: Thu, 23 Oct 2008 19:16:30 +0000 (+0000) Subject: [MLX4] improvements in Soft Reset mechanism [mlnx: 3363] X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=863a87b47cf39e906cbfb28179d92f71cd1f86a5;p=~shefty%2Frdma-win.git [MLX4] improvements in Soft Reset mechanism [mlnx: 3363] git-svn-id: svn://openib.tc.cornell.edu/gen1@1695 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/catas.c b/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/catas.c index 564d5549..29132a25 100644 --- a/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/catas.c +++ b/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/catas.c @@ -41,7 +41,7 @@ static LIST_HEAD(catas_list); // 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) { @@ -307,19 +307,11 @@ card_reset_wi( 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); } diff --git a/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/cmd.c b/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/cmd.c index 123ad705..a27a638c 100644 --- a/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/cmd.c +++ b/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/cmd.c @@ -389,6 +389,9 @@ int __mlx4_cmd(struct mlx4_dev *dev, u64 in_param, u64 *out_param, __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, @@ -527,9 +530,6 @@ EXPORT_SYMBOL_GPL(mlx4_free_cmd_mailbox); 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); } diff --git a/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/eq.c b/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/eq.c index 0ba17e69..5f12eac1 100644 --- a/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/eq.c +++ b/branches/WOF2-0/trunk/hw/mlx4/kernel/bus/net/eq.c @@ -435,12 +435,13 @@ static void mlx4_free_eq(struct mlx4_dev *dev, 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 {