generic: rtl8366: add is_vlan_valid function to smi_ops
SVN-Revision: 22201
This commit is contained in:
		@@ -86,6 +86,7 @@ struct rtl8366_smi_ops {
 | 
				
			|||||||
	int	(*set_mc_index)(struct rtl8366_smi *smi, int port, int index);
 | 
						int	(*set_mc_index)(struct rtl8366_smi *smi, int port, int index);
 | 
				
			||||||
	int	(*get_mib_counter)(struct rtl8366_smi *smi, int counter,
 | 
						int	(*get_mib_counter)(struct rtl8366_smi *smi, int counter,
 | 
				
			||||||
				   int port, unsigned long long *val);
 | 
									   int port, unsigned long long *val);
 | 
				
			||||||
 | 
						int	(*is_vlan_valid)(struct rtl8366_smi *smi, unsigned vlan);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct rtl8366_smi *rtl8366_smi_alloc(struct device *parent);
 | 
					struct rtl8366_smi *rtl8366_smi_alloc(struct device *parent);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -552,6 +552,14 @@ static int rtl8366rb_set_mc_index(struct rtl8366_smi *smi, int port, int index)
 | 
				
			|||||||
					RTL8366RB_PORT_VLAN_CTRL_SHIFT(port));
 | 
										RTL8366RB_PORT_VLAN_CTRL_SHIFT(port));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int rtl8366rb_is_vlan_valid(struct rtl8366_smi *smi, unsigned vlan)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (vlan == 0 || vlan >= RTL8366RB_NUM_VLANS)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable)
 | 
					static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, RTL8366RB_SGCR_EN_VLAN,
 | 
						return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, RTL8366RB_SGCR_EN_VLAN,
 | 
				
			||||||
