ipq40xx: add Intel/Lantiq ATM hacks
Similar to the lantiq platform, these are required for DSL support. Signed-off-by: Martin Schiller <ms.3headeddevs@gmail.com> [switch to kernel 5.10 and 5.15] Signed-off-by: Jan Hoffmann <jan@3e8.eu> [update patches based on UGW 8.5.2.10, remove 5.10 support] Signed-off-by: Andre Heider <a.heider@gmail.com>
This commit is contained in:
		 Martin Schiller
					Martin Schiller
				
			
				
					committed by
					
						 Daniel Golle
						Daniel Golle
					
				
			
			
				
	
			
			
			 Daniel Golle
						Daniel Golle
					
				
			
						parent
						
							568d17989f
						
					
				
				
					commit
					cfd42a0098
				
			
							
								
								
									
										43
									
								
								target/linux/ipq40xx/patches-5.15/998-lantiq-atm-hacks.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								target/linux/ipq40xx/patches-5.15/998-lantiq-atm-hacks.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| From: John Crispin <blogic@openwrt.org> | ||||
| Date: Fri, 3 Aug 2012 10:27:25 +0200 | ||||
| Subject: [PATCH 04/36] MIPS: lantiq: add atm hack | ||||
|  | ||||
| Signed-off-by: John Crispin <blogic@openwrt.org> | ||||
| --- a/include/uapi/linux/atm.h | ||||
| +++ b/include/uapi/linux/atm.h | ||||
| @@ -131,8 +131,14 @@ | ||||
|  #define ATM_ABR		4 | ||||
|  #define ATM_ANYCLASS	5		/* compatible with everything */ | ||||
|   | ||||
| +#define ATM_VBR_NRT     ATM_VBR | ||||
| +#define ATM_VBR_RT      6 | ||||
| +#define ATM_UBR_PLUS    7 | ||||
| +#define ATM_GFR         8 | ||||
| + | ||||
|  #define ATM_MAX_PCR	-1		/* maximum available PCR */ | ||||
|   | ||||
| + | ||||
|  struct atm_trafprm { | ||||
|  	unsigned char	traffic_class;	/* traffic class (ATM_UBR, ...) */ | ||||
|  	int		max_pcr;	/* maximum PCR in cells per second */ | ||||
| @@ -155,6 +161,9 @@ struct atm_trafprm { | ||||
|  	unsigned int adtf      :10;     /* ACR Decrease Time Factor (10-bit) */ | ||||
|  	unsigned int cdf       :3;      /* Cutoff Decrease Factor (3-bit) */ | ||||
|          unsigned int spare     :9;      /* spare bits */  | ||||
| +	int		scr;		/* sustained rate in cells per second */ | ||||
| +	int		mbs;		/* maximum burst size (MBS) in cells */ | ||||
| +	int		cdv;		/* Cell delay variation */ | ||||
|  }; | ||||
|   | ||||
|  struct atm_qos { | ||||
| --- a/net/atm/proc.c | ||||
| +++ b/net/atm/proc.c | ||||
| @@ -141,7 +141,7 @@ static void *vcc_seq_next(struct seq_fil | ||||
|  static void pvc_info(struct seq_file *seq, struct atm_vcc *vcc) | ||||
|  { | ||||
|  	static const char *const class_name[] = { | ||||
| -		"off", "UBR", "CBR", "VBR", "ABR"}; | ||||
| +		"off","UBR","CBR","NTR-VBR","ABR","ANY","RT-VBR","UBR+","GFR"}; | ||||
|  	static const char *const aal_name[] = { | ||||
|  		"---",	"1",	"2",	"3/4",	/*  0- 3 */ | ||||
|  		"???",	"5",	"???",	"???",	/*  4- 7 */ | ||||
| @@ -0,0 +1,137 @@ | ||||
| From: Subhra Banerjee <subhrax.banerjee@intel.com> | ||||
| Date: Fri, 31 Aug 2018 12:01:19 +0530 | ||||
| Subject: [PATCH] UGW_SW-29163: ATM oam support | ||||
|  | ||||
| --- a/drivers/net/ppp/ppp_generic.c | ||||
| +++ b/drivers/net/ppp/ppp_generic.c | ||||
| @@ -2952,6 +2952,22 @@ char *ppp_dev_name(struct ppp_channel *c | ||||
|  	return name; | ||||
|  } | ||||
|   | ||||
| +/* | ||||
| + * Return the PPP device interface pointer | ||||
| + */ | ||||
| +struct net_device *ppp_device(struct ppp_channel *chan) | ||||
| +{ | ||||
| +	struct channel *pch = chan->ppp; | ||||
| +	struct net_device *dev = NULL; | ||||
| + | ||||
| +	if (pch) { | ||||
| +		read_lock_bh(&pch->upl); | ||||
| +		if (pch->ppp && pch->ppp->dev) | ||||
| +			dev = pch->ppp->dev; | ||||
| +		read_unlock_bh(&pch->upl); | ||||
| +	} | ||||
| +	return dev; | ||||
| +} | ||||
|   | ||||
|  /* | ||||
|   * Disconnect a channel from the generic layer. | ||||
| @@ -3598,6 +3614,7 @@ EXPORT_SYMBOL(ppp_unregister_channel); | ||||
|  EXPORT_SYMBOL(ppp_channel_index); | ||||
|  EXPORT_SYMBOL(ppp_unit_number); | ||||
|  EXPORT_SYMBOL(ppp_dev_name); | ||||
| +EXPORT_SYMBOL(ppp_device); | ||||
|  EXPORT_SYMBOL(ppp_input); | ||||
|  EXPORT_SYMBOL(ppp_input_error); | ||||
|  EXPORT_SYMBOL(ppp_output_wakeup); | ||||
| --- a/include/linux/ppp_channel.h | ||||
| +++ b/include/linux/ppp_channel.h | ||||
| @@ -74,6 +74,9 @@ extern int ppp_unit_number(struct ppp_ch | ||||
|  /* Get the device name associated with a channel, or NULL if none */ | ||||
|  extern char *ppp_dev_name(struct ppp_channel *); | ||||
|   | ||||
| +/* Get the device pointer associated with a channel, or NULL if none */ | ||||
| +extern struct net_device *ppp_device(struct ppp_channel *); | ||||
| + | ||||
|  /* | ||||
|   * SMP locking notes: | ||||
|   * The channel code must ensure that when it calls ppp_unregister_channel, | ||||
| --- a/net/atm/Kconfig | ||||
| +++ b/net/atm/Kconfig | ||||
| @@ -56,6 +56,12 @@ config ATM_MPOA | ||||
|  	  subnetwork boundaries. These shortcut connections bypass routers | ||||
|  	  enhancing overall network performance. | ||||
|   | ||||
| +config ATM_MPOA_INTEL_DSL_PHY_SUPPORT | ||||
| +	bool "Intel DSL Phy MPOA support" | ||||
| +	depends on ATM && INET && ATM_MPOA!=n | ||||
| +	help | ||||
| +	  Add support for Intel DSL Phy ATM MPOA | ||||
| + | ||||
|  config ATM_BR2684 | ||||
|  	tristate "RFC1483/2684 Bridged protocols" | ||||
|  	depends on ATM && INET | ||||
| --- a/net/atm/br2684.c | ||||
| +++ b/net/atm/br2684.c | ||||
| @@ -596,6 +596,11 @@ static int br2684_regvcc(struct atm_vcc | ||||
|  	atmvcc->push = br2684_push; | ||||
|  	atmvcc->pop = br2684_pop; | ||||
|  	atmvcc->release_cb = br2684_release_cb; | ||||
| +#if IS_ENABLED(CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT) | ||||
| +	if (atm_hook_mpoa_setup) /* IPoA or EoA w/o FCS */ | ||||
| +		atm_hook_mpoa_setup(atmvcc, brdev->payload == p_routed ? 3 : 0, | ||||
| +			brvcc->encaps == BR2684_ENCAPS_LLC ? 1 : 0, net_dev); | ||||
| +#endif | ||||
|  	atmvcc->owner = THIS_MODULE; | ||||
|   | ||||
|  	/* initialize netdev carrier state */ | ||||
| --- a/net/atm/common.c | ||||
| +++ b/net/atm/common.c | ||||
| @@ -137,6 +137,11 @@ static struct proto vcc_proto = { | ||||
|  	.release_cb = vcc_release_cb, | ||||
|  }; | ||||
|   | ||||
| +#if IS_ENABLED(CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT) | ||||
| +void (*atm_hook_mpoa_setup)(struct atm_vcc *, int, int, struct net_device *) = NULL; | ||||
| +EXPORT_SYMBOL(atm_hook_mpoa_setup); | ||||
| +#endif | ||||
| + | ||||
|  int vcc_create(struct net *net, struct socket *sock, int protocol, int family, int kern) | ||||
|  { | ||||
|  	struct sock *sk; | ||||
| --- a/net/atm/common.h | ||||
| +++ b/net/atm/common.h | ||||
| @@ -53,4 +53,6 @@ int svc_change_qos(struct atm_vcc *vcc,s | ||||
|   | ||||
|  void atm_dev_release_vccs(struct atm_dev *dev); | ||||
|   | ||||
| +extern void (*atm_hook_mpoa_setup)(struct atm_vcc *, int, int, struct net_device *); | ||||
| + | ||||
|  #endif | ||||
| --- a/net/atm/mpc.c | ||||
| +++ b/net/atm/mpc.c | ||||
| @@ -31,6 +31,7 @@ | ||||
|  /* Modular too */ | ||||
|  #include <linux/module.h> | ||||
|   | ||||
| +#include "common.h" | ||||
|  #include "lec.h" | ||||
|  #include "mpc.h" | ||||
|  #include "resources.h" | ||||
| @@ -645,6 +646,10 @@ static int atm_mpoa_vcc_attach(struct at | ||||
|  	vcc->proto_data = mpc->dev; | ||||
|  	vcc->push = mpc_push; | ||||
|   | ||||
| +#if IS_ENABLED(CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT) | ||||
| +	if (atm_hook_mpoa_setup) /* IPoA, LLC */ | ||||
| +		atm_hook_mpoa_setup(vcc, 3, 1, mpc->dev); | ||||
| +#endif | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
| --- a/net/atm/pppoatm.c | ||||
| +++ b/net/atm/pppoatm.c | ||||
| @@ -422,6 +422,12 @@ static int pppoatm_assign_vcc(struct atm | ||||
|  	atmvcc->user_back = pvcc; | ||||
|  	atmvcc->push = pppoatm_push; | ||||
|  	atmvcc->pop = pppoatm_pop; | ||||
| +#if IS_ENABLED(CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT) | ||||
| +	if (atm_hook_mpoa_setup) /* PPPoA */ | ||||
| +		atm_hook_mpoa_setup(atmvcc, 2, | ||||
| +			pvcc->encaps == e_llc ? 1 : 0, | ||||
| +			ppp_device(&pvcc->chan)); | ||||
| +#endif | ||||
|  	atmvcc->release_cb = pppoatm_release_cb; | ||||
|  	__module_get(THIS_MODULE); | ||||
|  	atmvcc->owner = THIS_MODULE; | ||||
		Reference in New Issue
	
	Block a user