diff options
author | Ralph Campbell <ralph.campbell@qlogic.com> | 2007-07-06 15:48:48 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-07-09 23:12:26 -0400 |
commit | 9ca48655667214be6ebd191628a3c4b5b529a87e (patch) | |
tree | 89670425b57296ebeeb0ca86d818e36efd8c0603 /drivers/infiniband | |
parent | 12f9a49e1bce241c243268c764e1b37391157cd0 (diff) |
IB/ipath: Remove support for preproduction HTX InfiniPath cards
Clean up some code by removing support for some older pre-production
HTX InfiniPath cards.
Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_driver.c | 10 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_iba6110.c | 39 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_kernel.h | 4 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_verbs.c | 7 |
4 files changed, 12 insertions, 48 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c index c40a542bebec..da4a2cfb61b4 100644 --- a/drivers/infiniband/hw/ipath/ipath_driver.c +++ b/drivers/infiniband/hw/ipath/ipath_driver.c | |||
@@ -1021,14 +1021,10 @@ void ipath_kreceive(struct ipath_devdata *dd) | |||
1021 | goto bail; | 1021 | goto bail; |
1022 | } | 1022 | } |
1023 | 1023 | ||
1024 | /* There is already a thread processing this queue. */ | ||
1025 | if (test_and_set_bit(0, &dd->ipath_rcv_pending)) | ||
1026 | goto bail; | ||
1027 | |||
1028 | l = dd->ipath_port0head; | 1024 | l = dd->ipath_port0head; |
1029 | hdrqtail = (u32) le64_to_cpu(*dd->ipath_hdrqtailptr); | 1025 | hdrqtail = (u32) le64_to_cpu(*dd->ipath_hdrqtailptr); |
1030 | if (l == hdrqtail) | 1026 | if (l == hdrqtail) |
1031 | goto done; | 1027 | goto bail; |
1032 | 1028 | ||
1033 | reloop: | 1029 | reloop: |
1034 | for (i = 0; l != hdrqtail; i++) { | 1030 | for (i = 0; l != hdrqtail; i++) { |
@@ -1163,10 +1159,6 @@ reloop: | |||
1163 | ipath_stats.sps_avgpkts_call = | 1159 | ipath_stats.sps_avgpkts_call = |
1164 | ipath_stats.sps_port0pkts / ++totcalls; | 1160 | ipath_stats.sps_port0pkts / ++totcalls; |
1165 | 1161 | ||
1166 | done: | ||
1167 | clear_bit(0, &dd->ipath_rcv_pending); | ||
1168 | smp_mb__after_clear_bit(); | ||
1169 | |||
1170 | bail:; | 1162 | bail:; |
1171 | } | 1163 | } |
1172 | 1164 | ||
diff --git a/drivers/infiniband/hw/ipath/ipath_iba6110.c b/drivers/infiniband/hw/ipath/ipath_iba6110.c index fdfa95d0dd72..650745d83fac 100644 --- a/drivers/infiniband/hw/ipath/ipath_iba6110.c +++ b/drivers/infiniband/hw/ipath/ipath_iba6110.c | |||
@@ -677,6 +677,12 @@ static int ipath_ht_boardname(struct ipath_devdata *dd, char *name, | |||
677 | if (n) | 677 | if (n) |
678 | snprintf(name, namelen, "%s", n); | 678 | snprintf(name, namelen, "%s", n); |
679 | 679 | ||
680 | if (dd->ipath_boardrev != 6 && dd->ipath_boardrev != 7 && | ||
681 | dd->ipath_boardrev != 11) { | ||
682 | ipath_dev_err(dd, "Unsupported InfiniPath board %s!\n", name); | ||
683 | ret = 1; | ||
684 | goto bail; | ||
685 | } | ||
680 | if (dd->ipath_majrev != 3 || (dd->ipath_minrev < 2 || | 686 | if (dd->ipath_majrev != 3 || (dd->ipath_minrev < 2 || |
681 | dd->ipath_minrev > 4)) { | 687 | dd->ipath_minrev > 4)) { |
682 | /* | 688 | /* |
@@ -694,36 +700,11 @@ static int ipath_ht_boardname(struct ipath_devdata *dd, char *name, | |||
694 | * copies | 700 | * copies |
695 | */ | 701 | */ |
696 | dd->ipath_flags |= IPATH_32BITCOUNTERS; | 702 | dd->ipath_flags |= IPATH_32BITCOUNTERS; |
703 | dd->ipath_flags |= IPATH_GPIO_INTR; | ||
697 | if (dd->ipath_htspeed != 800) | 704 | if (dd->ipath_htspeed != 800) |
698 | ipath_dev_err(dd, | 705 | ipath_dev_err(dd, |
699 | "Incorrectly configured for HT @ %uMHz\n", | 706 | "Incorrectly configured for HT @ %uMHz\n", |
700 | dd->ipath_htspeed); | 707 | dd->ipath_htspeed); |
701 | if (dd->ipath_boardrev == 7 || dd->ipath_boardrev == 11 || | ||
702 | dd->ipath_boardrev == 6) | ||
703 | dd->ipath_flags |= IPATH_GPIO_INTR; | ||
704 | else | ||
705 | dd->ipath_flags |= IPATH_POLL_RX_INTR; | ||
706 | if (dd->ipath_boardrev == 8) { /* LS/X-1 */ | ||
707 | u64 val; | ||
708 | val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_extstatus); | ||
709 | if (val & INFINIPATH_EXTS_SERDESSEL) { | ||
710 | /* | ||
711 | * hardware disabled | ||
712 | * | ||
713 | * This means that the chip is hardware disabled, | ||
714 | * and will not be able to bring up the link, | ||
715 | * in any case. We special case this and abort | ||
716 | * early, to avoid later messages. We also set | ||
717 | * the DISABLED status bit | ||
718 | */ | ||
719 | ipath_dbg("Unit %u is hardware-disabled\n", | ||
720 | dd->ipath_unit); | ||
721 | *dd->ipath_statusp |= IPATH_STATUS_DISABLED; | ||
722 | /* this value is handled differently */ | ||
723 | ret = 2; | ||
724 | goto bail; | ||
725 | } | ||
726 | } | ||
727 | ret = 0; | 708 | ret = 0; |
728 | 709 | ||
729 | bail: | 710 | bail: |
@@ -1574,8 +1555,10 @@ static int ipath_ht_early_init(struct ipath_devdata *dd) | |||
1574 | * with 128, rather than 112. | 1555 | * with 128, rather than 112. |
1575 | */ | 1556 | */ |
1576 | dd->ipath_flags |= IPATH_GPIO_INTR; | 1557 | dd->ipath_flags |= IPATH_GPIO_INTR; |
1577 | dd->ipath_flags &= ~IPATH_POLL_RX_INTR; | 1558 | } else |
1578 | } | 1559 | ipath_dev_err(dd, "Unsupported InfiniPath serial " |
1560 | "number %.16s!\n", dd->ipath_serial); | ||
1561 | |||
1579 | return 0; | 1562 | return 0; |
1580 | } | 1563 | } |
1581 | 1564 | ||
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h index 8bad3e3c5550..a27e06297636 100644 --- a/drivers/infiniband/hw/ipath/ipath_kernel.h +++ b/drivers/infiniband/hw/ipath/ipath_kernel.h | |||
@@ -391,9 +391,6 @@ struct ipath_devdata { | |||
391 | struct class_device *diag_class_dev; | 391 | struct class_device *diag_class_dev; |
392 | /* timer used to prevent stats overflow, error throttling, etc. */ | 392 | /* timer used to prevent stats overflow, error throttling, etc. */ |
393 | struct timer_list ipath_stats_timer; | 393 | struct timer_list ipath_stats_timer; |
394 | /* check for stale messages in rcv queue */ | ||
395 | /* only allow one intr at a time. */ | ||
396 | unsigned long ipath_rcv_pending; | ||
397 | void *ipath_dummy_hdrq; /* used after port close */ | 394 | void *ipath_dummy_hdrq; /* used after port close */ |
398 | dma_addr_t ipath_dummy_hdrq_phys; | 395 | dma_addr_t ipath_dummy_hdrq_phys; |
399 | 396 | ||
@@ -740,7 +737,6 @@ int ipath_set_rx_pol_inv(struct ipath_devdata *dd, u8 new_pol_inv); | |||
740 | * are 64bit */ | 737 | * are 64bit */ |
741 | #define IPATH_32BITCOUNTERS 0x20000 | 738 | #define IPATH_32BITCOUNTERS 0x20000 |
742 | /* can miss port0 rx interrupts */ | 739 | /* can miss port0 rx interrupts */ |
743 | #define IPATH_POLL_RX_INTR 0x40000 | ||
744 | #define IPATH_DISABLED 0x80000 /* administratively disabled */ | 740 | #define IPATH_DISABLED 0x80000 /* administratively disabled */ |
745 | /* Use GPIO interrupts for new counters */ | 741 | /* Use GPIO interrupts for new counters */ |
746 | #define IPATH_GPIO_ERRINTRS 0x100000 | 742 | #define IPATH_GPIO_ERRINTRS 0x100000 |
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c index c76ea0e0b024..65f7181e9cf8 100644 --- a/drivers/infiniband/hw/ipath/ipath_verbs.c +++ b/drivers/infiniband/hw/ipath/ipath_verbs.c | |||
@@ -1375,13 +1375,6 @@ static void __verbs_timer(unsigned long arg) | |||
1375 | { | 1375 | { |
1376 | struct ipath_devdata *dd = (struct ipath_devdata *) arg; | 1376 | struct ipath_devdata *dd = (struct ipath_devdata *) arg; |
1377 | 1377 | ||
1378 | /* | ||
1379 | * If port 0 receive packet interrupts are not available, or | ||
1380 | * can be missed, poll the receive queue | ||
1381 | */ | ||
1382 | if (dd->ipath_flags & IPATH_POLL_RX_INTR) | ||
1383 | ipath_kreceive(dd); | ||
1384 | |||
1385 | /* Handle verbs layer timeouts. */ | 1378 | /* Handle verbs layer timeouts. */ |
1386 | ipath_ib_timer(dd->verbs_dev); | 1379 | ipath_ib_timer(dd->verbs_dev); |
1387 | 1380 | ||