diff options
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be.h | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be_roce.c | 18 | ||||
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be_roce.h | 3 |
4 files changed, 20 insertions, 3 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h index c2f5d2d3b932..56d4d100e024 100644 --- a/drivers/net/ethernet/emulex/benet/be.h +++ b/drivers/net/ethernet/emulex/benet/be.h | |||
| @@ -890,5 +890,6 @@ void be_roce_dev_remove(struct be_adapter *); | |||
| 890 | */ | 890 | */ |
| 891 | void be_roce_dev_open(struct be_adapter *); | 891 | void be_roce_dev_open(struct be_adapter *); |
| 892 | void be_roce_dev_close(struct be_adapter *); | 892 | void be_roce_dev_close(struct be_adapter *); |
| 893 | void be_roce_dev_shutdown(struct be_adapter *); | ||
| 893 | 894 | ||
| 894 | #endif /* BE_H */ | 895 | #endif /* BE_H */ |
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 1e187fb760f8..36ce69ae9a2f 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
| @@ -4958,6 +4958,7 @@ static void be_shutdown(struct pci_dev *pdev) | |||
| 4958 | if (!adapter) | 4958 | if (!adapter) |
| 4959 | return; | 4959 | return; |
| 4960 | 4960 | ||
| 4961 | be_roce_dev_shutdown(adapter); | ||
| 4961 | cancel_delayed_work_sync(&adapter->work); | 4962 | cancel_delayed_work_sync(&adapter->work); |
| 4962 | cancel_delayed_work_sync(&adapter->func_recovery_work); | 4963 | cancel_delayed_work_sync(&adapter->func_recovery_work); |
| 4963 | 4964 | ||
diff --git a/drivers/net/ethernet/emulex/benet/be_roce.c b/drivers/net/ethernet/emulex/benet/be_roce.c index 5bf16603a3e9..ef4672dc7357 100644 --- a/drivers/net/ethernet/emulex/benet/be_roce.c +++ b/drivers/net/ethernet/emulex/benet/be_roce.c | |||
| @@ -120,7 +120,8 @@ static void _be_roce_dev_open(struct be_adapter *adapter) | |||
| 120 | { | 120 | { |
| 121 | if (ocrdma_drv && adapter->ocrdma_dev && | 121 | if (ocrdma_drv && adapter->ocrdma_dev && |
| 122 | ocrdma_drv->state_change_handler) | 122 | ocrdma_drv->state_change_handler) |
| 123 | ocrdma_drv->state_change_handler(adapter->ocrdma_dev, 0); | 123 | ocrdma_drv->state_change_handler(adapter->ocrdma_dev, |
| 124 | BE_DEV_UP); | ||
| 124 | } | 125 | } |
| 125 | 126 | ||
| 126 | void be_roce_dev_open(struct be_adapter *adapter) | 127 | void be_roce_dev_open(struct be_adapter *adapter) |
| @@ -136,7 +137,8 @@ static void _be_roce_dev_close(struct be_adapter *adapter) | |||
| 136 | { | 137 | { |
| 137 | if (ocrdma_drv && adapter->ocrdma_dev && | 138 | if (ocrdma_drv && adapter->ocrdma_dev && |
| 138 | ocrdma_drv->state_change_handler) | 139 | ocrdma_drv->state_change_handler) |
| 139 | ocrdma_drv->state_change_handler(adapter->ocrdma_dev, 1); | 140 | ocrdma_drv->state_change_handler(adapter->ocrdma_dev, |
| 141 | BE_DEV_DOWN); | ||
| 140 | } | 142 | } |
| 141 | 143 | ||
| 142 | void be_roce_dev_close(struct be_adapter *adapter) | 144 | void be_roce_dev_close(struct be_adapter *adapter) |
| @@ -148,6 +150,18 @@ void be_roce_dev_close(struct be_adapter *adapter) | |||
| 148 | } | 150 | } |
| 149 | } | 151 | } |
| 150 | 152 | ||
| 153 | void be_roce_dev_shutdown(struct be_adapter *adapter) | ||
| 154 | { | ||
| 155 | if (be_roce_supported(adapter)) { | ||
| 156 | mutex_lock(&be_adapter_list_lock); | ||
| 157 | if (ocrdma_drv && adapter->ocrdma_dev && | ||
| 158 | ocrdma_drv->state_change_handler) | ||
| 159 | ocrdma_drv->state_change_handler(adapter->ocrdma_dev, | ||
| 160 | BE_DEV_SHUTDOWN); | ||
| 161 | mutex_unlock(&be_adapter_list_lock); | ||
| 162 | } | ||
| 163 | } | ||
| 164 | |||
| 151 | int be_roce_register_driver(struct ocrdma_driver *drv) | 165 | int be_roce_register_driver(struct ocrdma_driver *drv) |
| 152 | { | 166 | { |
| 153 | struct be_adapter *dev; | 167 | struct be_adapter *dev; |
diff --git a/drivers/net/ethernet/emulex/benet/be_roce.h b/drivers/net/ethernet/emulex/benet/be_roce.h index a3d9e96c18eb..e6f7eb1a7d87 100644 --- a/drivers/net/ethernet/emulex/benet/be_roce.h +++ b/drivers/net/ethernet/emulex/benet/be_roce.h | |||
| @@ -62,7 +62,8 @@ struct ocrdma_driver { | |||
| 62 | 62 | ||
| 63 | enum { | 63 | enum { |
| 64 | BE_DEV_UP = 0, | 64 | BE_DEV_UP = 0, |
| 65 | BE_DEV_DOWN = 1 | 65 | BE_DEV_DOWN = 1, |
| 66 | BE_DEV_SHUTDOWN = 2 | ||
| 66 | }; | 67 | }; |
| 67 | 68 | ||
| 68 | /* APIs for RoCE driver to register callback handlers, | 69 | /* APIs for RoCE driver to register callback handlers, |
