chip.c (0db9dec2762e02ee596bc2b9870414d5100d0baf) chip.c (60368186fd853899c1819bcefa47f85fe8d5e5ad)
1/*
2 * Copyright(c) 2015, 2016 Intel Corporation.
3 *
4 * This file is provided under a dual BSD/GPLv2 license. When using or
5 * redistributing this file, you may do so under either license.
6 *
7 * GPL LICENSE SUMMARY
8 *

--- 11539 unchanged lines hidden (view full) ---

11548 hfi1_cdbg(RCVCTRL, "ctxt %d op 0x%x", ctxt, op);
11549
11550 rcvctrl = read_kctxt_csr(dd, ctxt, RCV_CTXT_CTRL);
11551 /* if the context already enabled, don't do the extra steps */
11552 if ((op & HFI1_RCVCTRL_CTXT_ENB) &&
11553 !(rcvctrl & RCV_CTXT_CTRL_ENABLE_SMASK)) {
11554 /* reset the tail and hdr addresses, and sequence count */
11555 write_kctxt_csr(dd, ctxt, RCV_HDR_ADDR,
1/*
2 * Copyright(c) 2015, 2016 Intel Corporation.
3 *
4 * This file is provided under a dual BSD/GPLv2 license. When using or
5 * redistributing this file, you may do so under either license.
6 *
7 * GPL LICENSE SUMMARY
8 *

--- 11539 unchanged lines hidden (view full) ---

11548 hfi1_cdbg(RCVCTRL, "ctxt %d op 0x%x", ctxt, op);
11549
11550 rcvctrl = read_kctxt_csr(dd, ctxt, RCV_CTXT_CTRL);
11551 /* if the context already enabled, don't do the extra steps */
11552 if ((op & HFI1_RCVCTRL_CTXT_ENB) &&
11553 !(rcvctrl & RCV_CTXT_CTRL_ENABLE_SMASK)) {
11554 /* reset the tail and hdr addresses, and sequence count */
11555 write_kctxt_csr(dd, ctxt, RCV_HDR_ADDR,
11556 rcd->rcvhdrq_phys);
11556 rcd->rcvhdrq_dma);
11557 if (HFI1_CAP_KGET_MASK(rcd->flags, DMA_RTAIL))
11558 write_kctxt_csr(dd, ctxt, RCV_HDR_TAIL_ADDR,
11557 if (HFI1_CAP_KGET_MASK(rcd->flags, DMA_RTAIL))
11558 write_kctxt_csr(dd, ctxt, RCV_HDR_TAIL_ADDR,
11559 rcd->rcvhdrqtailaddr_phys);
11559 rcd->rcvhdrqtailaddr_dma);
11560 rcd->seq_cnt = 1;
11561
11562 /* reset the cached receive header queue head value */
11563 rcd->head = 0;
11564
11565 /*
11566 * Zero the receive header queue so we don't get false
11567 * positives when checking the sequence number. The

--- 48 unchanged lines hidden (view full) ---

11616 }
11617 if (op & HFI1_RCVCTRL_CTXT_DIS) {
11618 write_csr(dd, RCV_VL15, 0);
11619 /*
11620 * When receive context is being disabled turn on tail
11621 * update with a dummy tail address and then disable
11622 * receive context.
11623 */
11560 rcd->seq_cnt = 1;
11561
11562 /* reset the cached receive header queue head value */
11563 rcd->head = 0;
11564
11565 /*
11566 * Zero the receive header queue so we don't get false
11567 * positives when checking the sequence number. The

--- 48 unchanged lines hidden (view full) ---

11616 }
11617 if (op & HFI1_RCVCTRL_CTXT_DIS) {
11618 write_csr(dd, RCV_VL15, 0);
11619 /*
11620 * When receive context is being disabled turn on tail
11621 * update with a dummy tail address and then disable
11622 * receive context.
11623 */
11624 if (dd->rcvhdrtail_dummy_physaddr) {
11624 if (dd->rcvhdrtail_dummy_dma) {
11625 write_kctxt_csr(dd, ctxt, RCV_HDR_TAIL_ADDR,
11625 write_kctxt_csr(dd, ctxt, RCV_HDR_TAIL_ADDR,
11626 dd->rcvhdrtail_dummy_physaddr);
11626 dd->rcvhdrtail_dummy_dma);
11627 /* Enabling RcvCtxtCtrl.TailUpd is intentional. */
11628 rcvctrl |= RCV_CTXT_CTRL_TAIL_UPD_SMASK;
11629 }
11630
11631 rcvctrl &= ~RCV_CTXT_CTRL_ENABLE_SMASK;
11632 }
11633 if (op & HFI1_RCVCTRL_INTRAVAIL_ENB)
11634 rcvctrl |= RCV_CTXT_CTRL_INTR_AVAIL_SMASK;
11635 if (op & HFI1_RCVCTRL_INTRAVAIL_DIS)
11636 rcvctrl &= ~RCV_CTXT_CTRL_INTR_AVAIL_SMASK;
11627 /* Enabling RcvCtxtCtrl.TailUpd is intentional. */
11628 rcvctrl |= RCV_CTXT_CTRL_TAIL_UPD_SMASK;
11629 }
11630
11631 rcvctrl &= ~RCV_CTXT_CTRL_ENABLE_SMASK;
11632 }
11633 if (op & HFI1_RCVCTRL_INTRAVAIL_ENB)
11634 rcvctrl |= RCV_CTXT_CTRL_INTR_AVAIL_SMASK;
11635 if (op & HFI1_RCVCTRL_INTRAVAIL_DIS)
11636 rcvctrl &= ~RCV_CTXT_CTRL_INTR_AVAIL_SMASK;
11637 if (op & HFI1_RCVCTRL_TAILUPD_ENB && rcd->rcvhdrqtailaddr_phys)
11637 if (op & HFI1_RCVCTRL_TAILUPD_ENB && rcd->rcvhdrqtailaddr_dma)
11638 rcvctrl |= RCV_CTXT_CTRL_TAIL_UPD_SMASK;
11639 if (op & HFI1_RCVCTRL_TAILUPD_DIS) {
11640 /* See comment on RcvCtxtCtrl.TailUpd above */
11641 if (!(op & HFI1_RCVCTRL_CTXT_DIS))
11642 rcvctrl &= ~RCV_CTXT_CTRL_TAIL_UPD_SMASK;
11643 }
11644 if (op & HFI1_RCVCTRL_TIDFLOW_ENB)
11645 rcvctrl |= RCV_CTXT_CTRL_TID_FLOW_ENABLE_SMASK;

