kernel: bump 5.4 to 5.4.165
All patches automatically rebased.
Build system: x86_64
Build-tested: ramips/mt7621*
*FS#4149 affects me so I had to revert 7f1edbd412
in order to downgrade to 2.35.1
Signed-off-by: John Audia <graysky@archlinux.us>
			
			
This commit is contained in:
		 John Audia
					John Audia
				
			
				
					committed by
					
						 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
			
				
	
			
			
			 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
						parent
						
							87def9efd8
						
					
				
				
					commit
					a696e325f7
				
			| @@ -6,10 +6,10 @@ ifdef CONFIG_TESTING_KERNEL | |||||||
|   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) |   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) | ||||||
| endif | endif | ||||||
|  |  | ||||||
| LINUX_VERSION-5.4 = .162 | LINUX_VERSION-5.4 = .165 | ||||||
| LINUX_VERSION-5.10 = .83 | LINUX_VERSION-5.10 = .83 | ||||||
|  |  | ||||||
| LINUX_KERNEL_HASH-5.4.162 = c12d72ddaac78189305a5e98825295ecb02282970033b052276035e83189e25b | LINUX_KERNEL_HASH-5.4.165 = ba13da6d18476269ce2a608cc1a4d69d61cca79585c07675495e3fbc8f9d2acc | ||||||
| LINUX_KERNEL_HASH-5.10.83 = ef259a43f33ddb56001283f4f4e50af29b8a48fa066aed7371a90ebf38c29b70 | LINUX_KERNEL_HASH-5.10.83 = ef259a43f33ddb56001283f4f4e50af29b8a48fa066aed7371a90ebf38c29b70 | ||||||
|  |  | ||||||
| remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -350,6 +350,14 @@ | @@ -352,6 +352,14 @@ | ||||||
|  		}; |  		}; | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
| @@ -31,7 +31,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  	mdio: mdio@18003000 { |  	mdio: mdio@18003000 { | ||||||
|  		compatible = "brcm,iproc-mdio"; |  		compatible = "brcm,iproc-mdio"; | ||||||
|  		reg = <0x18003000 0x8>; |  		reg = <0x18003000 0x8>; | ||||||
| @@ -417,12 +425,12 @@ | @@ -419,12 +427,12 @@ | ||||||
|  					function = "spi"; |  					function = "spi"; | ||||||
|  				}; |  				}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -392,6 +392,15 @@ | @@ -394,6 +394,15 @@ | ||||||
|  		reg = <0x18105000 0x1000>; |  		reg = <0x18105000 0x1000>; | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -252,6 +252,10 @@ | @@ -254,6 +254,10 @@ | ||||||
|  			reg = <0x00013000 0x1000>; |  			reg = <0x00013000 0x1000>; | ||||||
|  		}; |  		}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -265,7 +265,7 @@ | @@ -267,7 +267,7 @@ | ||||||
|   |   | ||||||
|  			interrupt-parent = <&gic>; |  			interrupt-parent = <&gic>; | ||||||
|   |   | ||||||
| @@ -29,7 +29,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  				#usb-cells = <0>; |  				#usb-cells = <0>; | ||||||
|   |   | ||||||
|  				compatible = "generic-ehci"; |  				compatible = "generic-ehci"; | ||||||
| @@ -287,7 +287,7 @@ | @@ -289,7 +289,7 @@ | ||||||
|  				}; |  				}; | ||||||
|  			}; |  			}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -318,7 +318,7 @@ | @@ -320,7 +320,7 @@ | ||||||
|   |   | ||||||
|  			interrupt-parent = <&gic>; |  			interrupt-parent = <&gic>; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  }; |  }; | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -428,7 +428,7 @@ | @@ -430,7 +430,7 @@ | ||||||
|  			#address-cells = <1>; |  			#address-cells = <1>; | ||||||
|  			#size-cells = <1>; |  			#size-cells = <1>; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -428,6 +428,26 @@ | @@ -430,6 +430,26 @@ | ||||||
|  			#address-cells = <1>; |  			#address-cells = <1>; | ||||||
|  			#size-cells = <1>; |  			#size-cells = <1>; | ||||||
|   |   | ||||||
| @@ -44,7 +44,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  			pinctrl: pin-controller@1c0 { |  			pinctrl: pin-controller@1c0 { | ||||||
|  				compatible = "brcm,bcm4708-pinmux"; |  				compatible = "brcm,bcm4708-pinmux"; | ||||||
|  				reg = <0x1c0 0x24>; |  				reg = <0x1c0 0x24>; | ||||||
| @@ -454,32 +474,13 @@ | @@ -456,32 +476,13 @@ | ||||||
|  					function = "uart1"; |  					function = "uart1"; | ||||||
|  				}; |  				}; | ||||||
|  			}; |  			}; | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -483,7 +483,7 @@ | @@ -485,7 +485,7 @@ | ||||||
|  		}; |  		}; | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -71,7 +71,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
| +}; | +}; | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -484,7 +484,7 @@ | @@ -486,7 +486,7 @@ | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
|  	srab: ethernet-switch@18007000 { |  	srab: ethernet-switch@18007000 { | ||||||
|   | |||||||
| @@ -155,7 +155,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  			label = "lan4"; |  			label = "lan4"; | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -490,6 +490,10 @@ | @@ -492,6 +492,10 @@ | ||||||
|  		status = "disabled"; |  		status = "disabled"; | ||||||
|   |   | ||||||
|  		/* ports are defined in board DTS */ |  		/* ports are defined in board DTS */ | ||||||
|   | |||||||
| @@ -53,7 +53,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  			#address-cells = <1>; |  			#address-cells = <1>; | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -501,7 +501,7 @@ | @@ -503,7 +503,7 @@ | ||||||
|  		reg = <0x18004000 0x14>; |  		reg = <0x18004000 0x14>; | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  	}; |  	}; | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -458,18 +458,18 @@ | @@ -460,18 +460,18 @@ | ||||||
|  					function = "spi"; |  					function = "spi"; | ||||||
|  				}; |  				}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  		compatible = "simple-bus"; |  		compatible = "simple-bus"; | ||||||
|  		ranges = <0x00000000 0x19000000 0x00023000>; |  		ranges = <0x00000000 0x19000000 0x00023000>; | ||||||
|  		#address-cells = <1>; |  		#address-cells = <1>; | ||||||
| @@ -369,7 +369,7 @@ | @@ -371,7 +371,7 @@ | ||||||
|  		#address-cells = <1>; |  		#address-cells = <1>; | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
| @@ -59,7 +59,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  		compatible = "mdio-mux-mmioreg"; |  		compatible = "mdio-mux-mmioreg"; | ||||||
|  		mdio-parent-bus = <&mdio>; |  		mdio-parent-bus = <&mdio>; | ||||||
|  		#address-cells = <1>; |  		#address-cells = <1>; | ||||||
| @@ -415,7 +415,7 @@ | @@ -417,7 +417,7 @@ | ||||||
|  		status = "disabled"; |  		status = "disabled"; | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -370,7 +370,7 @@ | @@ -372,7 +372,7 @@ | ||||||
|  	}; |  	}; | ||||||
|   |   | ||||||
|  	mdio-mux@18003000 { |  	mdio-mux@18003000 { | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/bcm5301x.dtsi | --- a/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm5301x.dtsi | +++ b/arch/arm/boot/dts/bcm5301x.dtsi | ||||||
| @@ -422,7 +422,7 @@ | @@ -424,7 +424,7 @@ | ||||||
|  		#size-cells = <1>; |  		#size-cells = <1>; | ||||||
|   |   | ||||||
|  		cru@100 { |  		cru@100 { | ||||||
| @@ -18,7 +18,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl> | |||||||
|  			reg = <0x100 0x1a4>; |  			reg = <0x100 0x1a4>; | ||||||
|  			ranges; |  			ranges; | ||||||
|  			#address-cells = <1>; |  			#address-cells = <1>; | ||||||
| @@ -448,10 +448,9 @@ | @@ -450,10 +450,9 @@ | ||||||
|  						     "sata1", "sata2"; |  						     "sata1", "sata2"; | ||||||
|  			}; |  			}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -5472,8 +5472,7 @@ static inline void skb_gro_reset_offset( | @@ -5435,8 +5435,7 @@ static inline void skb_gro_reset_offset( | ||||||
|  	NAPI_GRO_CB(skb)->frag0 = NULL; |  	NAPI_GRO_CB(skb)->frag0 = NULL; | ||||||
|  	NAPI_GRO_CB(skb)->frag0_len = 0; |  	NAPI_GRO_CB(skb)->frag0_len = 0; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -272,7 +272,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	void __iomem *descmap; |  	void __iomem *descmap; | ||||||
|  	const struct of_device_id *of_id = NULL; |  	const struct of_device_id *of_id = NULL; | ||||||
|   |   | ||||||
| @@ -1525,10 +1524,8 @@ static int altera_tse_probe(struct platf | @@ -1528,10 +1527,8 @@ static int altera_tse_probe(struct platf | ||||||
|  	priv->rx_dma_buf_sz = ALTERA_RXDMABUFFER_SIZE; |  	priv->rx_dma_buf_sz = ALTERA_RXDMABUFFER_SIZE; | ||||||
|   |   | ||||||
|  	/* get default MAC address from device tree */ |  	/* get default MAC address from device tree */ | ||||||
|   | |||||||
| @@ -158,7 +158,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  				IPC_SEM_IDS, sysvipc_sem_proc_show); |  				IPC_SEM_IDS, sysvipc_sem_proc_show); | ||||||
| --- a/ipc/shm.c | --- a/ipc/shm.c | ||||||
| +++ b/ipc/shm.c | +++ b/ipc/shm.c | ||||||
| @@ -144,6 +144,8 @@ pure_initcall(ipc_ns_init); | @@ -154,6 +154,8 @@ pure_initcall(ipc_ns_init); | ||||||
|   |   | ||||||
|  void __init shm_init(void) |  void __init shm_init(void) | ||||||
|  { |  { | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  #include "vlan.h" |  #include "vlan.h" | ||||||
|  #include "vlanproc.h" |  #include "vlanproc.h" | ||||||
|  #include <linux/if_vlan.h> |  #include <linux/if_vlan.h> | ||||||
| @@ -744,6 +749,27 @@ static int vlan_dev_get_iflink(const str | @@ -747,6 +752,27 @@ static int vlan_dev_get_iflink(const str | ||||||
|  	return real_dev->ifindex; |  	return real_dev->ifindex; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  static const struct ethtool_ops vlan_ethtool_ops = { |  static const struct ethtool_ops vlan_ethtool_ops = { | ||||||
|  	.get_link_ksettings	= vlan_ethtool_get_link_ksettings, |  	.get_link_ksettings	= vlan_ethtool_get_link_ksettings, | ||||||
|  	.get_drvinfo	        = vlan_ethtool_get_drvinfo, |  	.get_drvinfo	        = vlan_ethtool_get_drvinfo, | ||||||
| @@ -782,6 +808,9 @@ static const struct net_device_ops vlan_ | @@ -785,6 +811,9 @@ static const struct net_device_ops vlan_ | ||||||
|  #endif |  #endif | ||||||
|  	.ndo_fix_features	= vlan_dev_fix_features, |  	.ndo_fix_features	= vlan_dev_fix_features, | ||||||
|  	.ndo_get_iflink		= vlan_dev_get_iflink, |  	.ndo_get_iflink		= vlan_dev_get_iflink, | ||||||
|   | |||||||
| @@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  	case RTN_THROW: |  	case RTN_THROW: | ||||||
|  	case RTN_UNREACHABLE: |  	case RTN_UNREACHABLE: | ||||||
|  	default: |  	default: | ||||||
| @@ -4434,6 +4453,17 @@ static int ip6_pkt_prohibit_out(struct n | @@ -4453,6 +4472,17 @@ static int ip6_pkt_prohibit_out(struct n | ||||||
|  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); |  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  /* |  /* | ||||||
|   *	Allocate a dst for local (unicast / anycast) address. |   *	Allocate a dst for local (unicast / anycast) address. | ||||||
|   */ |   */ | ||||||
| @@ -4914,7 +4944,8 @@ static int rtm_to_fib6_config(struct sk_ | @@ -4933,7 +4963,8 @@ static int rtm_to_fib6_config(struct sk_ | ||||||
|  	if (rtm->rtm_type == RTN_UNREACHABLE || |  	if (rtm->rtm_type == RTN_UNREACHABLE || | ||||||
|  	    rtm->rtm_type == RTN_BLACKHOLE || |  	    rtm->rtm_type == RTN_BLACKHOLE || | ||||||
|  	    rtm->rtm_type == RTN_PROHIBIT || |  	    rtm->rtm_type == RTN_PROHIBIT || | ||||||
| @@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  		cfg->fc_flags |= RTF_REJECT; |  		cfg->fc_flags |= RTF_REJECT; | ||||||
|   |   | ||||||
|  	if (rtm->rtm_type == RTN_LOCAL) |  	if (rtm->rtm_type == RTN_LOCAL) | ||||||
| @@ -6037,6 +6068,8 @@ static int ip6_route_dev_notify(struct n | @@ -6056,6 +6087,8 @@ static int ip6_route_dev_notify(struct n | ||||||
|  #ifdef CONFIG_IPV6_MULTIPLE_TABLES |  #ifdef CONFIG_IPV6_MULTIPLE_TABLES | ||||||
|  		net->ipv6.ip6_prohibit_entry->dst.dev = dev; |  		net->ipv6.ip6_prohibit_entry->dst.dev = dev; | ||||||
|  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); |  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); | ||||||
| @@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev; |  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev; | ||||||
|  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); |  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); | ||||||
|  #endif |  #endif | ||||||
| @@ -6048,6 +6081,7 @@ static int ip6_route_dev_notify(struct n | @@ -6067,6 +6100,7 @@ static int ip6_route_dev_notify(struct n | ||||||
|  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); |  		in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); | ||||||
|  #ifdef CONFIG_IPV6_MULTIPLE_TABLES |  #ifdef CONFIG_IPV6_MULTIPLE_TABLES | ||||||
|  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); |  		in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); | ||||||
| @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); |  		in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); | ||||||
|  #endif |  #endif | ||||||
|  	} |  	} | ||||||
| @@ -6240,6 +6274,8 @@ static int __net_init ip6_route_net_init | @@ -6259,6 +6293,8 @@ static int __net_init ip6_route_net_init | ||||||
|   |   | ||||||
|  #ifdef CONFIG_IPV6_MULTIPLE_TABLES |  #ifdef CONFIG_IPV6_MULTIPLE_TABLES | ||||||
|  	net->ipv6.fib6_has_custom_rules = false; |  	net->ipv6.fib6_has_custom_rules = false; | ||||||
| @@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, |  	net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, | ||||||
|  					       sizeof(*net->ipv6.ip6_prohibit_entry), |  					       sizeof(*net->ipv6.ip6_prohibit_entry), | ||||||
|  					       GFP_KERNEL); |  					       GFP_KERNEL); | ||||||
| @@ -6250,11 +6286,21 @@ static int __net_init ip6_route_net_init | @@ -6269,11 +6305,21 @@ static int __net_init ip6_route_net_init | ||||||
|  			 ip6_template_metrics, true); |  			 ip6_template_metrics, true); | ||||||
|  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached); |  	INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached); | ||||||
|   |   | ||||||
| @@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; |  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; | ||||||
|  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, |  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, | ||||||
|  			 ip6_template_metrics, true); |  			 ip6_template_metrics, true); | ||||||
| @@ -6278,6 +6324,8 @@ out: | @@ -6297,6 +6343,8 @@ out: | ||||||
|  	return ret; |  	return ret; | ||||||
|   |   | ||||||
|  #ifdef CONFIG_IPV6_MULTIPLE_TABLES |  #ifdef CONFIG_IPV6_MULTIPLE_TABLES | ||||||
| @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  out_ip6_prohibit_entry: |  out_ip6_prohibit_entry: | ||||||
|  	kfree(net->ipv6.ip6_prohibit_entry); |  	kfree(net->ipv6.ip6_prohibit_entry); | ||||||
|  out_ip6_null_entry: |  out_ip6_null_entry: | ||||||
| @@ -6297,6 +6345,7 @@ static void __net_exit ip6_route_net_exi | @@ -6316,6 +6364,7 @@ static void __net_exit ip6_route_net_exi | ||||||
|  	kfree(net->ipv6.ip6_null_entry); |  	kfree(net->ipv6.ip6_null_entry); | ||||||
|  #ifdef CONFIG_IPV6_MULTIPLE_TABLES |  #ifdef CONFIG_IPV6_MULTIPLE_TABLES | ||||||
|  	kfree(net->ipv6.ip6_prohibit_entry); |  	kfree(net->ipv6.ip6_prohibit_entry); | ||||||
| @@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> | |||||||
|  	kfree(net->ipv6.ip6_blk_hole_entry); |  	kfree(net->ipv6.ip6_blk_hole_entry); | ||||||
|  #endif |  #endif | ||||||
|  	dst_entries_destroy(&net->ipv6.ip6_dst_ops); |  	dst_entries_destroy(&net->ipv6.ip6_dst_ops); | ||||||
| @@ -6374,6 +6423,9 @@ void __init ip6_route_init_special_entri | @@ -6393,6 +6442,9 @@ void __init ip6_route_init_special_entri | ||||||
|  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); |  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); | ||||||
|  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; |  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; | ||||||
|  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); |  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	__u16			tc_index;	/* traffic control index */ |  	__u16			tc_index;	/* traffic control index */ | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -5538,6 +5538,9 @@ static enum gro_result dev_gro_receive(s | @@ -5501,6 +5501,9 @@ static enum gro_result dev_gro_receive(s | ||||||
|  	int same_flow; |  	int same_flow; | ||||||
|  	int grow; |  	int grow; | ||||||
|   |   | ||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	if (netif_elide_gro(skb->dev)) |  	if (netif_elide_gro(skb->dev)) | ||||||
|  		goto normal; |  		goto normal; | ||||||
|   |   | ||||||
| @@ -7481,6 +7484,48 @@ static void __netdev_adjacent_dev_unlink | @@ -7303,6 +7306,48 @@ static void __netdev_adjacent_dev_unlink | ||||||
|  					   &upper_dev->adj_list.lower); |  					   &upper_dev->adj_list.lower); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  static int __netdev_upper_dev_link(struct net_device *dev, |  static int __netdev_upper_dev_link(struct net_device *dev, | ||||||
|  				   struct net_device *upper_dev, bool master, |  				   struct net_device *upper_dev, bool master, | ||||||
|  				   void *upper_priv, void *upper_info, |  				   void *upper_priv, void *upper_info, | ||||||
| @@ -7531,6 +7576,7 @@ static int __netdev_upper_dev_link(struc | @@ -7353,6 +7398,7 @@ static int __netdev_upper_dev_link(struc | ||||||
|  	if (ret) |  	if (ret) | ||||||
|  		return ret; |  		return ret; | ||||||
|   |   | ||||||
| @@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, |  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, | ||||||
|  					    &changeupper_info.info); |  					    &changeupper_info.info); | ||||||
|  	ret = notifier_to_errno(ret); |  	ret = notifier_to_errno(ret); | ||||||
| @@ -7624,6 +7670,7 @@ void netdev_upper_dev_unlink(struct net_ | @@ -7446,6 +7492,7 @@ void netdev_upper_dev_unlink(struct net_ | ||||||
|   |   | ||||||
|  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); |  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); | ||||||
|   |   | ||||||
| @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, |  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, | ||||||
|  				      &changeupper_info.info); |  				      &changeupper_info.info); | ||||||
|   |   | ||||||
| @@ -8354,6 +8401,7 @@ int dev_set_mac_address(struct net_devic | @@ -8176,6 +8223,7 @@ int dev_set_mac_address(struct net_devic | ||||||
|  	if (err) |  	if (err) | ||||||
|  		return err; |  		return err; | ||||||
|  	dev->addr_assign_type = NET_ADDR_SET; |  	dev->addr_assign_type = NET_ADDR_SET; | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> | |||||||
|  /** |  /** | ||||||
|   *	ata_build_rw_tf - Build ATA taskfile for given read/write request |   *	ata_build_rw_tf - Build ATA taskfile for given read/write request | ||||||
|   *	@tf: Target ATA taskfile |   *	@tf: Target ATA taskfile | ||||||
| @@ -5149,6 +5162,9 @@ struct ata_queued_cmd *ata_qc_new_init(s | @@ -5151,6 +5164,9 @@ struct ata_queued_cmd *ata_qc_new_init(s | ||||||
|  		if (tag < 0) |  		if (tag < 0) | ||||||
|  			return NULL; |  			return NULL; | ||||||
|  	} |  	} | ||||||
| @@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> | |||||||
|   |   | ||||||
|  	qc = __ata_qc_from_tag(ap, tag); |  	qc = __ata_qc_from_tag(ap, tag); | ||||||
|  	qc->tag = qc->hw_tag = tag; |  	qc->tag = qc->hw_tag = tag; | ||||||
| @@ -6085,6 +6101,9 @@ struct ata_port *ata_port_alloc(struct a | @@ -6087,6 +6103,9 @@ struct ata_port *ata_port_alloc(struct a | ||||||
|  	ap->stats.unhandled_irq = 1; |  	ap->stats.unhandled_irq = 1; | ||||||
|  	ap->stats.idle_irq = 1; |  	ap->stats.idle_irq = 1; | ||||||
|  #endif |  #endif | ||||||
| @@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> | |||||||
|  	ata_sff_port_init(ap); |  	ata_sff_port_init(ap); | ||||||
|   |   | ||||||
|  	return ap; |  	return ap; | ||||||
| @@ -6120,6 +6139,12 @@ static void ata_host_release(struct kref | @@ -6122,6 +6141,12 @@ static void ata_host_release(struct kref | ||||||
|   |   | ||||||
|  		kfree(ap->pmp_link); |  		kfree(ap->pmp_link); | ||||||
|  		kfree(ap->slave_link); |  		kfree(ap->slave_link); | ||||||
| @@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> | |||||||
|  		kfree(ap); |  		kfree(ap); | ||||||
|  		host->ports[i] = NULL; |  		host->ports[i] = NULL; | ||||||
|  	} |  	} | ||||||
| @@ -6583,7 +6608,23 @@ int ata_host_register(struct ata_host *h | @@ -6585,7 +6610,23 @@ int ata_host_register(struct ata_host *h | ||||||
|  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id); |  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id); | ||||||
|  		host->ports[i]->local_port_no = i + 1; |  		host->ports[i]->local_port_no = i + 1; | ||||||
|  	} |  	} | ||||||
|   | |||||||
| @@ -226,7 +226,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
| @@ -1306,6 +1331,7 @@ static int ocelot_port_attr_set(struct n | @@ -1303,6 +1328,7 @@ static int ocelot_port_attr_set(struct n | ||||||
|  				struct switchdev_trans *trans) |  				struct switchdev_trans *trans) | ||||||
|  { |  { | ||||||
|  	struct ocelot_port *ocelot_port = netdev_priv(dev); |  	struct ocelot_port *ocelot_port = netdev_priv(dev); | ||||||
| @@ -234,7 +234,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int err = 0; |  	int err = 0; | ||||||
|   |   | ||||||
|  	switch (attr->id) { |  	switch (attr->id) { | ||||||
| @@ -1317,8 +1343,8 @@ static int ocelot_port_attr_set(struct n | @@ -1314,8 +1340,8 @@ static int ocelot_port_attr_set(struct n | ||||||
|  		ocelot_port_attr_ageing_set(ocelot_port, attr->u.ageing_time); |  		ocelot_port_attr_ageing_set(ocelot_port, attr->u.ageing_time); | ||||||
|  		break; |  		break; | ||||||
|  	case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING: |  	case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING: | ||||||
| @@ -245,7 +245,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  		break; |  		break; | ||||||
|  	case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED: |  	case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED: | ||||||
|  		ocelot_port_attr_mc_set(ocelot_port, !attr->u.mc_disabled); |  		ocelot_port_attr_mc_set(ocelot_port, !attr->u.mc_disabled); | ||||||
| @@ -1520,20 +1546,20 @@ static int ocelot_port_bridge_join(struc | @@ -1517,20 +1543,20 @@ static int ocelot_port_bridge_join(struc | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -273,7 +273,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static void ocelot_set_aggr_pgids(struct ocelot *ocelot) |  static void ocelot_set_aggr_pgids(struct ocelot *ocelot) | ||||||
| @@ -1687,11 +1713,8 @@ static int ocelot_netdevice_port_event(s | @@ -1684,11 +1710,8 @@ static int ocelot_netdevice_port_event(s | ||||||
|  				err = ocelot_port_bridge_join(ocelot_port, |  				err = ocelot_port_bridge_join(ocelot_port, | ||||||
|  							      info->upper_dev); |  							      info->upper_dev); | ||||||
|  			else |  			else | ||||||
| @@ -287,7 +287,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  		} |  		} | ||||||
|  		if (netif_is_lag_master(info->upper_dev)) { |  		if (netif_is_lag_master(info->upper_dev)) { | ||||||
|  			if (info->linking) |  			if (info->linking) | ||||||
| @@ -2009,6 +2032,7 @@ int ocelot_probe_port(struct ocelot *oce | @@ -2006,6 +2029,7 @@ int ocelot_probe_port(struct ocelot *oce | ||||||
|  { |  { | ||||||
|  	struct ocelot_port *ocelot_port; |  	struct ocelot_port *ocelot_port; | ||||||
|  	struct net_device *dev; |  	struct net_device *dev; | ||||||
| @@ -295,7 +295,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int err; |  	int err; | ||||||
|   |   | ||||||
|  	dev = alloc_etherdev(sizeof(struct ocelot_port)); |  	dev = alloc_etherdev(sizeof(struct ocelot_port)); | ||||||
| @@ -2044,7 +2068,15 @@ int ocelot_probe_port(struct ocelot *oce | @@ -2041,7 +2065,15 @@ int ocelot_probe_port(struct ocelot *oce | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	/* Basic L2 initialization */ |  	/* Basic L2 initialization */ | ||||||
|   | |||||||
| @@ -236,7 +236,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	return ret; |  	return ret; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1129,9 +1161,9 @@ static const struct net_device_ops ocelo | @@ -1123,9 +1155,9 @@ static const struct net_device_ops ocelo | ||||||
|  	.ndo_get_phys_port_name		= ocelot_port_get_phys_port_name, |  	.ndo_get_phys_port_name		= ocelot_port_get_phys_port_name, | ||||||
|  	.ndo_set_mac_address		= ocelot_port_set_mac_address, |  	.ndo_set_mac_address		= ocelot_port_set_mac_address, | ||||||
|  	.ndo_get_stats64		= ocelot_get_stats64, |  	.ndo_get_stats64		= ocelot_get_stats64, | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  		break; |  		break; | ||||||
|  	default: |  	default: | ||||||
|  		return -ERANGE; |  		return -ERANGE; | ||||||
| @@ -1136,8 +1136,9 @@ static int ocelot_hwstamp_set(struct oce | @@ -1130,8 +1130,9 @@ static int ocelot_hwstamp_set(struct oce | ||||||
|   |   | ||||||
|  static int ocelot_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) |  static int ocelot_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | ||||||
|  { |  { | ||||||
| @@ -69,7 +69,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	/* The function is only used for PTP operations for now */ |  	/* The function is only used for PTP operations for now */ | ||||||
|  	if (!ocelot->ptp) |  	if (!ocelot->ptp) | ||||||
| @@ -1145,9 +1146,9 @@ static int ocelot_ioctl(struct net_devic | @@ -1139,9 +1140,9 @@ static int ocelot_ioctl(struct net_devic | ||||||
|   |   | ||||||
|  	switch (cmd) { |  	switch (cmd) { | ||||||
|  	case SIOCSHWTSTAMP: |  	case SIOCSHWTSTAMP: | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -1285,26 +1285,20 @@ static const struct ethtool_ops ocelot_e | @@ -1282,26 +1282,20 @@ static const struct ethtool_ops ocelot_e | ||||||
|  	.get_ts_info		= ocelot_get_ts_info, |  	.get_ts_info		= ocelot_get_ts_info, | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  		/* Fallthrough */ |  		/* Fallthrough */ | ||||||
|  	case BR_STATE_LEARNING: |  	case BR_STATE_LEARNING: | ||||||
|  		port_cfg |= ANA_PORT_PORT_CFG_LEARN_ENA; |  		port_cfg |= ANA_PORT_PORT_CFG_LEARN_ENA; | ||||||
| @@ -1312,19 +1306,18 @@ static int ocelot_port_attr_stp_state_se | @@ -1309,19 +1303,18 @@ static int ocelot_port_attr_stp_state_se | ||||||
|   |   | ||||||
|  	default: |  	default: | ||||||
|  		port_cfg &= ~ANA_PORT_PORT_CFG_LEARN_ENA; |  		port_cfg &= ~ANA_PORT_PORT_CFG_LEARN_ENA; | ||||||
| @@ -78,7 +78,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  			for (i = 0; i < ocelot->num_phys_ports; i++) { |  			for (i = 0; i < ocelot->num_phys_ports; i++) { | ||||||
|  				unsigned long bond_mask = ocelot->lags[i]; |  				unsigned long bond_mask = ocelot->lags[i]; | ||||||
| @@ -1332,7 +1325,7 @@ static int ocelot_port_attr_stp_state_se | @@ -1329,7 +1322,7 @@ static int ocelot_port_attr_stp_state_se | ||||||
|  				if (!bond_mask) |  				if (!bond_mask) | ||||||
|  					continue; |  					continue; | ||||||
|   |   | ||||||
| @@ -87,7 +87,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  					mask &= ~bond_mask; |  					mask &= ~bond_mask; | ||||||
|  					break; |  					break; | ||||||
|  				} |  				} | ||||||
| @@ -1340,47 +1333,55 @@ static int ocelot_port_attr_stp_state_se | @@ -1337,47 +1330,55 @@ static int ocelot_port_attr_stp_state_se | ||||||
|   |   | ||||||
|  			ocelot_write_rix(ocelot, |  			ocelot_write_rix(ocelot, | ||||||
|  					 BIT(ocelot->num_phys_ports) | mask, |  					 BIT(ocelot->num_phys_ports) | mask, | ||||||
| @@ -162,7 +162,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static int ocelot_port_attr_set(struct net_device *dev, |  static int ocelot_port_attr_set(struct net_device *dev, | ||||||
| @@ -1389,22 +1390,23 @@ static int ocelot_port_attr_set(struct n | @@ -1386,22 +1387,23 @@ static int ocelot_port_attr_set(struct n | ||||||
|  { |  { | ||||||
|  	struct ocelot_port *ocelot_port = netdev_priv(dev); |  	struct ocelot_port *ocelot_port = netdev_priv(dev); | ||||||
|  	struct ocelot *ocelot = ocelot_port->ocelot; |  	struct ocelot *ocelot = ocelot_port->ocelot; | ||||||
|   | |||||||
| @@ -83,7 +83,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
| @@ -1586,11 +1586,9 @@ static int ocelot_port_obj_del(struct ne | @@ -1583,11 +1583,9 @@ static int ocelot_port_obj_del(struct ne | ||||||
|  	return ret; |  	return ret; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -96,7 +96,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	if (!ocelot->bridge_mask) { |  	if (!ocelot->bridge_mask) { | ||||||
|  		ocelot->hw_bridge_dev = bridge; |  		ocelot->hw_bridge_dev = bridge; | ||||||
|  	} else { |  	} else { | ||||||
| @@ -1600,17 +1598,14 @@ static int ocelot_port_bridge_join(struc | @@ -1597,17 +1595,14 @@ static int ocelot_port_bridge_join(struc | ||||||
|  			return -ENODEV; |  			return -ENODEV; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -116,7 +116,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	ocelot->bridge_mask &= ~BIT(port); |  	ocelot->bridge_mask &= ~BIT(port); | ||||||
|   |   | ||||||
|  	if (!ocelot->bridge_mask) |  	if (!ocelot->bridge_mask) | ||||||
| @@ -1679,14 +1674,12 @@ static void ocelot_setup_lag(struct ocel | @@ -1676,14 +1671,12 @@ static void ocelot_setup_lag(struct ocel | ||||||
|  	} |  	} | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -133,7 +133,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	rcu_read_lock(); |  	rcu_read_lock(); | ||||||
|  	for_each_netdev_in_bond_rcu(bond, ndev) { |  	for_each_netdev_in_bond_rcu(bond, ndev) { | ||||||
| @@ -1701,17 +1694,17 @@ static int ocelot_port_lag_join(struct o | @@ -1698,17 +1691,17 @@ static int ocelot_port_lag_join(struct o | ||||||
|  	/* If the new port is the lowest one, use it as the logical port from |  	/* If the new port is the lowest one, use it as the logical port from | ||||||
|  	 * now on |  	 * now on | ||||||
|  	 */ |  	 */ | ||||||
| @@ -156,7 +156,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	ocelot_setup_lag(ocelot, lag); |  	ocelot_setup_lag(ocelot, lag); | ||||||
| @@ -1720,34 +1713,32 @@ static int ocelot_port_lag_join(struct o | @@ -1717,34 +1710,32 @@ static int ocelot_port_lag_join(struct o | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -200,7 +200,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	ocelot_set_aggr_pgids(ocelot); |  	ocelot_set_aggr_pgids(ocelot); | ||||||
|  } |  } | ||||||
| @@ -1763,24 +1754,26 @@ static int ocelot_netdevice_port_event(s | @@ -1760,24 +1751,26 @@ static int ocelot_netdevice_port_event(s | ||||||
|  				       struct netdev_notifier_changeupper_info *info) |  				       struct netdev_notifier_changeupper_info *info) | ||||||
|  { |  { | ||||||
|  	struct ocelot_port *ocelot_port = netdev_priv(dev); |  	struct ocelot_port *ocelot_port = netdev_priv(dev); | ||||||
| @@ -231,7 +231,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  						      info->upper_dev); |  						      info->upper_dev); | ||||||
|  		} |  		} | ||||||
|  		break; |  		break; | ||||||
| @@ -2138,7 +2131,7 @@ int ocelot_probe_port(struct ocelot *oce | @@ -2135,7 +2128,7 @@ int ocelot_probe_port(struct ocelot *oce | ||||||
|  		       REW_PORT_VLAN_CFG, port); |  		       REW_PORT_VLAN_CFG, port); | ||||||
|   |   | ||||||
|  	/* Enable vcap lookups */ |  	/* Enable vcap lookups */ | ||||||
|   | |||||||
| @@ -518,7 +518,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	ppid->id_len = sizeof(ocelot->base_mac); |  	ppid->id_len = sizeof(ocelot->base_mac); | ||||||
|  	memcpy(&ppid->id, &ocelot->base_mac, ppid->id_len); |  	memcpy(&ppid->id, &ocelot->base_mac, ppid->id_len); | ||||||
| @@ -1136,9 +1154,9 @@ static int ocelot_hwstamp_set(struct oce | @@ -1130,9 +1148,9 @@ static int ocelot_hwstamp_set(struct oce | ||||||
|   |   | ||||||
|  static int ocelot_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) |  static int ocelot_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | ||||||
|  { |  { | ||||||
| @@ -531,7 +531,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	/* The function is only used for PTP operations for now */ |  	/* The function is only used for PTP operations for now */ | ||||||
|  	if (!ocelot->ptp) |  	if (!ocelot->ptp) | ||||||
| @@ -1175,8 +1193,8 @@ static const struct net_device_ops ocelo | @@ -1169,8 +1187,8 @@ static const struct net_device_ops ocelo | ||||||
|   |   | ||||||
|  static void ocelot_get_strings(struct net_device *netdev, u32 sset, u8 *data) |  static void ocelot_get_strings(struct net_device *netdev, u32 sset, u8 *data) | ||||||
|  { |  { | ||||||
| @@ -542,7 +542,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
|  	if (sset != ETH_SS_STATS) |  	if (sset != ETH_SS_STATS) | ||||||
| @@ -1230,8 +1248,9 @@ static void ocelot_check_stats_work(stru | @@ -1224,8 +1242,9 @@ static void ocelot_check_stats_work(stru | ||||||
|  static void ocelot_get_ethtool_stats(struct net_device *dev, |  static void ocelot_get_ethtool_stats(struct net_device *dev, | ||||||
|  				     struct ethtool_stats *stats, u64 *data) |  				     struct ethtool_stats *stats, u64 *data) | ||||||
|  { |  { | ||||||
| @@ -554,7 +554,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
|  	/* check and update now */ |  	/* check and update now */ | ||||||
| @@ -1239,13 +1258,13 @@ static void ocelot_get_ethtool_stats(str | @@ -1233,13 +1252,13 @@ static void ocelot_get_ethtool_stats(str | ||||||
|   |   | ||||||
|  	/* Copy all counters */ |  	/* Copy all counters */ | ||||||
|  	for (i = 0; i < ocelot->num_stats; i++) |  	for (i = 0; i < ocelot->num_stats; i++) | ||||||
| @@ -571,7 +571,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	if (sset != ETH_SS_STATS) |  	if (sset != ETH_SS_STATS) | ||||||
|  		return -EOPNOTSUPP; |  		return -EOPNOTSUPP; | ||||||
| @@ -1255,8 +1274,8 @@ static int ocelot_get_sset_count(struct | @@ -1249,8 +1268,8 @@ static int ocelot_get_sset_count(struct | ||||||
|  static int ocelot_get_ts_info(struct net_device *dev, |  static int ocelot_get_ts_info(struct net_device *dev, | ||||||
|  			      struct ethtool_ts_info *info) |  			      struct ethtool_ts_info *info) | ||||||
|  { |  { | ||||||
| @@ -582,7 +582,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	if (!ocelot->ptp) |  	if (!ocelot->ptp) | ||||||
|  		return ethtool_op_get_ts_info(dev, info); |  		return ethtool_op_get_ts_info(dev, info); | ||||||
| @@ -1388,9 +1407,9 @@ static int ocelot_port_attr_set(struct n | @@ -1385,9 +1404,9 @@ static int ocelot_port_attr_set(struct n | ||||||
|  				const struct switchdev_attr *attr, |  				const struct switchdev_attr *attr, | ||||||
|  				struct switchdev_trans *trans) |  				struct switchdev_trans *trans) | ||||||
|  { |  { | ||||||
| @@ -595,7 +595,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int err = 0; |  	int err = 0; | ||||||
|   |   | ||||||
|  	switch (attr->id) { |  	switch (attr->id) { | ||||||
| @@ -1402,8 +1421,8 @@ static int ocelot_port_attr_set(struct n | @@ -1399,8 +1418,8 @@ static int ocelot_port_attr_set(struct n | ||||||
|  		ocelot_port_attr_ageing_set(ocelot, port, attr->u.ageing_time); |  		ocelot_port_attr_ageing_set(ocelot, port, attr->u.ageing_time); | ||||||
|  		break; |  		break; | ||||||
|  	case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING: |  	case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING: | ||||||
| @@ -606,7 +606,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  		break; |  		break; | ||||||
|  	case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED: |  	case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED: | ||||||
|  		ocelot_port_attr_mc_set(ocelot, port, !attr->u.mc_disabled); |  		ocelot_port_attr_mc_set(ocelot, port, !attr->u.mc_disabled); | ||||||
| @@ -1468,15 +1487,17 @@ static int ocelot_port_obj_add_mdb(struc | @@ -1465,15 +1484,17 @@ static int ocelot_port_obj_add_mdb(struc | ||||||
|  				   const struct switchdev_obj_port_mdb *mdb, |  				   const struct switchdev_obj_port_mdb *mdb, | ||||||
|  				   struct switchdev_trans *trans) |  				   struct switchdev_trans *trans) | ||||||
|  { |  { | ||||||
| @@ -628,7 +628,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	mc = ocelot_multicast_get(ocelot, mdb->addr, vid); |  	mc = ocelot_multicast_get(ocelot, mdb->addr, vid); | ||||||
|  	if (!mc) { |  	if (!mc) { | ||||||
| @@ -1500,7 +1521,7 @@ static int ocelot_port_obj_add_mdb(struc | @@ -1497,7 +1518,7 @@ static int ocelot_port_obj_add_mdb(struc | ||||||
|  		ocelot_mact_forget(ocelot, addr, vid); |  		ocelot_mact_forget(ocelot, addr, vid); | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -637,7 +637,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	addr[2] = mc->ports << 0; |  	addr[2] = mc->ports << 0; | ||||||
|  	addr[1] = mc->ports << 8; |  	addr[1] = mc->ports << 8; | ||||||
|   |   | ||||||
| @@ -1510,14 +1531,16 @@ static int ocelot_port_obj_add_mdb(struc | @@ -1507,14 +1528,16 @@ static int ocelot_port_obj_add_mdb(struc | ||||||
|  static int ocelot_port_obj_del_mdb(struct net_device *dev, |  static int ocelot_port_obj_del_mdb(struct net_device *dev, | ||||||
|  				   const struct switchdev_obj_port_mdb *mdb) |  				   const struct switchdev_obj_port_mdb *mdb) | ||||||
|  { |  { | ||||||
| @@ -658,7 +658,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	mc = ocelot_multicast_get(ocelot, mdb->addr, vid); |  	mc = ocelot_multicast_get(ocelot, mdb->addr, vid); | ||||||
|  	if (!mc) |  	if (!mc) | ||||||
| @@ -1529,7 +1552,7 @@ static int ocelot_port_obj_del_mdb(struc | @@ -1526,7 +1549,7 @@ static int ocelot_port_obj_del_mdb(struc | ||||||
|  	addr[0] = 0; |  	addr[0] = 0; | ||||||
|  	ocelot_mact_forget(ocelot, addr, vid); |  	ocelot_mact_forget(ocelot, addr, vid); | ||||||
|   |   | ||||||
| @@ -667,7 +667,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	if (!mc->ports) { |  	if (!mc->ports) { | ||||||
|  		list_del(&mc->list); |  		list_del(&mc->list); | ||||||
|  		devm_kfree(ocelot->dev, mc); |  		devm_kfree(ocelot->dev, mc); | ||||||
| @@ -1683,9 +1706,9 @@ static int ocelot_port_lag_join(struct o | @@ -1680,9 +1703,9 @@ static int ocelot_port_lag_join(struct o | ||||||
|   |   | ||||||
|  	rcu_read_lock(); |  	rcu_read_lock(); | ||||||
|  	for_each_netdev_in_bond_rcu(bond, ndev) { |  	for_each_netdev_in_bond_rcu(bond, ndev) { | ||||||
| @@ -679,7 +679,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	} |  	} | ||||||
|  	rcu_read_unlock(); |  	rcu_read_unlock(); | ||||||
|   |   | ||||||
| @@ -1753,20 +1776,23 @@ static int ocelot_netdevice_port_event(s | @@ -1750,20 +1773,23 @@ static int ocelot_netdevice_port_event(s | ||||||
|  				       unsigned long event, |  				       unsigned long event, | ||||||
|  				       struct netdev_notifier_changeupper_info *info) |  				       struct netdev_notifier_changeupper_info *info) | ||||||
|  { |  { | ||||||
| @@ -707,7 +707,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  		} |  		} | ||||||
|  		if (netif_is_lag_master(info->upper_dev)) { |  		if (netif_is_lag_master(info->upper_dev)) { | ||||||
|  			if (info->linking) |  			if (info->linking) | ||||||
| @@ -2082,21 +2108,23 @@ int ocelot_probe_port(struct ocelot *oce | @@ -2079,21 +2105,23 @@ int ocelot_probe_port(struct ocelot *oce | ||||||
|  		      void __iomem *regs, |  		      void __iomem *regs, | ||||||
|  		      struct phy_device *phy) |  		      struct phy_device *phy) | ||||||
|  { |  { | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -1191,10 +1191,9 @@ static const struct net_device_ops ocelo | @@ -1185,10 +1185,9 @@ static const struct net_device_ops ocelo | ||||||
|  	.ndo_do_ioctl			= ocelot_ioctl, |  	.ndo_do_ioctl			= ocelot_ioctl, | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
|  	if (sset != ETH_SS_STATS) |  	if (sset != ETH_SS_STATS) | ||||||
| @@ -1205,6 +1204,16 @@ static void ocelot_get_strings(struct ne | @@ -1199,6 +1198,16 @@ static void ocelot_get_strings(struct ne | ||||||
|  		       ETH_GSTRING_LEN); |  		       ETH_GSTRING_LEN); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  static void ocelot_update_stats(struct ocelot *ocelot) |  static void ocelot_update_stats(struct ocelot *ocelot) | ||||||
|  { |  { | ||||||
|  	int i, j; |  	int i, j; | ||||||
| @@ -1245,12 +1254,8 @@ static void ocelot_check_stats_work(stru | @@ -1239,12 +1248,8 @@ static void ocelot_check_stats_work(stru | ||||||
|  			   OCELOT_STATS_CHECK_DELAY); |  			   OCELOT_STATS_CHECK_DELAY); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
|  	/* check and update now */ |  	/* check and update now */ | ||||||
| @@ -1261,25 +1266,37 @@ static void ocelot_get_ethtool_stats(str | @@ -1255,25 +1260,37 @@ static void ocelot_get_ethtool_stats(str | ||||||
|  		*data++ = ocelot->stats[port * ocelot->num_stats + i]; |  		*data++ = ocelot->stats[port * ocelot->num_stats + i]; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -100,7 +100,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	info->phc_index = ocelot->ptp_clock ? |  	info->phc_index = ocelot->ptp_clock ? | ||||||
|  			  ptp_clock_index(ocelot->ptp_clock) : -1; |  			  ptp_clock_index(ocelot->ptp_clock) : -1; | ||||||
|  	info->so_timestamping |= SOF_TIMESTAMPING_TX_SOFTWARE | |  	info->so_timestamping |= SOF_TIMESTAMPING_TX_SOFTWARE | | ||||||
| @@ -1295,13 +1312,26 @@ static int ocelot_get_ts_info(struct net | @@ -1292,13 +1309,26 @@ static int ocelot_get_ts_info(struct net | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -2135,6 +2135,28 @@ static int ocelot_init_timestamp(struct | @@ -2132,6 +2132,28 @@ static int ocelot_init_timestamp(struct | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  int ocelot_probe_port(struct ocelot *ocelot, u8 port, |  int ocelot_probe_port(struct ocelot *ocelot, u8 port, | ||||||
|  		      void __iomem *regs, |  		      void __iomem *regs, | ||||||
|  		      struct phy_device *phy) |  		      struct phy_device *phy) | ||||||
| @@ -2142,7 +2164,6 @@ int ocelot_probe_port(struct ocelot *oce | @@ -2139,7 +2161,6 @@ int ocelot_probe_port(struct ocelot *oce | ||||||
|  	struct ocelot_port_private *priv; |  	struct ocelot_port_private *priv; | ||||||
|  	struct ocelot_port *ocelot_port; |  	struct ocelot_port *ocelot_port; | ||||||
|  	struct net_device *dev; |  	struct net_device *dev; | ||||||
| @@ -52,7 +52,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int err; |  	int err; | ||||||
|   |   | ||||||
|  	dev = alloc_etherdev(sizeof(struct ocelot_port_private)); |  	dev = alloc_etherdev(sizeof(struct ocelot_port_private)); | ||||||
| @@ -2170,32 +2191,14 @@ int ocelot_probe_port(struct ocelot *oce | @@ -2167,32 +2188,14 @@ int ocelot_probe_port(struct ocelot *oce | ||||||
|  	ocelot_mact_learn(ocelot, PGID_CPU, dev->dev_addr, ocelot_port->pvid, |  	ocelot_mact_learn(ocelot, PGID_CPU, dev->dev_addr, ocelot_port->pvid, | ||||||
|  			  ENTRYTYPE_LOCKED); |  			  ENTRYTYPE_LOCKED); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -2245,6 +2245,7 @@ int ocelot_init(struct ocelot *ocelot) | @@ -2242,6 +2242,7 @@ int ocelot_init(struct ocelot *ocelot) | ||||||
|  	if (!ocelot->stats_queue) |  	if (!ocelot->stats_queue) | ||||||
|  		return -ENOMEM; |  		return -ENOMEM; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	/* Set vlan ingress filter mask to all ports but the CPU port by |  	/* Set vlan ingress filter mask to all ports but the CPU port by | ||||||
|  	 * default. |  	 * default. | ||||||
|  	 */ |  	 */ | ||||||
| @@ -2226,11 +2220,52 @@ int ocelot_probe_port(struct ocelot *oce | @@ -2223,11 +2217,52 @@ int ocelot_probe_port(struct ocelot *oce | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(ocelot_probe_port); |  EXPORT_SYMBOL(ocelot_probe_port); | ||||||
|   |   | ||||||
| @@ -87,7 +87,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	ocelot->lags = devm_kcalloc(ocelot->dev, ocelot->num_phys_ports, |  	ocelot->lags = devm_kcalloc(ocelot->dev, ocelot->num_phys_ports, | ||||||
|  				    sizeof(u32), GFP_KERNEL); |  				    sizeof(u32), GFP_KERNEL); | ||||||
| @@ -2310,13 +2345,6 @@ int ocelot_init(struct ocelot *ocelot) | @@ -2307,13 +2342,6 @@ int ocelot_init(struct ocelot *ocelot) | ||||||
|  		ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_SRC + port); |  		ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_SRC + port); | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -101,7 +101,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	/* Allow broadcast MAC frames. */ |  	/* Allow broadcast MAC frames. */ | ||||||
|  	for (i = ocelot->num_phys_ports + 1; i < PGID_CPU; i++) { |  	for (i = ocelot->num_phys_ports + 1; i < PGID_CPU; i++) { | ||||||
|  		u32 val = ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports - 1, 0)); |  		u32 val = ANA_PGID_PGID_PGID(GENMASK(ocelot->num_phys_ports - 1, 0)); | ||||||
| @@ -2329,13 +2357,6 @@ int ocelot_init(struct ocelot *ocelot) | @@ -2326,13 +2354,6 @@ int ocelot_init(struct ocelot *ocelot) | ||||||
|  	ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV4); |  	ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV4); | ||||||
|  	ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV6); |  	ocelot_write_rix(ocelot, 0, ANA_PGID_PGID, PGID_MCIPV6); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -1383,7 +1383,7 @@ static void ocelot_bridge_stp_state_set( | @@ -1380,7 +1380,7 @@ static void ocelot_bridge_stp_state_set( | ||||||
|  	 * a source for the other ports. |  	 * a source for the other ports. | ||||||
|  	 */ |  	 */ | ||||||
|  	for (p = 0; p < ocelot->num_phys_ports; p++) { |  	for (p = 0; p < ocelot->num_phys_ports; p++) { | ||||||
| @@ -39,7 +39,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  			unsigned long mask = ocelot->bridge_fwd_mask & ~BIT(p); |  			unsigned long mask = ocelot->bridge_fwd_mask & ~BIT(p); | ||||||
|   |   | ||||||
|  			for (i = 0; i < ocelot->num_phys_ports; i++) { |  			for (i = 0; i < ocelot->num_phys_ports; i++) { | ||||||
| @@ -1398,15 +1398,18 @@ static void ocelot_bridge_stp_state_set( | @@ -1395,15 +1395,18 @@ static void ocelot_bridge_stp_state_set( | ||||||
|  				} |  				} | ||||||
|  			} |  			} | ||||||
|   |   | ||||||
|   | |||||||
| @@ -98,7 +98,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static void ocelot_port_adjust_link(struct net_device *dev) |  static void ocelot_port_adjust_link(struct net_device *dev) | ||||||
| @@ -2143,11 +2102,53 @@ static int ocelot_init_timestamp(struct | @@ -2140,11 +2099,53 @@ static int ocelot_init_timestamp(struct | ||||||
|  static void ocelot_init_port(struct ocelot *ocelot, int port) |  static void ocelot_init_port(struct ocelot *ocelot, int port) | ||||||
|  { |  { | ||||||
|  	struct ocelot_port *ocelot_port = ocelot->ports[port]; |  	struct ocelot_port *ocelot_port = ocelot->ports[port]; | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -2099,11 +2099,32 @@ static int ocelot_init_timestamp(struct | @@ -2096,11 +2096,32 @@ static int ocelot_init_timestamp(struct | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -54,7 +54,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	INIT_LIST_HEAD(&ocelot_port->skbs); |  	INIT_LIST_HEAD(&ocelot_port->skbs); | ||||||
|   |   | ||||||
|  	/* Basic L2 initialization */ |  	/* Basic L2 initialization */ | ||||||
| @@ -2124,8 +2145,7 @@ static void ocelot_init_port(struct ocel | @@ -2121,8 +2142,7 @@ static void ocelot_init_port(struct ocel | ||||||
|  			   DEV_MAC_HDX_CFG); |  			   DEV_MAC_HDX_CFG); | ||||||
|   |   | ||||||
|  	/* Set Max Length and maximum tags allowed */ |  	/* Set Max Length and maximum tags allowed */ | ||||||
| @@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	ocelot_port_writel(ocelot_port, DEV_MAC_TAGS_CFG_TAG_ID(ETH_P_8021AD) | |  	ocelot_port_writel(ocelot_port, DEV_MAC_TAGS_CFG_TAG_ID(ETH_P_8021AD) | | ||||||
|  			   DEV_MAC_TAGS_CFG_VLAN_AWR_ENA | |  			   DEV_MAC_TAGS_CFG_VLAN_AWR_ENA | | ||||||
|  			   DEV_MAC_TAGS_CFG_VLAN_LEN_AWR_ENA, |  			   DEV_MAC_TAGS_CFG_VLAN_LEN_AWR_ENA, | ||||||
| @@ -2135,20 +2155,6 @@ static void ocelot_init_port(struct ocel | @@ -2132,20 +2152,6 @@ static void ocelot_init_port(struct ocel | ||||||
|  	ocelot_port_writel(ocelot_port, 0, DEV_MAC_FC_MAC_HIGH_CFG); |  	ocelot_port_writel(ocelot_port, 0, DEV_MAC_FC_MAC_HIGH_CFG); | ||||||
|  	ocelot_port_writel(ocelot_port, 0, DEV_MAC_FC_MAC_LOW_CFG); |  	ocelot_port_writel(ocelot_port, 0, DEV_MAC_FC_MAC_LOW_CFG); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -2232,9 +2232,18 @@ void ocelot_set_cpu_port(struct ocelot * | @@ -2229,9 +2229,18 @@ void ocelot_set_cpu_port(struct ocelot * | ||||||
|  	 * Only one port can be an NPI at the same time. |  	 * Only one port can be an NPI at the same time. | ||||||
|  	 */ |  	 */ | ||||||
|  	if (cpu < ocelot->num_phys_ports) { |  	if (cpu < ocelot->num_phys_ports) { | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -2271,6 +2271,14 @@ int ocelot_init(struct ocelot *ocelot) | @@ -2268,6 +2268,14 @@ int ocelot_init(struct ocelot *ocelot) | ||||||
|  	int i, ret; |  	int i, ret; | ||||||
|  	u32 port; |  	u32 port; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -195,7 +195,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  static int ocelot_port_fdb_dump(struct sk_buff *skb, |  static int ocelot_port_fdb_dump(struct sk_buff *skb, | ||||||
|  				struct netlink_callback *cb, |  				struct netlink_callback *cb, | ||||||
| @@ -1153,8 +1160,7 @@ static const struct net_device_ops ocelo | @@ -1147,8 +1154,7 @@ static const struct net_device_ops ocelo | ||||||
|  	.ndo_do_ioctl			= ocelot_ioctl, |  	.ndo_do_ioctl			= ocelot_ioctl, | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -205,7 +205,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
| @@ -1165,6 +1171,7 @@ static void ocelot_get_strings(struct oc | @@ -1159,6 +1165,7 @@ static void ocelot_get_strings(struct oc | ||||||
|  		memcpy(data + i * ETH_GSTRING_LEN, ocelot->stats_layout[i].name, |  		memcpy(data + i * ETH_GSTRING_LEN, ocelot->stats_layout[i].name, | ||||||
|  		       ETH_GSTRING_LEN); |  		       ETH_GSTRING_LEN); | ||||||
|  } |  } | ||||||
| @@ -213,7 +213,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  static void ocelot_port_get_strings(struct net_device *netdev, u32 sset, |  static void ocelot_port_get_strings(struct net_device *netdev, u32 sset, | ||||||
|  				    u8 *data) |  				    u8 *data) | ||||||
| @@ -1216,7 +1223,7 @@ static void ocelot_check_stats_work(stru | @@ -1210,7 +1217,7 @@ static void ocelot_check_stats_work(stru | ||||||
|  			   OCELOT_STATS_CHECK_DELAY); |  			   OCELOT_STATS_CHECK_DELAY); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -222,7 +222,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
| @@ -1227,6 +1234,7 @@ static void ocelot_get_ethtool_stats(str | @@ -1221,6 +1228,7 @@ static void ocelot_get_ethtool_stats(str | ||||||
|  	for (i = 0; i < ocelot->num_stats; i++) |  	for (i = 0; i < ocelot->num_stats; i++) | ||||||
|  		*data++ = ocelot->stats[port * ocelot->num_stats + i]; |  		*data++ = ocelot->stats[port * ocelot->num_stats + i]; | ||||||
|  } |  } | ||||||
| @@ -230,7 +230,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  static void ocelot_port_get_ethtool_stats(struct net_device *dev, |  static void ocelot_port_get_ethtool_stats(struct net_device *dev, | ||||||
|  					  struct ethtool_stats *stats, |  					  struct ethtool_stats *stats, | ||||||
| @@ -1239,13 +1247,14 @@ static void ocelot_port_get_ethtool_stat | @@ -1233,13 +1241,14 @@ static void ocelot_port_get_ethtool_stat | ||||||
|  	ocelot_get_ethtool_stats(ocelot, port, data); |  	ocelot_get_ethtool_stats(ocelot, port, data); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -246,7 +246,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  static int ocelot_port_get_sset_count(struct net_device *dev, int sset) |  static int ocelot_port_get_sset_count(struct net_device *dev, int sset) | ||||||
|  { |  { | ||||||
| @@ -1256,8 +1265,8 @@ static int ocelot_port_get_sset_count(st | @@ -1250,8 +1259,8 @@ static int ocelot_port_get_sset_count(st | ||||||
|  	return ocelot_get_sset_count(ocelot, port, sset); |  	return ocelot_get_sset_count(ocelot, port, sset); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -257,7 +257,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	info->phc_index = ocelot->ptp_clock ? |  	info->phc_index = ocelot->ptp_clock ? | ||||||
|  			  ptp_clock_index(ocelot->ptp_clock) : -1; |  			  ptp_clock_index(ocelot->ptp_clock) : -1; | ||||||
| @@ -1273,6 +1282,7 @@ static int ocelot_get_ts_info(struct oce | @@ -1270,6 +1279,7 @@ static int ocelot_get_ts_info(struct oce | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
| @@ -265,7 +265,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  static int ocelot_port_get_ts_info(struct net_device *dev, |  static int ocelot_port_get_ts_info(struct net_device *dev, | ||||||
|  				   struct ethtool_ts_info *info) |  				   struct ethtool_ts_info *info) | ||||||
| @@ -1296,8 +1306,7 @@ static const struct ethtool_ops ocelot_e | @@ -1293,8 +1303,7 @@ static const struct ethtool_ops ocelot_e | ||||||
|  	.get_ts_info		= ocelot_port_get_ts_info, |  	.get_ts_info		= ocelot_port_get_ts_info, | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -275,7 +275,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	u32 port_cfg; |  	u32 port_cfg; | ||||||
|  	int p, i; |  	int p, i; | ||||||
| @@ -1358,6 +1367,7 @@ static void ocelot_bridge_stp_state_set( | @@ -1355,6 +1364,7 @@ static void ocelot_bridge_stp_state_set( | ||||||
|  		} |  		} | ||||||
|  	} |  	} | ||||||
|  } |  } | ||||||
| @@ -283,7 +283,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  static void ocelot_port_attr_stp_state_set(struct ocelot *ocelot, int port, |  static void ocelot_port_attr_stp_state_set(struct ocelot *ocelot, int port, | ||||||
|  					   struct switchdev_trans *trans, |  					   struct switchdev_trans *trans, | ||||||
| @@ -1369,11 +1379,12 @@ static void ocelot_port_attr_stp_state_s | @@ -1366,11 +1376,12 @@ static void ocelot_port_attr_stp_state_s | ||||||
|  	ocelot_bridge_stp_state_set(ocelot, port, state); |  	ocelot_bridge_stp_state_set(ocelot, port, state); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -297,7 +297,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  static void ocelot_port_attr_ageing_set(struct ocelot *ocelot, int port, |  static void ocelot_port_attr_ageing_set(struct ocelot *ocelot, int port, | ||||||
|  					unsigned long ageing_clock_t) |  					unsigned long ageing_clock_t) | ||||||
| @@ -1604,8 +1615,8 @@ static int ocelot_port_obj_del(struct ne | @@ -1601,8 +1612,8 @@ static int ocelot_port_obj_del(struct ne | ||||||
|  	return ret; |  	return ret; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -308,7 +308,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	if (!ocelot->bridge_mask) { |  	if (!ocelot->bridge_mask) { | ||||||
|  		ocelot->hw_bridge_dev = bridge; |  		ocelot->hw_bridge_dev = bridge; | ||||||
| @@ -1620,9 +1631,10 @@ static int ocelot_port_bridge_join(struc | @@ -1617,9 +1628,10 @@ static int ocelot_port_bridge_join(struc | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
| @@ -321,7 +321,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	ocelot->bridge_mask &= ~BIT(port); |  	ocelot->bridge_mask &= ~BIT(port); | ||||||
|   |   | ||||||
| @@ -1633,6 +1645,7 @@ static int ocelot_port_bridge_leave(stru | @@ -1630,6 +1642,7 @@ static int ocelot_port_bridge_leave(stru | ||||||
|  	ocelot_port_set_pvid(ocelot, port, 0); |  	ocelot_port_set_pvid(ocelot, port, 0); | ||||||
|  	return ocelot_port_set_native_vlan(ocelot, port, 0); |  	return ocelot_port_set_native_vlan(ocelot, port, 0); | ||||||
|  } |  } | ||||||
| @@ -329,7 +329,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  static void ocelot_set_aggr_pgids(struct ocelot *ocelot) |  static void ocelot_set_aggr_pgids(struct ocelot *ocelot) | ||||||
|  { |  { | ||||||
| @@ -2121,7 +2134,7 @@ static void ocelot_port_set_mtu(struct o | @@ -2118,7 +2131,7 @@ static void ocelot_port_set_mtu(struct o | ||||||
|  	ocelot_write(ocelot, ocelot_wm_enc(atop_wm), SYS_ATOP_TOT_CFG); |  	ocelot_write(ocelot, ocelot_wm_enc(atop_wm), SYS_ATOP_TOT_CFG); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -338,7 +338,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	struct ocelot_port *ocelot_port = ocelot->ports[port]; |  	struct ocelot_port *ocelot_port = ocelot->ports[port]; | ||||||
|   |   | ||||||
| @@ -2168,6 +2181,7 @@ static void ocelot_init_port(struct ocel | @@ -2165,6 +2178,7 @@ static void ocelot_init_port(struct ocel | ||||||
|  	/* Enable vcap lookups */ |  	/* Enable vcap lookups */ | ||||||
|  	ocelot_vcap_enable(ocelot, port); |  	ocelot_vcap_enable(ocelot, port); | ||||||
|  } |  } | ||||||
|   | |||||||
| @@ -36,7 +36,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  { |  { | ||||||
|  	struct ocelot_port *ocelot_port = ocelot->ports[port]; |  	struct ocelot_port *ocelot_port = ocelot->ports[port]; | ||||||
|  	struct hwtstamp_config cfg; |  	struct hwtstamp_config cfg; | ||||||
| @@ -1120,6 +1119,7 @@ static int ocelot_hwstamp_set(struct oce | @@ -1114,6 +1113,7 @@ static int ocelot_hwstamp_set(struct oce | ||||||
|   |   | ||||||
|  	return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0; |  	return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0; | ||||||
|  } |  } | ||||||
|   | |||||||
| @@ -96,7 +96,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	} |  	} | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(ocelot_get_txtstamp); |  EXPORT_SYMBOL(ocelot_get_txtstamp); | ||||||
| @@ -2208,7 +2199,7 @@ void ocelot_init_port(struct ocelot *oce | @@ -2205,7 +2196,7 @@ void ocelot_init_port(struct ocelot *oce | ||||||
|  { |  { | ||||||
|  	struct ocelot_port *ocelot_port = ocelot->ports[port]; |  	struct ocelot_port *ocelot_port = ocelot->ports[port]; | ||||||
|   |   | ||||||
| @@ -105,7 +105,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	/* Basic L2 initialization */ |  	/* Basic L2 initialization */ | ||||||
|   |   | ||||||
| @@ -2493,9 +2484,7 @@ EXPORT_SYMBOL(ocelot_init); | @@ -2490,9 +2481,7 @@ EXPORT_SYMBOL(ocelot_init); | ||||||
|   |   | ||||||
|  void ocelot_deinit(struct ocelot *ocelot) |  void ocelot_deinit(struct ocelot *ocelot) | ||||||
|  { |  { | ||||||
| @@ -115,7 +115,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	int i; |  	int i; | ||||||
|   |   | ||||||
|  	cancel_delayed_work(&ocelot->stats_work); |  	cancel_delayed_work(&ocelot->stats_work); | ||||||
| @@ -2507,14 +2496,7 @@ void ocelot_deinit(struct ocelot *ocelot | @@ -2504,14 +2493,7 @@ void ocelot_deinit(struct ocelot *ocelot | ||||||
|   |   | ||||||
|  	for (i = 0; i < ocelot->num_phys_ports; i++) { |  	for (i = 0; i < ocelot->num_phys_ports; i++) { | ||||||
|  		port = ocelot->ports[i]; |  		port = ocelot->ports[i]; | ||||||
|   | |||||||
| @@ -41,7 +41,7 @@ Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com> | |||||||
|  		ocelot_write_rix(ocelot, val, ANA_PGID_PGID, i); |  		ocelot_write_rix(ocelot, val, ANA_PGID_PGID, i); | ||||||
|   |   | ||||||
|  	__dev_mc_sync(dev, ocelot_mc_sync, ocelot_mc_unsync); |  	__dev_mc_sync(dev, ocelot_mc_sync, ocelot_mc_unsync); | ||||||
| @@ -2410,10 +2410,11 @@ int ocelot_init(struct ocelot *ocelot) | @@ -2407,10 +2407,11 @@ int ocelot_init(struct ocelot *ocelot) | ||||||
|  		     SYS_FRM_AGING_MAX_AGE(307692), SYS_FRM_AGING); |  		     SYS_FRM_AGING_MAX_AGE(307692), SYS_FRM_AGING); | ||||||
|   |   | ||||||
|  	/* Setup flooding PGIDs */ |  	/* Setup flooding PGIDs */ | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -2340,6 +2340,20 @@ void ocelot_set_cpu_port(struct ocelot * | @@ -2337,6 +2337,20 @@ void ocelot_set_cpu_port(struct ocelot * | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(ocelot_set_cpu_port); |  EXPORT_SYMBOL(ocelot_set_cpu_port); | ||||||
|   |   | ||||||
| @@ -35,7 +35,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  int ocelot_init(struct ocelot *ocelot) |  int ocelot_init(struct ocelot *ocelot) | ||||||
|  { |  { | ||||||
|  	char queue_name[32]; |  	char queue_name[32]; | ||||||
| @@ -2477,6 +2491,13 @@ int ocelot_init(struct ocelot *ocelot) | @@ -2474,6 +2488,13 @@ int ocelot_init(struct ocelot *ocelot) | ||||||
|  				"Timestamp initialization failed\n"); |  				"Timestamp initialization failed\n"); | ||||||
|  			return ret; |  			return ret; | ||||||
|  		} |  		} | ||||||
| @@ -49,7 +49,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
| @@ -2491,6 +2512,8 @@ void ocelot_deinit(struct ocelot *ocelot | @@ -2488,6 +2509,8 @@ void ocelot_deinit(struct ocelot *ocelot | ||||||
|  	cancel_delayed_work(&ocelot->stats_work); |  	cancel_delayed_work(&ocelot->stats_work); | ||||||
|  	destroy_workqueue(ocelot->stats_queue); |  	destroy_workqueue(ocelot->stats_queue); | ||||||
|  	mutex_destroy(&ocelot->stats_lock); |  	mutex_destroy(&ocelot->stats_lock); | ||||||
|   | |||||||
| @@ -128,7 +128,7 @@ Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -2294,6 +2294,18 @@ void ocelot_set_cpu_port(struct ocelot * | @@ -2291,6 +2291,18 @@ void ocelot_set_cpu_port(struct ocelot * | ||||||
|  			 enum ocelot_tag_prefix injection, |  			 enum ocelot_tag_prefix injection, | ||||||
|  			 enum ocelot_tag_prefix extraction) |  			 enum ocelot_tag_prefix extraction) | ||||||
|  { |  { | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/mscc/ocelot.c | --- a/drivers/net/ethernet/mscc/ocelot.c | ||||||
| +++ b/drivers/net/ethernet/mscc/ocelot.c | +++ b/drivers/net/ethernet/mscc/ocelot.c | ||||||
| @@ -1680,6 +1680,8 @@ static int ocelot_port_obj_del(struct ne | @@ -1677,6 +1677,8 @@ static int ocelot_port_obj_del(struct ne | ||||||
|  int ocelot_port_bridge_join(struct ocelot *ocelot, int port, |  int ocelot_port_bridge_join(struct ocelot *ocelot, int port, | ||||||
|  			    struct net_device *bridge) |  			    struct net_device *bridge) | ||||||
|  { |  { | ||||||
| @@ -24,7 +24,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com> | |||||||
|  	if (!ocelot->bridge_mask) { |  	if (!ocelot->bridge_mask) { | ||||||
|  		ocelot->hw_bridge_dev = bridge; |  		ocelot->hw_bridge_dev = bridge; | ||||||
|  	} else { |  	} else { | ||||||
| @@ -1691,6 +1693,12 @@ int ocelot_port_bridge_join(struct ocelo | @@ -1688,6 +1690,12 @@ int ocelot_port_bridge_join(struct ocelo | ||||||
|   |   | ||||||
|  	ocelot->bridge_mask |= BIT(port); |  	ocelot->bridge_mask |= BIT(port); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci-hub.c | --- a/drivers/usb/host/xhci-hub.c | ||||||
| +++ b/drivers/usb/host/xhci-hub.c | +++ b/drivers/usb/host/xhci-hub.c | ||||||
| @@ -1421,6 +1421,15 @@ int xhci_hub_control(struct usb_hcd *hcd | @@ -1422,6 +1422,15 @@ int xhci_hub_control(struct usb_hcd *hcd | ||||||
|  			/* 4.19.6 Port Test Modes (USB2 Test Mode) */ |  			/* 4.19.6 Port Test Modes (USB2 Test Mode) */ | ||||||
|  			if (hcd->speed != HCD_USB2) |  			if (hcd->speed != HCD_USB2) | ||||||
|  				goto error; |  				goto error; | ||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  			retval = xhci_enter_test_mode(xhci, test_mode, wIndex, |  			retval = xhci_enter_test_mode(xhci, test_mode, wIndex, | ||||||
| --- a/drivers/usb/host/xhci-ring.c | --- a/drivers/usb/host/xhci-ring.c | ||||||
| +++ b/drivers/usb/host/xhci-ring.c | +++ b/drivers/usb/host/xhci-ring.c | ||||||
| @@ -3630,6 +3630,129 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * | @@ -3636,6 +3636,129 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -174,7 +174,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|   * bursts that are required to move all packets in this TD.  Only SuperSpeed |   * bursts that are required to move all packets in this TD.  Only SuperSpeed | ||||||
| --- a/drivers/usb/host/xhci.c | --- a/drivers/usb/host/xhci.c | ||||||
| +++ b/drivers/usb/host/xhci.c | +++ b/drivers/usb/host/xhci.c | ||||||
| @@ -5389,6 +5389,7 @@ static const struct hc_driver xhci_hc_dr | @@ -5393,6 +5393,7 @@ static const struct hc_driver xhci_hc_dr | ||||||
|  	.disable_usb3_lpm_timeout =	xhci_disable_usb3_lpm_timeout, |  	.disable_usb3_lpm_timeout =	xhci_disable_usb3_lpm_timeout, | ||||||
|  	.find_raw_port_number =	xhci_find_raw_port_number, |  	.find_raw_port_number =	xhci_find_raw_port_number, | ||||||
|  	.clear_tt_buffer_complete = xhci_clear_tt_buffer_complete, |  	.clear_tt_buffer_complete = xhci_clear_tt_buffer_complete, | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci-ring.c | --- a/drivers/usb/host/xhci-ring.c | ||||||
| +++ b/drivers/usb/host/xhci-ring.c | +++ b/drivers/usb/host/xhci-ring.c | ||||||
| @@ -2097,12 +2097,9 @@ static int process_ctrl_td(struct xhci_h | @@ -2103,12 +2103,9 @@ static int process_ctrl_td(struct xhci_h | ||||||
|   |   | ||||||
|  	switch (trb_comp_code) { |  	switch (trb_comp_code) { | ||||||
|  	case COMP_SUCCESS: |  	case COMP_SUCCESS: | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ Signed-off-by: Peter Chen <peter.chen@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci.c | --- a/drivers/usb/host/xhci.c | ||||||
| +++ b/drivers/usb/host/xhci.c | +++ b/drivers/usb/host/xhci.c | ||||||
| @@ -5410,6 +5410,8 @@ void xhci_init_driver(struct hc_driver * | @@ -5414,6 +5414,8 @@ void xhci_init_driver(struct hc_driver * | ||||||
|  			drv->check_bandwidth = over->check_bandwidth; |  			drv->check_bandwidth = over->check_bandwidth; | ||||||
|  		if (over->reset_bandwidth) |  		if (over->reset_bandwidth) | ||||||
|  			drv->reset_bandwidth = over->reset_bandwidth; |  			drv->reset_bandwidth = over->reset_bandwidth; | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ Signed-off-by: Li Jun <jun.li@freescale.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/core/hub.c | --- a/drivers/usb/core/hub.c | ||||||
| +++ b/drivers/usb/core/hub.c | +++ b/drivers/usb/core/hub.c | ||||||
| @@ -4779,7 +4779,8 @@ hub_port_init(struct usb_hub *hub, struc | @@ -4777,7 +4777,8 @@ hub_port_init(struct usb_hub *hub, struc | ||||||
|  			} |  			} | ||||||
|  			if (r) { |  			if (r) { | ||||||
|  				if (r != -ENODEV) |  				if (r != -ENODEV) | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ Signed-off-by: Li Jun <jun.li@nxp.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci-hub.c | --- a/drivers/usb/host/xhci-hub.c | ||||||
| +++ b/drivers/usb/host/xhci-hub.c | +++ b/drivers/usb/host/xhci-hub.c | ||||||
| @@ -1739,7 +1739,8 @@ static bool xhci_port_missing_cas_quirk( | @@ -1740,7 +1740,8 @@ static bool xhci_port_missing_cas_quirk( | ||||||
|  		return false; |  		return false; | ||||||
|   |   | ||||||
|  	if (((portsc & PORT_PLS_MASK) != XDEV_POLLING) && |  	if (((portsc & PORT_PLS_MASK) != XDEV_POLLING) && | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user