/* @func int32 | rtl865x_deReferPpp |dereference ppp table entry. @parm uint32 | sessionId | ppp session ID @rvalue SUCCESS | Success. @rvalue FAILED | Failed @comm */ int32 rtl865x_deReferPpp(uint32 sessionId) { int32 retval = FAILED; unsigned long flags; //rtl_down_interruptible(&ppp_sem); local_irq_save(flags); retval = _rtl865x_deReferPpp(sessionId); //rtl_up(&ppp_sem); local_irq_restore(flags); return retval; }
static int32 _rtl865x_delNxtHop(uint32 attr, uint32 entryIdx) { rtl865x_nextHopEntry_t *entry; //int32 retval = 0; if(entryIdx >= NXTHOP_ENTRY_NUM) return RTL_EINVALIDINPUT; entry = &rtl865x_nxtHopTable[entryIdx]; if(entry->valid == 0) return RTL_EENTRYNOTFOUND; if(entry->refCnt > 1) { printk("%s(%d),refcnt(%d)\n",__FUNCTION__,__LINE__,entry->refCnt); return SUCCESS; } /*now delete the entry*/ //if(entry->srcIp_t) //retval = rtl865x_delIp(entry->srcIp_t->extIp); if((entry->nextHopType == IF_PPPOE) || (entry->nextHopType == IF_PPTP) || (entry->nextHopType == IF_L2TP) ) { #if LINUX_VERSION_CODE > KERNEL_VERSION(3,4,0) _rtl865x_deReferPpp(entry->nexthop); #else rtl865x_deReferPpp(entry->nexthop); #endif } rtl865x_deReferNetif(entry->dstNetif->name); memset(entry,0,sizeof(rtl865x_nextHopEntry_t)); /*update asic nextHop table*/ //_rtl865x_arrangeNxtHop(entryIdx,1); return SUCCESS; }