--- 55 unchanged lines hidden (view full) ---

11701
11702 if (op & (HFI1_RCVCTRL_TAILUPD_DIS | HFI1_RCVCTRL_CTXT_DIS))
11703 /*
11704 * If the context has been disabled and the Tail Update has
11705 * been cleared, set the RCV_HDR_TAIL_ADDR CSR to dummy address
11706 * so it doesn't contain an address that is invalid.
11707 */
11708 write_kctxt_csr(dd, ctxt, RCV_HDR_TAIL_ADDR,
11638 rcvctrl |= RCV_CTXT_CTRL_TAIL_UPD_SMASK;
11639 if (op & HFI1_RCVCTRL_TAILUPD_DIS) {
11640 /* See comment on RcvCtxtCtrl.TailUpd above */
11641 if (!(op & HFI1_RCVCTRL_CTXT_DIS))
11642 rcvctrl &= ~RCV_CTXT_CTRL_TAIL_UPD_SMASK;
11643 }
11644 if (op & HFI1_RCVCTRL_TIDFLOW_ENB)
11645 rcvctrl |= RCV_CTXT_CTRL_TID_FLOW_ENABLE_SMASK;

--- 55 unchanged lines hidden (view full) ---

11701
11702 if (op & (HFI1_RCVCTRL_TAILUPD_DIS | HFI1_RCVCTRL_CTXT_DIS))
11703 /*
11704 * If the context has been disabled and the Tail Update has
11705 * been cleared, set the RCV_HDR_TAIL_ADDR CSR to dummy address
11706 * so it doesn't contain an address that is invalid.
11707 */
11708 write_kctxt_csr(dd, ctxt, RCV_HDR_TAIL_ADDR,
11709 dd->rcvhdrtail_dummy_physaddr);
11709 dd->rcvhdrtail_dummy_dma);
11710}
11711
11712u32 hfi1_read_cntrs(struct hfi1_devdata *dd, char **namep, u64 **cntrp)
11713{
11714 int ret;
11715 u64 val = 0;
11716
11717 if (namep) {

--- 3163 unchanged lines hidden ---
11710}
11711
11712u32 hfi1_read_cntrs(struct hfi1_devdata *dd, char **namep, u64 **cntrp)
11713{
11714 int ret;
11715 u64 val = 0;
11716
11717 if (namep) {

--- 3163 unchanged lines hidden ---