static VOID DeleteIgmpMemberList( IN PMULTICAST_FILTER_TABLE pMulticastFilterTable, IN PLIST_HEADER pList) { PMEMBER_ENTRY pCurEntry, pPrvEntry; if (pList == NULL) { DBGPRINT(RT_DEBUG_ERROR, ("%s: membert list doesn't exist.\n", __FUNCTION__)); return; } if (pList->pHead == NULL) { return; } pPrvEntry = pCurEntry = (PMEMBER_ENTRY)pList->pHead; while (pCurEntry) { delEntryList(pList, (PLIST_ENTRY)pCurEntry); pPrvEntry = pCurEntry; pCurEntry = pCurEntry->pNext; FreeGrpMemberEntry(pMulticastFilterTable, pPrvEntry); } initList(pList); return; }
VOID MultipathEntryMaintain( IN PRTMP_ADAPTER pAd, IN UCHAR LinkIdx) { ULONG i; PMESH_MULTIPATH_ENTRY pEntry; ULONG Now; if (!VALID_MESH_LINK_ID(LinkIdx)) return; NdisGetSystemUpTime(&Now); for (i = 0; i < MULTIPATH_HASH_TAB_SIZE; i++) { pEntry = (PMESH_MULTIPATH_ENTRY)(pAd->MeshTab.MeshLink[LinkIdx].Entry.MultiPathHash[i].pHead); while (pEntry) { PMESH_MULTIPATH_ENTRY pEntryNext = pEntry->pNext; if (RTMP_TIME_AFTER(Now, pEntry->ReferTime + (pAd->MeshTab.MeshMultiCastAgeOut * OS_HZ / 1000))) { delEntryList(&pAd->MeshTab.MeshLink[LinkIdx].Entry.MultiPathHash[i], (PLIST_ENTRY)pEntry); MultipathEntyFree(pAd, pEntry); } pEntry = pEntryNext; } } return; }
void RTMP_CFG80211_RemoveVifEntry(void *pAdSrc, PNET_DEV pNewNetDev) { PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdSrc; PLIST_ENTRY pListEntry = NULL; pListEntry = (PLIST_ENTRY)RTMP_CFG80211_FindVifEntry_ByMac(pAd, pNewNetDev); if (pListEntry) { delEntryList(&pAd->cfg80211_ctrl.Cfg80211VifDevSet.vifDevList, pListEntry); os_free_mem(pListEntry); } else { DBGPRINT(RT_DEBUG_ERROR, ("Error in RTMP_CFG80211_RemoveVifEntry.\n")); } }
VOID RTMP_CFG80211_RemoveVifEntry(struct rtmp_adapter *pAd, struct net_device *pNewNetDev) { PLIST_ENTRY pListEntry = NULL; pListEntry = (PLIST_ENTRY)RTMP_CFG80211_FindVifEntry_ByMac(pAd, pNewNetDev); if (pListEntry) { delEntryList(&pAd->cfg80211_ctrl.Cfg80211VifDevSet.vifDevList, pListEntry); kfree(pListEntry); } else { DBGPRINT(RT_DEBUG_ERROR, ("Error in RTMP_CFG80211_RemoveVifEntry.\n")); } }
VOID RTMP_CFG80211_RemoveVifEntry(VOID *pAdSrc, PNET_DEV pNewNetDev) { PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdSrc; RT_LIST_ENTRY *pListEntry = NULL; pListEntry = (RT_LIST_ENTRY *)RTMP_CFG80211_FindVifEntry_ByMac(pAd, pNewNetDev); if (pListEntry) { delEntryList(&pAd->cfg80211_ctrl.Cfg80211VifDevSet.vifDevList, pListEntry); os_free_mem(NULL, pListEntry); pListEntry = NULL; } else { MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_ERROR, ("Error in RTMP_CFG80211_RemoveVifEntry.\n")); } }
static VOID DeleteIgmpMember( IN PMULTICAST_FILTER_TABLE pMulticastFilterTable, IN PLIST_HEADER pList, IN PUCHAR pMemberAddr) { PMEMBER_ENTRY pCurEntry; if (pList == NULL) { DBGPRINT(RT_DEBUG_ERROR, ("%s: membert list doesn't exist.\n", __FUNCTION__)); return; } if (pList->pHead == NULL) { return; } if (pMemberAddr == NULL) { DBGPRINT(RT_DEBUG_ERROR, ("%s: invalid member.\n", __FUNCTION__)); return; } pCurEntry = (PMEMBER_ENTRY)pList->pHead; while (pCurEntry) { PMEMBER_ENTRY pCurEntryNext = pCurEntry->pNext; if(MAC_ADDR_EQUAL(pMemberAddr, pCurEntry->Addr)) { delEntryList(pList, (PLIST_ENTRY)pCurEntry); FreeGrpMemberEntry(pMulticastFilterTable, pCurEntry); break; } pCurEntry = pCurEntryNext; } return; }
VOID MultipathEntryDelete( IN PRTMP_ADAPTER pAd, IN UCHAR LinkIdx, IN PUCHAR pMac) { UINT8 HashId = *(pMac + 5); PMESH_MULTIPATH_ENTRY pEntry; if (!VALID_MESH_LINK_ID(LinkIdx)) return; pEntry = MultipathEntryLookUp(pAd, LinkIdx, pMac); if (pEntry != NULL) { DBGPRINT(RT_DEBUG_TRACE, ("release multipath pkt to link(%d) from SA=%02x:%02x:%02x:%02x:%02x:%02x\n", LinkIdx, pMac[0], pMac[1], pMac[2], pMac[3], pMac[4], pMac[5])); delEntryList(&pAd->MeshTab.MeshLink[LinkIdx].Entry.MultiPathHash[HashId], (PLIST_ENTRY)pEntry); MultipathEntyFree(pAd, pEntry); } }
VOID CliWds_ProxyTabMaintain( IN PRTMP_ADAPTER pAd) { ULONG idx; PCLIWDS_PROXY_ENTRY pCliWdsEntry; ULONG Now; NdisGetSystemUpTime(&Now); for (idx = 0; idx < CLIWDS_HASH_TAB_SIZE; idx++) { pCliWdsEntry = (PCLIWDS_PROXY_ENTRY)(pAd->ApCfg.CliWdsProxyTab[idx].pHead); while(pCliWdsEntry) { PCLIWDS_PROXY_ENTRY pCliWdsEntryNext = pCliWdsEntry->pNext; if (RTMP_TIME_AFTER(Now, pCliWdsEntry->LastRefTime + (CLI_WDS_ENTRY_AGEOUT * OS_HZ / 1000))) { delEntryList(&pAd->ApCfg.CliWdsProxyTab[idx], (PLIST_ENTRY)pCliWdsEntry); CliWdsEntyFree(pAd, pCliWdsEntry); } pCliWdsEntry = pCliWdsEntryNext; } } return; }