ehea: error handling improvement
Subsystems (2)
PATCH RESEND 1/2 ehea: error handling improvement
Reset a port's resources only if they're actually in an error state
---
Patch created against net-2.6
drivers/net/ehea/ehea_main.c +26 -5
@@ -791,11 +791,17 @@ static struct ehea_cqe *ehea_proc_cqes(s cqe_counter++;rmb ();if (cqe->status &EHEA_CQE_STAT_ERR_MASK ) { -ehea_error ("Send Completion Error: Resetting port" ); +ehea_error ("Bad send completion status=0x%04X" , + cqe->status); +if (netif_msg_tx_err (pr->port))ehea_dump (cqe,sizeof (*cqe),"Send CQE" ); -ehea_schedule_port_reset (pr->port); -break ; + +if (cqe->status &EHEA_CQE_STAT_RESET_MASK ) { +ehea_error ("Resetting port" ); +ehea_schedule_port_reset (pr->port); +break ; + } }if (netif_msg_tx_done (pr->port))
@@ -901,6 +907,8 @@ static irqreturn_t ehea_qp_aff_irq_handlstruct ehea_eqe *eqe;struct ehea_qp *qp;u32 qp_token; +u64 resource_type, aer, aerr; +int reset_port =0 ; eqe =ehea_poll_eq (port->qp_eq);
@@ -910,11 +918,24 @@ static irqreturn_t ehea_qp_aff_irq_handl eqe->entry, qp_token); qp = port->port_res[qp_token].qp; -ehea_error_data (port->adapter, qp->fw_handle); + + resource_type =ehea_error_data (port->adapter, qp->fw_handle, + &aer, &aerr); + +if (resource_type ==EHEA_AER_RESTYPE_QP ) { +if ((aer &EHEA_AER_RESET_MASK ) || + (aerr &EHEA_AERR_RESET_MASK )) + reset_port =1 ; + }else + reset_port =1 ;/* Reset in case of CQ or EQ error */ + eqe =ehea_poll_eq (port->qp_eq); } -ehea_schedule_port_reset (port); +if (reset_port) { +ehea_error ("Resetting port" ); +ehea_schedule_port_reset (port); + }return IRQ_HANDLED ; }
drivers/net/ehea/ehea_qmr.c +23 -20
107 lines not on this page · raw message
drivers/net/ehea/ehea_qmr.h +13 -1
@@ -154,6 +154,9 @@ struct ehea_rwqe {#define EHEA_CQE_STAT_ERR_IP 0x2000#define EHEA_CQE_STAT_ERR_CRC 0x1000 +/* Defines which bad send cqe stati lead to a port reset */ +#define EHEA_CQE_STAT_RESET_MASK 0x0002 +struct ehea_cqe {u64 wr_id;/* work request ID from WQE */ u8 type;
@@ -187,6 +190,14 @@ struct ehea_cqe {#define EHEA_EQE_SM_MECH_NUMBER EHEA_BMASK_IBM(48, 55)#define EHEA_EQE_SM_PORT_NUMBER EHEA_BMASK_IBM(56, 63) +#define EHEA_AER_RESTYPE_QP 0x8 +#define EHEA_AER_RESTYPE_CQ 0x4 +#define EHEA_AER_RESTYPE_EQ 0x3 + +/* Defines which affiliated errors lead to a port reset */ +#define EHEA_AER_RESET_MASK 0xFFFFFFFFFEFFFFFFULL +#define EHEA_AERR_RESET_MASK 0xFFFFFFFFFFFFFFFFULL +struct ehea_eqe {u64 entry; };
@@ -379,7 +390,8 @@ int ehea_gen_smr(struct ehea_adapter *adint ehea_rem_mr (struct ehea_mr *mr); -void ehea_error_data (struct ehea_adapter *adapter,u64 res_handle); +u64 ehea_error_data (struct ehea_adapter *adapter,u64 res_handle, +u64 *aer,u64 *aerr);int ehea_add_sect_bmap (unsigned long pfn,unsigned long nr_pages);int ehea_rem_sect_bmap (unsigned long pfn,unsigned long nr_pages);
David Miller
maintainerFrom: Thomas Klein <[email protected]>
Date: Wed, 21 Apr 2010 11:10:55 +0200
Quoted 6 lines
Reset a port's resources only if they're actually in an error state
Signed-off-by Thomas Klein <[email protected]>---
Patch created against net-2.6
I thought you were sorry for wasting my time and that you were going to follow the directions I gave you last time, and I quote:
--------------------
3) These are not appropriate for net-2.6 as we are deep in the -rcX series at this point and only the most diabolical bug fixes are appropriate. Therefore, please generate these against net-next-2.6, thanks.
--------------------
And here you are generating your patches against net-2.6. Heck, you even feel it's worth mentioning explicitly.
Lucky for you the patches happen to apply cleanly to net-next-2.6 so I've put them there.
Quoted 20 lines · David Miller
From: Thomas Klein<[email protected]>
Date: Wed, 21 Apr 2010 11:10:55 +0200Quoted 6 lines
Reset a port's resources only if they're actually in an error state
Signed-off-by Thomas Klein<[email protected]>---
Patch created against net-2.6
I thought you were sorry for wasting my time and that you were going to follow the directions I gave you last time, and I quote:
--------------------
3) These are not appropriate for net-2.6 as we are deep in the -rcX series at this point and only the most diabolical bug fixes are appropriate. Therefore, please generate these against net-next-2.6, thanks.
--------------------
Quoted 2 lines
And here you are generating your patches against net-2.6. Heck, you even feel it's worth mentioning explicitly.
Guilty! Allows no excuse. Screwed it. Deeply sorry.
Quoted 3 lines
Lucky for you the patches happen to apply cleanly to net-next-2.6 so I've put them there.
Thanks!
Thomas
Quoted 4 lines
--
To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html