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:
parent
ffb56132e4
commit
93c093057d
1 changed files with 51 additions and 0 deletions
|
@ -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,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue