mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	Seemingly unneeded based on new upstream code so manually deleted: layerscape: 820-usb-0007-usb-dwc3-gadget-increase-timeout-value-for-send-ep-c.patch Manually merged: generic-hack: 251-sound_kconfig.patch All other modifications made by update_kernel.sh Build system: x86_64 Build-tested: ipq806x/R7800, ath79/generic, bcm27xx/bcm2711 Run-tested: ipq806x/R7800, lantiq/Easybox 904 xDSL No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> [add lantiq test report, minor commit message clarification] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
		
			
				
	
	
		
			148 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 81efe5fd6fac6db454ccccb1e6c280419d0885c4 Mon Sep 17 00:00:00 2001
 | |
| From: Bogdan Purcareata <bogdan.purcareata@nxp.com>
 | |
| Date: Mon, 13 Nov 2017 17:29:21 +0200
 | |
| Subject: [PATCH] dpaa2-eth: Update dpni_set_tx_shaping cmd to v2
 | |
| 
 | |
| Support dual rate shaping (committed, excess) and the coupled parameter.
 | |
| 
 | |
| Signed-off-by: Bogdan Purcareata <bogdan.purcareata@nxp.com>
 | |
| ---
 | |
|  drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c |  5 +++--
 | |
|  drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h  | 18 ++++++++++++++----
 | |
|  drivers/net/ethernet/freescale/dpaa2/dpni.c      | 23 ++++++++++++++++-------
 | |
|  drivers/net/ethernet/freescale/dpaa2/dpni.h      | 10 ++++++----
 | |
|  4 files changed, 39 insertions(+), 17 deletions(-)
 | |
| 
 | |
| --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
 | |
| +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
 | |
| @@ -3895,7 +3895,7 @@ static ssize_t dpaa2_eth_write_tx_shapin
 | |