@@ -708,7 +716,7 @@ static int rtl8366rb_sw_get_vlan_info(struct switch_dev *dev,
 | 
				
			|||||||
	char *buf = smi->buf;
 | 
						char *buf = smi->buf;
 | 
				
			||||||
	int err;
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (val->port_vlan == 0 || val->port_vlan >= RTL8366RB_NUM_VLANS)
 | 
						if (!smi->ops->is_vlan_valid(smi, val->port_vlan))
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(buf, '\0', sizeof(smi->buf));
 | 
						memset(buf, '\0', sizeof(smi->buf));
 | 
				
			||||||
@@ -800,7 +808,7 @@ static int rtl8366rb_sw_get_vlan_ports(struct switch_dev *dev,
 | 
				
			|||||||
	struct rtl8366_vlan_4k vlan4k;
 | 
						struct rtl8366_vlan_4k vlan4k;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (val->port_vlan == 0 || val->port_vlan >= RTL8366RB_NUM_VLANS)
 | 
						if (!smi->ops->is_vlan_valid(smi, val->port_vlan))
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rtl8366rb_get_vlan_4k(smi, val->port_vlan, &vlan4k);
 | 
						rtl8366rb_get_vlan_4k(smi, val->port_vlan, &vlan4k);
 | 
				
			||||||
@@ -829,7 +837,7 @@ static int rtl8366rb_sw_set_vlan_ports(struct switch_dev *dev,
 | 
				
			|||||||
	u32 untag = 0;
 | 
						u32 untag = 0;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (val->port_vlan == 0 || val->port_vlan >= RTL8366RB_NUM_VLANS)
 | 
						if (!smi->ops->is_vlan_valid(smi, val->port_vlan))
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	port = &val->value.ports[0];
 | 
						port = &val->value.ports[0];
 | 
				
			||||||
@@ -1071,6 +1079,7 @@ static struct rtl8366_smi_ops rtl8366rb_smi_ops = {
 | 
				
			|||||||
	.get_mc_index	= rtl8366rb_get_mc_index,
 | 
						.get_mc_index	= rtl8366rb_get_mc_index,
 | 
				
			||||||
	.set_mc_index	= rtl8366rb_set_mc_index,
 | 
						.set_mc_index	= rtl8366rb_set_mc_index,
 | 
				
			||||||
	.get_mib_counter = rtl8366rb_get_mib_counter,
 | 
						.get_mib_counter = rtl8366rb_get_mib_counter,
 | 
				
			||||||
 | 
						.is_vlan_valid	= rtl8366rb_is_vlan_valid,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int __init rtl8366rb_probe(struct platform_device *pdev)
 | 
					static int __init rtl8366rb_probe(struct platform_device *pdev)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -591,6 +591,14 @@ static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable)
 | 
				
			|||||||
				1, (enable) ? 1 : 0);
 | 
									1, (enable) ? 1 : 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int rtl8366s_is_vlan_valid(struct rtl8366_smi *smi, unsigned vlan)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (vlan == 0 || vlan >= RTL8366S_NUM_VLANS)
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int rtl8366s_sw_reset_mibs(struct switch_dev *dev,
 | 
					static int rtl8366s_sw_reset_mibs(struct switch_dev *dev,
 | 
				
			||||||
				  const struct switch_attr *attr,
 | 
									  const struct switch_attr *attr,
 | 
				
			||||||
				  struct switch_val *val)
 | 
									  struct switch_val *val)
 | 
				
			||||||
@@ -733,7 +741,7 @@ static int rtl8366s_sw_get_vlan_info(struct switch_dev *dev,
 | 
				
			|||||||
	char *buf = smi->buf;
 | 
						char *buf = smi->buf;
 | 
				
			||||||
	int err;
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (val->port_vlan == 0 || val->port_vlan >= RTL8366S_NUM_VLANS)
 | 
						if (!smi->ops->is_vlan_valid(smi, val->port_vlan))
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(buf, '\0', sizeof(smi->buf));
 | 
						memset(buf, '\0', sizeof(smi->buf));
 | 
				
			||||||
@@ -827,7 +835,7 @@ static int rtl8366s_sw_get_vlan_ports(struct switch_dev *dev,
 | 
				
			|||||||
	struct rtl8366_vlan_4k vlan4k;
 | 
						struct rtl8366_vlan_4k vlan4k;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (val->port_vlan == 0 || val->port_vlan >= RTL8366S_NUM_VLANS)
 | 
						if (!smi->ops->is_vlan_valid(smi, val->port_vlan))
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rtl8366s_get_vlan_4k(smi, val->port_vlan, &vlan4k);
 | 
						rtl8366s_get_vlan_4k(smi, val->port_vlan, &vlan4k);
 | 
				
			||||||
@@ -856,7 +864,7 @@ static int rtl8366s_sw_set_vlan_ports(struct switch_dev *dev,
 | 
				
			|||||||
	u32 untag = 0;
 | 
						u32 untag = 0;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (val->port_vlan == 0 || val->port_vlan >= RTL8366S_NUM_VLANS)
 | 
						if (!smi->ops->is_vlan_valid(smi, val->port_vlan))
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	port = &val->value.ports[0];
 | 
						port = &val->value.ports[0];
 | 
				
			||||||
@@ -1098,6 +1106,7 @@ static struct rtl8366_smi_ops rtl8366s_smi_ops = {
 | 
				
			|||||||
	.get_mc_index	= rtl8366s_get_mc_index,
 | 
						.get_mc_index	= rtl8366s_get_mc_index,
 | 
				
			||||||
	.set_mc_index	= rtl8366s_set_mc_index,
 | 
						.set_mc_index	= rtl8366s_set_mc_index,
 | 
				
			||||||
	.get_mib_counter = rtl8366_get_mib_counter,
 | 
						.get_mib_counter = rtl8366_get_mib_counter,
 | 
				
			||||||
 | 
						.is_vlan_valid	= rtl8366s_is_vlan_valid,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int __init rtl8366s_probe(struct platform_device *pdev)
 | 
					static int __init rtl8366s_probe(struct platform_device *pdev)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user