• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/infiniband/hw/ipath/

Lines Matching refs:dd

45 static void ipath_clrpiobuf(struct ipath_devdata *dd, u32 pnum)
49 if (pnum < dd->ipath_piobcnt2k) {
50 pbuf = (u32 __iomem *) (dd->ipath_pio2kbase + pnum *
51 dd->ipath_palign);
52 dwcnt = dd->ipath_piosize2k >> 2;
55 pbuf = (u32 __iomem *) (dd->ipath_pio4kbase +
56 (pnum - dd->ipath_piobcnt2k) * dd->ipath_4kalign);
57 dwcnt = dd->ipath_piosize4k >> 2;
59 dev_info(&dd->pcidev->dev,
73 void ipath_disarm_senderrbufs(struct ipath_devdata *dd, int rewrite)
81 piobcnt = dd->ipath_piobcnt2k + dd->ipath_piobcnt4k;
84 dd, dd->ipath_kregs->kr_sendbuffererror);
86 dd, dd->ipath_kregs->kr_sendbuffererror + 1);
89 dd, dd->ipath_kregs->kr_sendbuffererror + 2);
91 dd, dd->ipath_kregs->kr_sendbuffererror + 3);
108 ipath_clrpiobuf(dd, i);
109 ipath_disarm_piobufs(dd, i, 1);
111 dd->ipath_lastcancel = jiffies+3; /* no armlaunch for a bit */
145 static u64 handle_e_sum_errs(struct ipath_devdata *dd, ipath_err_t errs)
149 ipath_disarm_senderrbufs(dd, 0);
151 !(dd->ipath_flags & IPATH_LINKACTIVE)) {
265 static void handle_e_ibstatuschanged(struct ipath_devdata *dd,
274 * dd->ipath_kregs->kr_ibcctrl
276 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_ibcstatus);
285 && (dd->ipath_flags & (IPATH_LINKARMED | IPATH_LINKACTIVE))) {
286 dev_info(&dd->pcidev->dev, "Link state changed from %s to %s\n",
287 (dd->ipath_flags & IPATH_LINKARMED) ? "ARM" : "ACTIVE",
293 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
295 ipath_disarm_piobufs(dd, dd->ipath_lastport_piobuf,
296 (unsigned)(dd->ipath_piobcnt2k +
297 dd->ipath_piobcnt4k) -
298 dd->ipath_lastport_piobuf);
306 if (lstate == ((unsigned) dd->ipath_lastibcstat
313 "was %s\n", dd->ipath_unit,
316 dd->ipath_lastibcstat
320 lstate = dd->ipath_lastibcstat & IPATH_IBSTATE_MASK;
326 dd->ipath_unit,
332 dd->ipath_unit, (u32) val, lstate);
350 last_ltstate = (dd->ipath_lastibcstat >>
356 if (dd->ipath_ibpollcnt > 40) {
357 dd->ipath_flags |= IPATH_NOCABLE;
358 *dd->ipath_statusp |=
361 dd->ipath_ibpollcnt++;
365 dd->ipath_ibpollcnt = 0; /* some state other than 2 or 3 */
368 dd->ipath_flags |= IPATH_LINKDOWN;
369 dd->ipath_flags &= ~(IPATH_LINKUNK | IPATH_LINKINIT
372 *dd->ipath_statusp &= ~IPATH_STATUS_IB_READY;
373 dd->ipath_lli_counter = 0;
375 if (((dd->ipath_lastibcstat >>
382 dd->ipath_unit,
386 "down (%s)\n", dd->ipath_unit,
390 dd->ipath_f_setextled(dd, lstate, ltstate);
392 dd->ipath_flags |= IPATH_LINKACTIVE;
393 dd->ipath_flags &=
396 *dd->ipath_statusp &= ~IPATH_STATUS_IB_NOCABLE;
397 *dd->ipath_statusp |=
399 dd->ipath_f_setextled(dd, lstate, ltstate);
405 dd->ipath_flags |= IPATH_LINKINIT | IPATH_LINKDOWN;
406 dd->ipath_flags &=
409 *dd->ipath_statusp &= ~(IPATH_STATUS_IB_NOCABLE
411 dd->ipath_f_setextled(dd, lstate, ltstate);
413 dd->ipath_flags |= IPATH_LINKARMED;
414 dd->ipath_flags &=
417 *dd->ipath_statusp &= ~(IPATH_STATUS_IB_NOCABLE
419 dd->ipath_f_setextled(dd, lstate, ltstate);
423 dd->ipath_unit,
427 dd->ipath_lastibcstat = val;
430 static void handle_supp_msgs(struct ipath_devdata *dd,
437 if (dd->ipath_lasterror & ~INFINIPATH_E_IBSTATUSCHANGED) {
440 dd->ipath_lasterror &
442 if (dd->ipath_lasterror &
445 ipath_dev_err(dd, "Suppressed %u messages for "
449 dd->ipath_lasterror);
469 static unsigned handle_frequent_errors(struct ipath_devdata *dd,
490 handle_supp_msgs(dd, supp_msgs, msg);
501 static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs)
509 supp_msgs = handle_frequent_errors(dd, errs, msg, &noprint);
515 errs &= ~dd->ipath_maskederrs;
520 dd->ipath_f_handle_hwerrors(dd, msg, sizeof msg);
523 if (!noprint && (errs & ~dd->ipath_e_bitsextant))
524 ipath_dev_err(dd, "error interrupt with unknown errors "
526 (errs & ~dd->ipath_e_bitsextant));
529 ignore_this_time = handle_e_sum_errs(dd, errs);
531 !(dd->ipath_flags & IPATH_LINKACTIVE)) {
552 dd->ipath_maskederrs |= dd->ipath_lasterror | errs;
553 ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask,
554 ~dd->ipath_maskederrs);
556 (dd->ipath_maskederrs & ~dd->
559 if ((dd->ipath_maskederrs & ~dd->ipath_ignorederrs) &
562 ipath_dev_err(dd, "Temporarily disabling "
564 (unsigned long long) (dd->ipath_maskederrs &
565 ~dd->ipath_ignorederrs), msg);
592 dd->ipath_unmasktime = jiffies + HZ * 180;
595 ipath_write_kreg(dd, dd->ipath_kregs->kr_errorclear, errs);
598 if (errs & ~dd->ipath_lasterror) {
599 errs &= ~dd->ipath_lasterror;
601 dd->ipath_lasterror |= errs &
608 dd->ipath_lastcancel > jiffies) {
653 for (i = 0; i < dd->ipath_cfgports; i++) {
654 struct ipath_portdata *pd = dd->ipath_pd[i];
656 hd = dd->ipath_port0head;
658 *dd->ipath_hdrqtailptr);
666 if (tl == dd->ipath_lastrcvhdrqtails[i])
668 hd = ipath_read_ureg32(dd, ur_rcvhdrhead,
673 (!hd && tl == dd->ipath_hdrqlast)) {
676 dd->ipath_lastrcvhdrqtails[i] = tl;
689 if (dd->ipath_port0head !=
690 (u32) le64_to_cpu(*dd->ipath_hdrqtailptr))
705 dd->ipath_flags |= IPATH_LINKDOWN;
706 dd->ipath_flags &= ~(IPATH_LINKUNK | IPATH_LINKINIT
708 *dd->ipath_statusp &= ~IPATH_STATUS_IB_READY;
711 dd, dd->ipath_kregs->kr_ibcstatus);
718 handle_e_ibstatuschanged(dd, errs, noprint);
722 ipath_dev_err(dd, "Got reset, requires re-init "
724 dd->ipath_flags &= ~IPATH_INITTED; /* needs re-init */
726 *dd->ipath_statusp |= IPATH_STATUS_HWERROR;
727 *dd->ipath_statusp &= ~IPATH_STATUS_IB_CONF;
732 ipath_dev_err(dd, "%s error\n", msg);
734 dev_info(&dd->pcidev->dev, "%s packet problems\n",
737 if (dd->ipath_state_wanted & dd->ipath_flags) {
739 "waking\n", dd->ipath_state_wanted,
740 dd->ipath_flags);
749 static void ipath_bad_intr(struct ipath_devdata *dd, u32 * unexpectp)
767 if (dd->pcidev && dd->ipath_irq) {
768 ipath_dev_err(dd, "Now %u unexpected "
773 dd->ipath_irq);
774 dd->ipath_f_free_irq(dd);
777 if (ipath_read_kreg32(dd, dd->ipath_kregs->kr_intmask)) {
778 ipath_dev_err(dd, "%u unexpected interrupts, "
784 ipath_write_kreg(dd, dd->ipath_kregs->kr_intmask,
792 static void ipath_bad_regread(struct ipath_devdata *dd)
802 ipath_dev_err(dd,
806 ipath_write_kreg(dd, dd->ipath_kregs->kr_intmask, 0ULL);
808 ipath_dev_err(dd, "Still bad interrupt status, "
810 dd->ipath_f_free_irq(dd);
815 ipath_dev_err(dd, "Disabling interrupts, "
820 static void handle_port_pioavail(struct ipath_devdata *dd)
827 for (i = 1; dd->ipath_portpiowait && i < dd->ipath_cfgports; i++) {
828 struct ipath_portdata *pd = dd->ipath_pd[i];
831 dd->ipath_portpiowait & (1U << i)) {
832 clear_bit(i, &dd->ipath_portpiowait);
843 static void handle_layer_pioavail(struct ipath_devdata *dd)
847 ret = ipath_ib_piobufavail(dd->verbs_dev);
853 set_bit(IPATH_S_PIOINTBUFAVAIL, &dd->ipath_sendctrl);
854 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
855 dd->ipath_sendctrl);
863 static void handle_urcv(struct ipath_devdata *dd, u32 istat)
870 dd->ipath_i_rcvavail_mask)
872 dd->ipath_i_rcvurg_mask);
873 for (i = 1; i < dd->ipath_cfgports; i++) {
874 struct ipath_portdata *pd = dd->ipath_pd[i];
880 &dd->ipath_rcvctrl);
890 ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvctrl,
891 dd->ipath_rcvctrl);
897 struct ipath_devdata *dd = data;
908 if (!(dd->ipath_flags & IPATH_PRESENT)) {
925 if (!(dd->ipath_flags & IPATH_INITTED)) {
926 ipath_bad_intr(dd, &unexpected);
943 oldhead = dd->ipath_port0head;
944 curtail = (u32)le64_to_cpu(*dd->ipath_hdrqtailptr);
946 if (dd->ipath_flags & IPATH_GPIO_INTR) {
947 ipath_write_kreg(dd, dd->ipath_kregs->kr_gpio_clear,
953 ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, istat);
954 ipath_kreceive(dd);
955 if (oldhead != dd->ipath_port0head) {
961 istat = ipath_read_kreg32(dd, dd->ipath_kregs->kr_intstatus);
969 ipath_bad_regread(dd);
978 if (unlikely(istat & ~dd->ipath_i_bitsextant))
979 ipath_dev_err(dd,
981 istat & (u32) ~ dd->ipath_i_bitsextant);
987 estat = ipath_read_kreg64(dd,
988 dd->ipath_kregs->kr_errorstatus);
990 dev_info(&dd->pcidev->dev, "error interrupt (%x), "
997 ipath_dev_err(dd, "Read of error status failed "
1000 if (handle_errors(dd, estat))
1019 dd, dd->ipath_kregs->kr_gpio_status);
1023 (dd->ipath_flags & IPATH_GPIO_ERRINTRS)) {
1033 dd->ipath_rxfc_unsupvl_errs++;
1037 dd->ipath_overrun_thresh_errs++;
1041 dd->ipath_lli_errs++;
1047 (dd->ipath_flags & IPATH_GPIO_INTR)) {
1068 const u32 mask = (u32) dd->ipath_gpio_mask;
1077 ipath_write_kreg(dd, dd->ipath_kregs->kr_gpio_clear,
1091 ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, istat);
1100 ipath_kreceive(dd);
1104 if (istat & ((dd->ipath_i_rcvavail_mask <<
1106 | (dd->ipath_i_rcvurg_mask <<
1108 handle_urcv(dd, istat);
1111 clear_bit(IPATH_S_PIOINTBUFAVAIL, &dd->ipath_sendctrl);
1112 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
1113 dd->ipath_sendctrl);
1115 if (dd->ipath_portpiowait)
1116 handle_port_pioavail(dd);
1118 handle_layer_pioavail(dd);