diff options
Diffstat (limited to 'drivers/net/dsa/microchip/ksz9477.c')
| -rw-r--r-- | drivers/net/dsa/microchip/ksz9477.c | 24 | 
1 files changed, 9 insertions, 15 deletions
| diff --git a/drivers/net/dsa/microchip/ksz9477.c b/drivers/net/dsa/microchip/ksz9477.c index a6a0321a8931..47b54ecf2c6f 100644 --- a/drivers/net/dsa/microchip/ksz9477.c +++ b/drivers/net/dsa/microchip/ksz9477.c @@ -45,24 +45,15 @@ static void ksz9477_port_cfg32(struct ksz_device *dev, int port, int offset,  int ksz9477_change_mtu(struct ksz_device *dev, int port, int mtu)  { -	u16 frame_size, max_frame = 0; -	int i; - -	frame_size = mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; +	u16 frame_size; -	/* Cache the per-port MTU setting */ -	dev->ports[port].max_frame = frame_size; +	if (!dsa_is_cpu_port(dev->ds, port)) +		return 0; -	for (i = 0; i < dev->info->port_cnt; i++) -		max_frame = max(max_frame, dev->ports[i].max_frame); +	frame_size = mtu + VLAN_ETH_HLEN + ETH_FCS_LEN;  	return regmap_update_bits(dev->regmap[1], REG_SW_MTU__2, -				  REG_SW_MTU_MASK, max_frame); -} - -int ksz9477_max_mtu(struct ksz_device *dev, int port) -{ -	return KSZ9477_MAX_FRAME_SIZE - VLAN_ETH_HLEN - ETH_FCS_LEN; +				  REG_SW_MTU_MASK, frame_size);  }  static int ksz9477_wait_vlan_ctrl_ready(struct ksz_device *dev) @@ -195,7 +186,8 @@ int ksz9477_reset_switch(struct ksz_device *dev)  	/* KSZ9893 compatible chips do not support refclk configuration */  	if (dev->chip_id == KSZ9893_CHIP_ID || -	    dev->chip_id == KSZ8563_CHIP_ID) +	    dev->chip_id == KSZ8563_CHIP_ID || +	    dev->chip_id == KSZ9563_CHIP_ID)  		return 0;  	data8 = SW_ENABLE_REFCLKO; @@ -1142,6 +1134,8 @@ int ksz9477_setup(struct dsa_switch *ds)  	struct ksz_device *dev = ds->priv;  	int ret = 0; +	ds->mtu_enforcement_ingress = true; +  	/* Required for port partitioning. */  	ksz9477_cfg32(dev, REG_SW_QM_CTRL__4, UNICAST_VLAN_BOUNDARY,  		      true); |