--- zzzz-none-000/linux-2.6.39.4/net/ipv4/ipmr.c 2011-08-03 19:43:28.000000000 +0000 +++ puma6-atom-6490-729/linux-2.6.39.4/net/ipv4/ipmr.c 2021-11-10 13:38:18.000000000 +0000 @@ -65,7 +65,7 @@ #include #include #include - +#include #if defined(CONFIG_IP_PIMSM_V1) || defined(CONFIG_IP_PIMSM_V2) #define CONFIG_IP_PIMSM 1 #endif @@ -1045,6 +1045,11 @@ if (c->mfc_origin == mfc->mfcc_origin.s_addr && c->mfc_mcastgrp == mfc->mfcc_mcastgrp.s_addr) { list_del_rcu(&c->list); +#ifdef CONFIG_TI_PACKET_PROCESSOR + /* Generate the HIL Event indicating that the MFC Entry has been deleted. */ + //ti_hil_pp_event (TI_MFC_ENTRY_DELETED, (void *)c); + ti_hil_pp_event (TI_MC_SESSION_DELETED,(void *)c); +#endif// CONFIG_TI_PACKET_PROCESSOR ipmr_cache_free(c); return 0; @@ -1098,7 +1103,15 @@ c->mfc_flags |= MFC_STATIC; list_add_rcu(&c->list, &mrt->mfc_cache_array[line]); - +#ifdef CONFIG_TI_PACKET_PROCESSOR + { + struct pp_mr_param pp_mr; + pp_mr.cache = c; + pp_mr.vif_table = mrt->vif_table; + /* Generate the HIL Event indicating that the MFC Entry has been created. */ +// ti_hil_pp_event (TI_MFC_ENTRY_CREATED, (void *)&pp_mr); + } +#endif// CONFIG_TI_PACKET_PROCESSOR /* * Check to see if we resolved a queued list. If so we * need to send on the frames and tidy up. @@ -1757,16 +1770,26 @@ /* * Forward the frame */ - for (ct = cache->mfc_un.res.maxvif - 1; +#ifdef CONFIG_TI_PACKET_PROCESSOR + if ((cache->mfc_un.res.maxvif - cache->mfc_un.res.minvif) > 1) + { + skb->pp_packet_info.flags |= TI_HIL_PACKET_FLAG_PP_SESSION_BYPASS; + } +#endif + + for (ct = cache->mfc_un.res.maxvif - 1; ct >= cache->mfc_un.res.minvif; ct--) { + if (ip_hdr(skb)->ttl > cache->mfc_un.res.ttls[ct]) { if (psend != -1) { struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC); if (skb2) + { ipmr_queue_xmit(net, mrt, skb2, cache, psend); } + } psend = ct; } }