generic: jumbo frames support for rtl8366s

This patch adds the option to enable jumbo frames on the rtl8366s
switch. This is almost exactly the same as the first patch at
https://dev.openwrt.org/ticket/7977 and it has been requested
in a comment there.

I have tested this and it successfully allows devices on the switch
using jumbo frames to communicate.

Signed-off-by: Ash Hughes <ashley.hughes@blueyonder.co.uk>

SVN-Revision: 28267
This commit is contained in:
Gabor Juhos 2011-09-21 11:47:38 +00:00
parent ffb56132e4
commit 93c093057d

View File

@ -655,6 +655,49 @@ static int rtl8366s_sw_set_blinkrate(struct switch_dev *dev,
val->value.i);
}
static int rtl8366s_sw_get_max_length(struct switch_dev *dev,
const struct switch_attr *attr,
struct switch_val *val)
{
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
u32 data;
rtl8366_smi_read_reg(smi, RTL8366S_SGCR, &data);
val->value.i = ((data & (RTL8366S_SGCR_MAX_LENGTH_MASK)) >> 4);
return 0;
}
static int rtl8366s_sw_set_max_length(struct switch_dev *dev,
const struct switch_attr *attr,
struct switch_val *val)
{
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
char length_code;
switch (val->value.i) {
case 0:
length_code = RTL8366S_SGCR_MAX_LENGTH_1522;
break;
case 1:
length_code = RTL8366S_SGCR_MAX_LENGTH_1536;
break;
case 2:
length_code = RTL8366S_SGCR_MAX_LENGTH_1552;
break;
case 3:
length_code = RTL8366S_SGCR_MAX_LENGTH_16000;
break;
default:
return -EINVAL;
}
return rtl8366_smi_rmwr(smi, RTL8366S_SGCR,
RTL8366S_SGCR_MAX_LENGTH_MASK,
length_code);
}
static int rtl8366s_sw_get_learning_enable(struct switch_dev *dev,
const struct switch_attr *attr,
struct switch_val *val)
@ -863,6 +906,14 @@ static struct switch_attr rtl8366s_globals[] = {
.set = rtl8366s_sw_set_blinkrate,
.get = rtl8366s_sw_get_blinkrate,
.max = 5
}, {
.type = SWITCH_TYPE_INT,
.name = "max_length",
.description = "Get/Set the maximum length of valid packets"
" (0 = 1522, 1 = 1536, 2 = 1552, 3 = 16000 (9216?))",
.set = rtl8366s_sw_set_max_length,
.get = rtl8366s_sw_get_max_length,
.max = 3,
},
};