IB/qib: Fix QLE734X link cycling
authorMitko Haralanov <mitko.haralanov@intel.com>
Mon, 7 May 2012 18:02:53 +0000 (14:02 -0400)
committerRoland Dreier <roland@purestorage.com>
Mon, 14 May 2012 19:39:26 +0000 (12:39 -0700)
The SERDES was using the incorrect Frequency Loop Bandwidth setting
causing the link to cycle through the Physical link negotiation state
machine.  Fixing the Frequency Loop Bandwidth setting in the SERDES
helps the link come up faster and more reliably.

Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/qib/qib_iba7322.c

index e7b9ad34fe2e7db6976408174719c8d310ceeca1..c881e744c091f712b8914ee7bff5bad7ad4b0d48 100644 (file)
@@ -7709,7 +7709,7 @@ static int serdes_7322_init_new(struct qib_pportdata *ppd)
        ibsd_wr_allchans(ppd, 5, 0, BMASK(0, 0));
        msleep(20);
        /*       Set Frequency Loop Bandwidth */
-       ibsd_wr_allchans(ppd, 2, (7 << 5), BMASK(8, 5));
+       ibsd_wr_allchans(ppd, 2, (15 << 5), BMASK(8, 5));
        /*       Enable Frequency Loop */
        ibsd_wr_allchans(ppd, 2, (1 << 4), BMASK(4, 4));
        /*       Set Timing Loop Bandwidth */