1 //============================================================================
2 // Copyright (c) 1996-2005 Winbond Electronic Corporation
8 // Linux releated routines
10 //============================================================================
11 #include <linux/netdevice.h>
15 #include "os_common.h"
17 #include "wblinux_f.h"
20 WBLINUX_stop( struct wbsoft_priv * adapter )
24 if (atomic_inc_return(&adapter->ThreadCount) == 1) {
25 // Shutdown module immediately
26 adapter->shutdown = 1;
28 while (adapter->skb_array[ adapter->skb_GetIndex ]) {
29 // Trying to free the un-sending packet
30 pSkb = adapter->skb_array[ adapter->skb_GetIndex ];
31 adapter->skb_array[ adapter->skb_GetIndex ] = NULL;
33 dev_kfree_skb_irq( pSkb );
35 dev_kfree_skb( pSkb );
37 adapter->skb_GetIndex++;
38 adapter->skb_GetIndex %= WBLINUX_PACKET_ARRAY_SIZE;
41 #ifdef _PE_STATE_DUMP_
42 WBDEBUG(( "[w35und] SKB_RELEASE OK\n" ));
46 atomic_dec(&adapter->ThreadCount);