NTB: Read peer info from local SPAD in transport
authorDave Jiang <dave.jiang@intel.com>
Tue, 2 Jun 2015 07:45:07 +0000 (03:45 -0400)
committerJon Mason <jdmason@kudzu.us>
Sat, 4 Jul 2015 18:06:00 +0000 (14:06 -0400)
The transport was writing and then reading the peer scratch pad,
essentially reading what it just wrote instead of exchanging any
information with the peer.  The transport expects the peer values to be
the same as the local values, so this issue was not obvious.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
drivers/ntb/ntb_transport.c

index 9faf1c6029af771bedf8bd9216819a75404e3891..d9538e911df658f74e6b4c9e98e733f8d3f236d4 100644 (file)
@@ -761,17 +761,17 @@ static void ntb_transport_link_work(struct work_struct *work)
        ntb_peer_spad_write(ndev, VERSION, NTB_TRANSPORT_VERSION);
 
        /* Query the remote side for its info */
-       val = ntb_peer_spad_read(ndev, VERSION);
+       val = ntb_spad_read(ndev, VERSION);
        dev_dbg(&pdev->dev, "Remote version = %d\n", val);
        if (val != NTB_TRANSPORT_VERSION)
                goto out;
 
-       val = ntb_peer_spad_read(ndev, NUM_QPS);
+       val = ntb_spad_read(ndev, NUM_QPS);
        dev_dbg(&pdev->dev, "Remote max number of qps = %d\n", val);
        if (val != nt->qp_count)
                goto out;
 
-       val = ntb_peer_spad_read(ndev, NUM_MWS);
+       val = ntb_spad_read(ndev, NUM_MWS);
        dev_dbg(&pdev->dev, "Remote number of mws = %d\n", val);
        if (val != nt->mw_count)
                goto out;
@@ -779,10 +779,10 @@ static void ntb_transport_link_work(struct work_struct *work)
        for (i = 0; i < nt->mw_count; i++) {
                u64 val64;
 
-               val = ntb_peer_spad_read(ndev, MW0_SZ_HIGH + (i * 2));
+               val = ntb_spad_read(ndev, MW0_SZ_HIGH + (i * 2));
                val64 = (u64)val << 32;
 
-               val = ntb_peer_spad_read(ndev, MW0_SZ_LOW + (i * 2));
+               val = ntb_spad_read(ndev, MW0_SZ_LOW + (i * 2));
                val64 |= val;
 
                dev_dbg(&pdev->dev, "Remote MW%d size = %#llx\n", i, val64);