@@ -230,10 +230,9 @@ void bnxt_ulp_stop(struct bnxt *bp)
230
230
return ;
231
231
232
232
mutex_lock (& edev -> en_dev_lock );
233
- if (!bnxt_ulp_registered (edev )) {
234
- mutex_unlock (& edev -> en_dev_lock );
235
- return ;
236
- }
233
+ if (!bnxt_ulp_registered (edev ) ||
234
+ (edev -> flags & BNXT_EN_FLAG_ULP_STOPPED ))
235
+ goto ulp_stop_exit ;
237
236
238
237
edev -> flags |= BNXT_EN_FLAG_ULP_STOPPED ;
239
238
if (aux_priv ) {
@@ -249,6 +248,7 @@ void bnxt_ulp_stop(struct bnxt *bp)
249
248
adrv -> suspend (adev , pm );
250
249
}
251
250
}
251
+ ulp_stop_exit :
252
252
mutex_unlock (& edev -> en_dev_lock );
253
253
}
254
254
@@ -257,19 +257,13 @@ void bnxt_ulp_start(struct bnxt *bp, int err)
257
257
struct bnxt_aux_priv * aux_priv = bp -> aux_priv ;
258
258
struct bnxt_en_dev * edev = bp -> edev ;
259
259
260
- if (!edev )
261
- return ;
262
-
263
- edev -> flags &= ~BNXT_EN_FLAG_ULP_STOPPED ;
264
-
265
- if (err )
260
+ if (!edev || err )
266
261
return ;
267
262
268
263
mutex_lock (& edev -> en_dev_lock );
269
- if (!bnxt_ulp_registered (edev )) {
270
- mutex_unlock (& edev -> en_dev_lock );
271
- return ;
272
- }
264
+ if (!bnxt_ulp_registered (edev ) ||
265
+ !(edev -> flags & BNXT_EN_FLAG_ULP_STOPPED ))
266
+ goto ulp_start_exit ;
273
267
274
268
if (edev -> ulp_tbl -> msix_requested )
275
269
bnxt_fill_msix_vecs (bp , edev -> msix_entries );
@@ -286,6 +280,8 @@ void bnxt_ulp_start(struct bnxt *bp, int err)
286
280
adrv -> resume (adev );
287
281
}
288
282
}
283
+ ulp_start_exit :
284
+ edev -> flags &= ~BNXT_EN_FLAG_ULP_STOPPED ;
289
285
mutex_unlock (& edev -> en_dev_lock );
290
286
}
291
287
0 commit comments