diff options
| author | Yongbae Park <yongbae2@gmail.com> | 2015-03-09 22:15:39 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-03-10 00:22:22 -0400 |
| commit | 4736edc764b5464d625385ef89ed0c3c88b09897 (patch) | |
| tree | 7cf9eadc5246f25ec4ff1469426a8b64e5b225ff | |
| parent | 5778d39d070b4ac5f889928175b7f2d53ae7504e (diff) | |
ibmveth: enable interrupts after napi_complete()
The interrupt is enabled before napi_complete(). A network timeout
occurs if the interrupt handler is called before napi_complete().
Fix the bug by enabling the interrupt after napi_complete().
Signed-off-by: Yongbae Park <yongbae2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/ethernet/ibm/ibmveth.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/ethernet/ibm/ibmveth.c b/drivers/net/ethernet/ibm/ibmveth.c index 072426a72745..cd7675ac5bf9 100644 --- a/drivers/net/ethernet/ibm/ibmveth.c +++ b/drivers/net/ethernet/ibm/ibmveth.c | |||
| @@ -1136,6 +1136,8 @@ restart_poll: | |||
| 1136 | ibmveth_replenish_task(adapter); | 1136 | ibmveth_replenish_task(adapter); |
| 1137 | 1137 | ||
| 1138 | if (frames_processed < budget) { | 1138 | if (frames_processed < budget) { |
| 1139 | napi_complete(napi); | ||
| 1140 | |||
| 1139 | /* We think we are done - reenable interrupts, | 1141 | /* We think we are done - reenable interrupts, |
| 1140 | * then check once more to make sure we are done. | 1142 | * then check once more to make sure we are done. |
| 1141 | */ | 1143 | */ |
| @@ -1144,8 +1146,6 @@ restart_poll: | |||
| 1144 | 1146 | ||
| 1145 | BUG_ON(lpar_rc != H_SUCCESS); | 1147 | BUG_ON(lpar_rc != H_SUCCESS); |
| 1146 | 1148 | ||
| 1147 | napi_complete(napi); | ||
| 1148 | |||
| 1149 | if (ibmveth_rxq_pending_buffer(adapter) && | 1149 | if (ibmveth_rxq_pending_buffer(adapter) && |
| 1150 | napi_reschedule(napi)) { | 1150 | napi_reschedule(napi)) { |
| 1151 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, | 1151 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, |
