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