static VOID AndesQueueInit(struct MCU_CTRL *ctl, MT_DL_LIST *list) { unsigned long flags; NDIS_SPIN_LOCK *lock; lock = AndesGetSpinLock(ctl, list); RTMP_SPIN_LOCK_IRQSAVE(lock, &flags); DlListInit(list); RTMP_SPIN_UNLOCK_IRQRESTORE(lock, &flags); }
VOID AndesUnlinkCmdMsg(struct cmd_msg *msg, MT_DL_LIST *list) { unsigned long flags; NDIS_SPIN_LOCK *lock; RTMP_ADAPTER *ad = (RTMP_ADAPTER *)msg->priv; struct MCU_CTRL *ctl = &ad->MCUCtrl; lock = AndesGetSpinLock(ctl, list); RTMP_SPIN_LOCK_IRQSAVE(lock, &flags); _AndesUnlinkCmdMsg(msg, list); RTMP_SPIN_UNLOCK_IRQRESTORE(lock, &flags); }
VOID AndesCleanupCmdMsg(RTMP_ADAPTER *ad, MT_DL_LIST *list) { unsigned long flags; struct cmd_msg *msg, *msg_tmp; NDIS_SPIN_LOCK *lock; struct MCU_CTRL *ctl = &ad->MCUCtrl; lock = AndesGetSpinLock(ctl, list); RTMP_SPIN_LOCK_IRQSAVE(lock, &flags); DlListForEachSafe(msg, msg_tmp, list, struct cmd_msg, list) { _AndesUnlinkCmdMsg(msg, list); AndesFreeCmdMsg(msg); }
struct cmd_msg *AndesDequeueCmdMsg(struct MCU_CTRL *ctl, MT_DL_LIST *list) { unsigned long flags; struct cmd_msg *msg; NDIS_SPIN_LOCK *lock; lock = AndesGetSpinLock(ctl, list); RTMP_SPIN_LOCK_IRQSAVE(lock, &flags); msg = _AndesDequeueCmdMsg(list); RTMP_SPIN_UNLOCK_IRQRESTORE(lock, &flags); return msg; }
UINT32 AndesQueueLen(struct MCU_CTRL *ctl, MT_DL_LIST *list) { UINT32 qlen; unsigned long flags; NDIS_SPIN_LOCK *lock; lock = AndesGetSpinLock(ctl, list); RTMP_SPIN_LOCK_IRQSAVE(lock, &flags); qlen = DlListLen(list); RTMP_SPIN_UNLOCK_IRQRESTORE(lock, &flags); return qlen; }
VOID AndesQueueHeadCmdMsg(MT_DL_LIST *list, struct cmd_msg *msg, enum cmd_msg_state state) { unsigned long flags; NDIS_SPIN_LOCK *lock; RTMP_ADAPTER *ad = (RTMP_ADAPTER *)msg->priv; struct MCU_CTRL *ctl = &ad->MCUCtrl; lock = AndesGetSpinLock(ctl, list); RTMP_SPIN_LOCK_IRQSAVE(lock, &flags); _AndesQueueHeadCmdMsg(list, msg, state); RTMP_SPIN_UNLOCK_IRQRESTORE(lock, &flags); }
static INT32 AndesQueueEmpty(struct MCU_CTRL *ctl, DL_LIST *list) { unsigned long flags; int is_empty; NDIS_SPIN_LOCK *lock; lock = AndesGetSpinLock(ctl, list); RTMP_SPIN_LOCK_IRQSAVE(lock, &flags); is_empty = DlListEmpty(list); RTMP_SPIN_UNLOCK_IRQRESTORE(lock, &flags); return is_empty; }