summaryrefslogtreecommitdiff
path: root/drivers/infiniband/hw/qib/qib_iba7322.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 09:24:25 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 09:24:25 -0700
commit48d5f6731837f0ec9a0e19ca763aa17d58385a98 (patch)
tree92dc84f80bf4a3ce1b023af404378e8a04f54986 /drivers/infiniband/hw/qib/qib_iba7322.c
parent0f6e0e8448a16d8d22119ce91d8dd24b44865b51 (diff)
parent043332cf28368e38fdfcee1a4827025e8bdbc540 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: RDMA/cma: Replace global lock in rdma_destroy_id() with id-specific one IB/cm: Cancel pending LAP message when exiting IB_CM_ESTABLISH state IB/cm: Bump reference count on cm_id before invoking callback RDMA/cma: Fix crash in request handlers IB/ipath: Don't reset disabled devices IB/qib: Fix M_Key field in SubnGet and SubnGetResp MADs IB/qib: Set default LE2 value for active cables to 0 RDMA/cxgb4: Debugfs dump_qp() updates RDMA/cxgb4: Dispatch FATAL event on EEH errors RDMA/cxgb4: Use ULP_MODE_TCPDDP RDMA/cxgb4: Enable on-chip SQ support by default RDMA/cxgb4: Do CIDX_INC updates every 1/16 CQ depth CQE reaps RDMA/cxgb4: Remove db_drop_task RDMA/cxgb4: Turn on delayed ACK IB/qib: Return correct MAD when setting link width to 255
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_iba7322.c')
-rw-r--r--drivers/infiniband/hw/qib/qib_iba7322.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/qib/qib_iba7322.c b/drivers/infiniband/hw/qib/qib_iba7322.c
index b01809a82cb0..4a2d21e15a70 100644
--- a/drivers/infiniband/hw/qib/qib_iba7322.c
+++ b/drivers/infiniband/hw/qib/qib_iba7322.c
@@ -5582,9 +5582,16 @@ static void qsfp_7322_event(struct work_struct *work)
* even on failure to read cable information. We don't
* get here for QME, so IS_QME check not needed here.
*/
- le2 = (!ret && qd->cache.atten[1] >= qib_long_atten &&
- !ppd->dd->cspec->r1 && QSFP_IS_CU(qd->cache.tech)) ?
- LE2_5m : LE2_DEFAULT;
+ if (!ret && !ppd->dd->cspec->r1) {
+ if (QSFP_IS_ACTIVE_FAR(qd->cache.tech))
+ le2 = LE2_QME;
+ else if (qd->cache.atten[1] >= qib_long_atten &&
+ QSFP_IS_CU(qd->cache.tech))
+ le2 = LE2_5m;
+ else
+ le2 = LE2_DEFAULT;
+ } else
+ le2 = LE2_DEFAULT;
ibsd_wr_allchans(ppd, 13, (le2 << 7), BMASK(9, 7));
init_txdds_table(ppd, 0);
}