Lines Matching refs:ppd

72 static void signal_ib_event(struct qib_pportdata *ppd, enum ib_event_type ev)
75 struct qib_devdata *dd = ppd->dd;
78 event.element.port_num = ppd->port;
83 void qib_handle_e_ibstatuschanged(struct qib_pportdata *ppd, u64 ibcs)
85 struct qib_devdata *dd = ppd->dd;
100 * ppd->lflags could be 0 if this is the first time the interrupt
104 (!ppd->lflags || (ppd->lflags & QIBL_LINKDOWN)) &&
107 if (dd->f_ib_updown(ppd, 1, ibcs))
109 } else if (ppd->lflags & (QIBL_LINKINIT | QIBL_LINKARMED |
113 dd->f_ib_updown(ppd, 0, ibcs))
115 qib_set_uevent_bits(ppd, _QIB_EVENT_LINKDOWN_BIT);
121 *ppd->statusp &= ~QIB_STATUS_IB_READY;
122 if (ppd->lflags & QIBL_LINKACTIVE)
124 spin_lock_irqsave(&ppd->lflags_lock, flags);
126 ppd->lflags |= QIBL_LINKARMED | QIBL_LINKV;
127 ppd->lflags &= ~(QIBL_LINKINIT |
130 ppd->lflags |= QIBL_LINKINIT | QIBL_LINKV;
131 ppd->lflags &= ~(QIBL_LINKARMED |
134 spin_unlock_irqrestore(&ppd->lflags_lock, flags);
136 mod_timer(&ppd->symerr_clear_timer,
139 !(ppd->lflags & QIBL_LINKACTIVE)) {
141 qib_hol_up(ppd); /* useful only for 6120 now */
142 *ppd->statusp |=
144 qib_clear_symerror_on_linkup(&ppd->symerr_clear_timer);
145 spin_lock_irqsave(&ppd->lflags_lock, flags);
146 ppd->lflags |= QIBL_LINKACTIVE | QIBL_LINKV;
147 ppd->lflags &= ~(QIBL_LINKINIT |
149 spin_unlock_irqrestore(&ppd->lflags_lock, flags);
151 qib_sdma_process_event(ppd,
154 dd->f_setextled(ppd, 1);
157 if (ppd->lflags & QIBL_LINKACTIVE)
159 spin_lock_irqsave(&ppd->lflags_lock, flags);
160 ppd->lflags |= QIBL_LINKDOWN | QIBL_LINKV;
161 ppd->lflags &= ~(QIBL_LINKINIT |
163 spin_unlock_irqrestore(&ppd->lflags_lock, flags);
164 *ppd->statusp &= ~QIB_STATUS_IB_READY;
168 ppd->lastibcstat = ibcs;
170 signal_ib_event(ppd, ev);
175 struct qib_pportdata *ppd = from_timer(ppd, t, symerr_clear_timer);
177 if (ppd->lflags & QIBL_LINKACTIVE)
180 ppd->ibport_data.z_symbol_error_counter =
181 ppd->dd->f_portcntr(ppd, QIBPORTCNTR_IBSYMBOLERR);
205 dd->f_rcvctrl(rcd->ppd, QIB_RCVCTRL_INTRAVAIL_DIS,