|
@@ -803,8 +803,12 @@ spider_net_release_tx_chain(struct spider_net_card *card, int brutal)
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
int status;
|
|
int status;
|
|
|
|
|
|
- while (chain->tail != chain->head) {
|
|
|
|
|
|
+ while (1) {
|
|
spin_lock_irqsave(&chain->lock, flags);
|
|
spin_lock_irqsave(&chain->lock, flags);
|
|
|
|
+ if (chain->tail == chain->head) {
|
|
|
|
+ spin_unlock_irqrestore(&chain->lock, flags);
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
descr = chain->tail;
|
|
descr = chain->tail;
|
|
hwdescr = descr->hwdescr;
|
|
hwdescr = descr->hwdescr;
|
|
|
|
|