diff options
author | Vipul Pandya <vipul@chelsio.com> | 2012-05-18 13:59:24 +0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2012-05-19 00:22:25 +0400 |
commit | 881806bc155c0d5d78196c8bfae0ea2e76ae7386 (patch) | |
tree | 20ac25b6859424a3bed1c4d64664d9264a013056 /drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | |
parent | 14b9222808bb8bfefc71f72bc0dbdcf3b2f0140f (diff) | |
download | linux-881806bc155c0d5d78196c8bfae0ea2e76ae7386.tar.xz |
cxgb4: Detect DB FULL events and notify RDMA ULD
Signed-off-by: Vipul Pandya <vipul@chelsio.com>
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/net/ethernet/chelsio/cxgb4/t4_hw.c')
-rw-r--r-- | drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c index d1ec111aebd8..13609bf056b0 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c +++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c @@ -1013,6 +1013,8 @@ static void sge_intr_handler(struct adapter *adapter) { ERR_INVALID_CIDX_INC, "SGE GTS CIDX increment too large", -1, 0 }, { ERR_CPL_OPCODE_0, "SGE received 0-length CPL", -1, 0 }, + { F_DBFIFO_LP_INT, NULL, -1, 0 }, + { F_DBFIFO_HP_INT, NULL, -1, 0 }, { ERR_DROPPED_DB, "SGE doorbell dropped", -1, 0 }, { ERR_DATA_CPL_ON_HIGH_QID1 | ERR_DATA_CPL_ON_HIGH_QID0, "SGE IQID > 1023 received CPL for FL", -1, 0 }, @@ -1042,6 +1044,12 @@ static void sge_intr_handler(struct adapter *adapter) t4_write_reg(adapter, SGE_INT_CAUSE2, v >> 32); } + err = t4_read_reg(adapter, A_SGE_INT_CAUSE3); + if (err & (F_DBFIFO_HP_INT|F_DBFIFO_LP_INT)) + t4_db_full(adapter); + if (err & F_ERR_DROPPED_DB) + t4_db_dropped(adapter); + if (t4_handle_intr_status(adapter, SGE_INT_CAUSE3, sge_intr_info) || v != 0) t4_fatal_err(adapter); @@ -1513,6 +1521,7 @@ void t4_intr_enable(struct adapter *adapter) ERR_BAD_DB_PIDX2 | ERR_BAD_DB_PIDX1 | ERR_BAD_DB_PIDX0 | ERR_ING_CTXT_PRIO | ERR_EGR_CTXT_PRIO | INGRESS_SIZE_ERR | + F_DBFIFO_HP_INT | F_DBFIFO_LP_INT | EGRESS_SIZE_ERR); t4_write_reg(adapter, MYPF_REG(PL_PF_INT_ENABLE), PF_INTR_MASK); t4_set_reg_field(adapter, PL_INT_MAP0, 0, 1 << pf); |