aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAditya Sarwade <asarwade@vmware.com>2017-02-22 20:22:58 -0500
committerDoug Ledford <dledford@redhat.com>2017-03-24 20:49:53 -0400
commitb172679b0d3b93a6197b2ff892794e7178e3c448 (patch)
treeb8d4102871de05159812dac7cd001ea4cb7ec9ea
parente51c2fb0331cb3440d7dc83ee78019ee8c7bb366 (diff)
RDMA/vmw_pvrdma: Activate device on ethernet link up
Restore device state when ethernet link changes to active. Acked-by: George Zhang <georgezhang@vmware.com> Acked-by: Jorgen Hansen <jhansen@vmware.com> Acked-by: Bryan Tan <bryantan@vmware.com> Signed-off-by: Aditya Sarwade <asarwade@vmware.com> Signed-off-by: Adit Ranadive <aditr@vmware.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r--drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h2
-rw-r--r--drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c13
2 files changed, 12 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h
index e69d6f3cae32..09078ccfaec7 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h
@@ -132,7 +132,7 @@ enum pvrdma_pci_resource {
132 132
133enum pvrdma_device_ctl { 133enum pvrdma_device_ctl {
134 PVRDMA_DEVICE_CTL_ACTIVATE, /* Activate device. */ 134 PVRDMA_DEVICE_CTL_ACTIVATE, /* Activate device. */
135 PVRDMA_DEVICE_CTL_QUIESCE, /* Quiesce device. */ 135 PVRDMA_DEVICE_CTL_UNQUIESCE, /* Unquiesce device. */
136 PVRDMA_DEVICE_CTL_RESET, /* Reset device. */ 136 PVRDMA_DEVICE_CTL_RESET, /* Reset device. */
137}; 137};
138 138
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
index e77476ca70ac..34ebc7615411 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
@@ -56,7 +56,7 @@
56#include "pvrdma.h" 56#include "pvrdma.h"
57 57
58#define DRV_NAME "vmw_pvrdma" 58#define DRV_NAME "vmw_pvrdma"
59#define DRV_VERSION "1.0.0.0-k" 59#define DRV_VERSION "1.0.1.0-k"
60 60
61static DEFINE_MUTEX(pvrdma_device_list_lock); 61static DEFINE_MUTEX(pvrdma_device_list_lock);
62static LIST_HEAD(pvrdma_device_list); 62static LIST_HEAD(pvrdma_device_list);
@@ -660,7 +660,16 @@ static void pvrdma_netdevice_event_handle(struct pvrdma_dev *dev,
660 pvrdma_dispatch_event(dev, 1, IB_EVENT_PORT_ERR); 660 pvrdma_dispatch_event(dev, 1, IB_EVENT_PORT_ERR);
661 break; 661 break;
662 case NETDEV_UP: 662 case NETDEV_UP:
663 pvrdma_dispatch_event(dev, 1, IB_EVENT_PORT_ACTIVE); 663 pvrdma_write_reg(dev, PVRDMA_REG_CTL,
664 PVRDMA_DEVICE_CTL_UNQUIESCE);
665
666 mb();
667
668 if (pvrdma_read_reg(dev, PVRDMA_REG_ERR))
669 dev_err(&dev->pdev->dev,
670 "failed to activate device during link up\n");
671 else
672 pvrdma_dispatch_event(dev, 1, IB_EVENT_PORT_ACTIVE);
664 break; 673 break;
665 default: 674 default:
666 dev_dbg(&dev->pdev->dev, "ignore netdevice event %ld on %s\n", 675 dev_dbg(&dev->pdev->dev, "ignore netdevice event %ld on %s\n",