--- zzzz-none-000/linux-4.4.271/net/atm/common.c 2021-06-03 06:22:09.000000000 +0000 +++ hawkeye-5590-750/linux-4.4.271/net/atm/common.c 2023-04-19 10:22:30.000000000 +0000 @@ -141,6 +141,28 @@ .release_cb = vcc_release_cb, }; +#ifdef CONFIG_LTQ_OAM +int (*push_oam_pfn)(struct atm_vcc *atmvcc, void *cell) = NULL; +EXPORT_SYMBOL(push_oam_pfn); + +int ifx_push_oam(struct atm_vcc *atmvcc, void *cell) +{ + if (push_oam_pfn != NULL) + return push_oam_pfn(atmvcc, cell); + return -1; +} +EXPORT_SYMBOL(ifx_push_oam); +#endif + +#if defined(CONFIG_VRX318_DATAPATH) || defined(CONFIG_VRX318_DATAPATH_MODULE) || \ + defined(CONFIG_VRX518_TC) || defined(CONFIG_VRX518_TC_MODULE) || IS_ENABLED(CONFIG_VRX518) +void (*atm_hook_mpoa_setup)(struct atm_vcc *, int, int, struct net_device *) = NULL; +EXPORT_SYMBOL(atm_hook_mpoa_setup); +#else +void (*ppa_hook_mpoa_setup)(struct atm_vcc *, int, int) = NULL; +EXPORT_SYMBOL(ppa_hook_mpoa_setup); +#endif + int vcc_create(struct net *net, struct socket *sock, int protocol, int family, int kern) { struct sock *sk; @@ -165,8 +187,11 @@ atomic_set(&sk->sk_rmem_alloc, 0); vcc->push = NULL; vcc->pop = NULL; - vcc->owner = NULL; +#ifdef CONFIG_LTQ_OAM + vcc->push_oam = ifx_push_oam; +#else vcc->push_oam = NULL; +#endif vcc->release_cb = NULL; vcc->vpi = vcc->vci = 0; /* no VCI/VPI yet */ vcc->atm_options = vcc->aal_options = 0;