]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
IB/hfi1: Add software counter for ctxt0 seq drop
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Mon, 6 Jan 2020 13:42:28 +0000 (08:42 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Feb 2020 07:38:25 +0000 (08:38 +0100)
[ Upstream commit 5ffd048698ea5139743acd45e8ab388a683642b8 ]

All other code paths increment some form of drop counter.

This was missed in the original implementation.

Fixes: 82c2611daaf0 ("staging/rdma/hfi1: Handle packets with invalid RHF on context 0")
Link: https://lore.kernel.org/r/20200106134228.119356.96828.stgit@awfm-01.aw.intel.com
Reviewed-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/hfi1/chip.c
drivers/infiniband/hw/hfi1/chip.h
drivers/infiniband/hw/hfi1/driver.c
drivers/infiniband/hw/hfi1/hfi.h

index 9b1fb84a3d45b8e70ac864ed6911428ad7382220..d5961918fe157e1242bfbf88e9860b97ac06722e 100644 (file)
@@ -1685,6 +1685,14 @@ static u64 access_sw_pio_drain(const struct cntr_entry *entry,
        return dd->verbs_dev.n_piodrain;
 }
 
+static u64 access_sw_ctx0_seq_drop(const struct cntr_entry *entry,
+                                  void *context, int vl, int mode, u64 data)
+{
+       struct hfi1_devdata *dd = context;
+
+       return dd->ctx0_seq_drop;
+}
+
 static u64 access_sw_vtx_wait(const struct cntr_entry *entry,
                              void *context, int vl, int mode, u64 data)
 {
@@ -4249,6 +4257,8 @@ static struct cntr_entry dev_cntrs[DEV_CNTR_LAST] = {
                            access_sw_cpu_intr),
 [C_SW_CPU_RCV_LIM] = CNTR_ELEM("RcvLimit", 0, 0, CNTR_NORMAL,
                            access_sw_cpu_rcv_limit),
+[C_SW_CTX0_SEQ_DROP] = CNTR_ELEM("SeqDrop0", 0, 0, CNTR_NORMAL,
+                           access_sw_ctx0_seq_drop),
 [C_SW_VTX_WAIT] = CNTR_ELEM("vTxWait", 0, 0, CNTR_NORMAL,
                            access_sw_vtx_wait),
 [C_SW_PIO_WAIT] = CNTR_ELEM("PioWait", 0, 0, CNTR_NORMAL,
index 4ca5ac8d7e9e408a814c0e0d3b661603fbc13d2e..bfccd4ae07a72676d392ae69b786f75f8d88185b 100644 (file)
@@ -926,6 +926,7 @@ enum {
        C_DC_PG_STS_TX_MBE_CNT,
        C_SW_CPU_INTR,
        C_SW_CPU_RCV_LIM,
+       C_SW_CTX0_SEQ_DROP,
        C_SW_VTX_WAIT,
        C_SW_PIO_WAIT,
        C_SW_PIO_DRAIN,
index 01aa1f132f55e960dbffbdd79bcbbb8ade0ef8fe..941b465244abef229c1c0a0c273192c2c2f0c17b 100644 (file)
@@ -734,6 +734,7 @@ static noinline int skip_rcv_packet(struct hfi1_packet *packet, int thread)
 {
        int ret;
 
+       packet->rcd->dd->ctx0_seq_drop++;
        /* Set up for the next packet */
        packet->rhqoff += packet->rsize;
        if (packet->rhqoff >= packet->maxcnt)
index 27dea5e1e20175f599721f1232ca510095951491..9edfd3e56f61c33faeffe58d57f89f8f15e07ded 100644 (file)
@@ -1153,6 +1153,8 @@ struct hfi1_devdata {
 
        char *boardname; /* human readable board info */
 
+       u64 ctx0_seq_drop;
+
        /* reset value */
        u64 z_int_counter;
        u64 z_rcv_limit;