|  {
 | |
|  	int err, items;
 | |
|  	struct dpaa2_eth_priv *priv = netdev_priv(to_net_dev(dev));
 | |
| -	struct dpni_tx_shaping_cfg scfg;
 | |
| +	struct dpni_tx_shaping_cfg scfg, ercfg = {0};
 | |
|  
 | |
|  	items = sscanf(buf, "%u %hu", &scfg.rate_limit, &scfg.max_burst_size);
 | |
|  	if (items != 2) {
 | |
| @@ -3909,7 +3909,8 @@ static ssize_t dpaa2_eth_write_tx_shapin
 | |
|  		return -EINVAL;
 | |
|  	}
 | |
|  
 | |
| -	err = dpni_set_tx_shaping(priv->mc_io, 0, priv->mc_token, &scfg);
 | |
| +	err = dpni_set_tx_shaping(priv->mc_io, 0, priv->mc_token, &scfg,
 | |
| +				  &ercfg, 0);
 | |
|  	if (err) {
 | |
|  		dev_err(dev, "dpni_set_tx_shaping() failed\n");
 | |
|  		return -EPERM;
 | |
| --- a/drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h
 | |
| +++ b/drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h
 | |
| @@ -11,9 +11,11 @@
 | |
|  #define DPNI_VER_MAJOR				7
 | |
|  #define DPNI_VER_MINOR				0
 | |
|  #define DPNI_CMD_BASE_VERSION			1
 | |
| +#define DPNI_CMD_2ND_VERSION			2
 | |
|  #define DPNI_CMD_ID_OFFSET			4
 | |
|  
 | |
|  #define DPNI_CMD(id)	(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_BASE_VERSION)
 | |
| +#define DPNI_CMD_V2(id)	(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_2ND_VERSION)
 | |
|  
 | |
|  #define DPNI_CMDID_OPEN					DPNI_CMD(0x801)
 | |
|  #define DPNI_CMDID_CLOSE				DPNI_CMD(0x800)
 | |
| @@ -45,7 +47,7 @@
 | |
|  #define DPNI_CMDID_SET_MAX_FRAME_LENGTH			DPNI_CMD(0x216)
 | |
|  #define DPNI_CMDID_GET_MAX_FRAME_LENGTH			DPNI_CMD(0x217)
 | |
|  #define DPNI_CMDID_SET_LINK_CFG				DPNI_CMD(0x21A)
 | |
| -#define DPNI_CMDID_SET_TX_SHAPING			DPNI_CMD(0x21B)
 | |
| +#define DPNI_CMDID_SET_TX_SHAPING			DPNI_CMD_V2(0x21B)
 | |
|  
 | |
|  #define DPNI_CMDID_SET_MCAST_PROMISC			DPNI_CMD(0x220)
 | |
|  #define DPNI_CMDID_GET_MCAST_PROMISC			DPNI_CMD(0x221)
 | |
| @@ -316,12 +318,20 @@ struct dpni_rsp_get_link_state {
 | |
|  	__le64 options;
 | |
|  };
 | |
|  
 | |
| +#define DPNI_COUPLED_SHIFT	0
 | |
| +#define DPNI_COUPLED_SIZE	1
 | |
| +
 | |
|  struct dpni_cmd_set_tx_shaping {
 | |
|  	/* cmd word 0 */
 | |
| -	__le16 max_burst_size;
 | |
| -	__le16 pad[3];
 | |
| +	__le16 tx_cr_max_burst_size;
 | |
| +	__le16 tx_er_max_burst_size;
 | |
| +	__le32 pad;
 | |
|  	/* cmd word 1 */
 | |
| -	__le32 rate_limit;
 | |
| +	__le32 tx_cr_rate_limit;
 | |
| +	__le32 tx_er_rate_limit;
 | |
| +	/* cmd word 2 */
 | |
| +	/* from LSB: coupled:1 */
 | |
| +	u8 coupled;
 | |
|  };
 | |
|  
 | |
|  struct dpni_cmd_set_max_frame_length {
 | |
| --- a/drivers/net/ethernet/freescale/dpaa2/dpni.c
 | |
| +++ b/drivers/net/ethernet/freescale/dpaa2/dpni.c
 | |
| @@ -927,17 +927,21 @@ int dpni_get_link_state(struct fsl_mc_io
 | |
|  
 | |
|  /**
 | |
|   * dpni_set_tx_shaping() - Set the transmit shaping
 | |
| - * @mc_io:	Pointer to MC portal's I/O object
 | |
| - * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
 | |
| - * @token:	Token of DPNI object
 | |
| - * @tx_shaper:	Tx shaping configuration
 | |
| + * @mc_io:		Pointer to MC portal's I/O object
 | |
| + * @cmd_flags:		Command flags; one or more of 'MC_CMD_FLAG_'
 | |
| + * @token:		Token of DPNI object
 | |
| + * @tx_cr_shaper:	TX committed rate shaping configuration
 | |
| + * @tx_er_shaper:	TX excess rate shaping configuration
 | |
| + * @coupled:		Committed and excess rate shapers are coupled
 | |
|   *
 | |
|   * Return:	'0' on Success; Error code otherwise.
 | |
|   */
 | |
|  int dpni_set_tx_shaping(struct fsl_mc_io *mc_io,
 | |
|  			u32 cmd_flags,
 | |
|  			u16 token,
 | |
| -			const struct dpni_tx_shaping_cfg *tx_shaper)
 | |
| +			const struct dpni_tx_shaping_cfg *tx_cr_shaper,
 | |
| +			const struct dpni_tx_shaping_cfg *tx_er_shaper,
 | |
| +			int coupled)
 | |
|  {
 | |
|  	struct fsl_mc_command cmd = { 0 };
 | |
|  	struct dpni_cmd_set_tx_shaping *cmd_params;
 | |
| @@ -947,8 +951,13 @@ int dpni_set_tx_shaping(struct fsl_mc_io
 | |
|  					  cmd_flags,
 | |
|  					  token);
 | |
|  	cmd_params = (struct dpni_cmd_set_tx_shaping *)cmd.params;
 | |
| -	cmd_params->max_burst_size = cpu_to_le16(tx_shaper->max_burst_size);
 | |
| -	cmd_params->rate_limit = cpu_to_le32(tx_shaper->rate_limit);
 | |
| +	cmd_params->tx_cr_max_burst_size =
 | |
| +				cpu_to_le16(tx_cr_shaper->max_burst_size);
 | |
| +	cmd_params->tx_er_max_burst_size =
 | |
| +				cpu_to_le16(tx_er_shaper->max_burst_size);
 | |
| +	cmd_params->tx_cr_rate_limit = cpu_to_le32(tx_cr_shaper->rate_limit);
 | |
| +	cmd_params->tx_er_rate_limit = cpu_to_le32(tx_er_shaper->rate_limit);
 | |
| +	dpni_set_field(cmd_params->coupled, COUPLED, coupled);
 | |
|  
 | |
|  	/* send command to mc*/
 | |
|  	return mc_send_command(mc_io, &cmd);
 | |
| --- a/drivers/net/ethernet/freescale/dpaa2/dpni.h
 | |
| +++ b/drivers/net/ethernet/freescale/dpaa2/dpni.h
 | |
| @@ -569,10 +569,12 @@ struct dpni_tx_shaping_cfg {
 | |
|  	u16	max_burst_size;
 | |
|  };
 | |
|  
 | |
| -int dpni_set_tx_shaping(struct fsl_mc_io			*mc_io,
 | |
| -			u32					cmd_flags,
 | |
| -			u16					token,
 | |
| -			const struct dpni_tx_shaping_cfg	*tx_shaper);
 | |
| +int dpni_set_tx_shaping(struct fsl_mc_io *mc_io,
 | |
| +			u32 cmd_flags,
 | |
| +			u16 token,
 | |
| +			const struct dpni_tx_shaping_cfg *tx_cr_shaper,
 | |
| +			const struct dpni_tx_shaping_cfg *tx_er_shaper,
 | |
| +			int coupled);
 | |
|  
 | |
|  int dpni_set_max_frame_length(struct fsl_mc_io	*mc_io,
 | |
|  			      u32		cmd_flags,
 |