예제 #1
0
void mfree_recv_priv_lock(struct recv_priv *precvpriv)
{	
       _spinlock_free(&precvpriv->lock);
	_free_sema(&precvpriv->recv_sema);
	_free_sema(&precvpriv->terminate_recvthread_sema);

	_spinlock_free(&precvpriv->free_recv_queue.lock);
	_spinlock_free(&precvpriv->recv_pending_queue.lock);
}
예제 #2
0
void mfree_sta_priv_lock(struct	sta_priv *pstapriv)
{
	 mfree_all_stainfo(pstapriv); //be done before free sta_hash_lock

	_spinlock_free(&pstapriv->free_sta_queue.lock);

	_spinlock_free(&pstapriv->sta_hash_lock);
	_spinlock_free(&pstapriv->wakeup_q.lock);
	_spinlock_free(&pstapriv->sleep_q.lock);

}
예제 #3
0
void	_free_sta_recv_priv_lock(struct sta_recv_priv *psta_recvpriv)
{
_func_enter_;	

	_spinlock_free(&psta_recvpriv->lock);

	_spinlock_free(&(psta_recvpriv->defrag_q.lock));

_func_exit_;

}
예제 #4
0
void	_free_sta_xmit_priv_lock(struct sta_xmit_priv *psta_xmitpriv)
{
_func_enter_;

	_spinlock_free(&psta_xmitpriv->lock);

	_spinlock_free(&(psta_xmitpriv->be_q.sta_pending.lock));
	_spinlock_free(&(psta_xmitpriv->bk_q.sta_pending.lock));
	_spinlock_free(&(psta_xmitpriv->vi_q.sta_pending.lock));
	_spinlock_free(&(psta_xmitpriv->vo_q.sta_pending.lock));
_func_exit_;	
}
예제 #5
0
static void mfree_stainfo(struct sta_info *psta)
{
_func_enter_;

	if(&psta->lock != NULL)
		 _spinlock_free(&psta->lock);

	_free_sta_xmit_priv_lock(&psta->sta_xmitpriv);
	_free_sta_recv_priv_lock(&psta->sta_recvpriv);
	
_func_exit_;	
}
예제 #6
0
void _free_cmd_priv (struct	cmd_priv *pcmdpriv)
{
_func_enter_;

	if(pcmdpriv){
		_spinlock_free(&(pcmdpriv->cmd_queue.lock));
		_free_sema(&(pcmdpriv->cmd_queue_sema));
		//_free_sema(&(pcmdpriv->cmd_done_sema));
		_free_sema(&(pcmdpriv->terminate_cmdthread_sema));

		if (pcmdpriv->cmd_allocated_buf)
			_mfree(pcmdpriv->cmd_allocated_buf, MAX_CMDSZ + CMDBUFF_ALIGN_SZ);
		
		if (pcmdpriv->rsp_allocated_buf)
			_mfree(pcmdpriv->rsp_allocated_buf, MAX_RSPSZ + 4);
	}
_func_exit_;		
}