rtl8366_smi: coding style cleanup

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19246 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Gabor Juhos 2010-01-20 17:40:39 +00:00
parent f1c22e0e26
commit d573c3ed35
1 changed files with 119 additions and 102 deletions

View File

@ -165,7 +165,8 @@ struct rtl8366s_vlan4kentry {
u16 member:6; u16 member:6;
}; };
static const char *MIBCOUNTERS[] = { "IfInOctets ", static const char *MIBCOUNTERS[] = {
"IfInOctets ",
"EtherStatsOctets ", "EtherStatsOctets ",
"EtherStatsUnderSizePkts ", "EtherStatsUnderSizePkts ",
"EtherFregament ", "EtherFregament ",
@ -198,7 +199,8 @@ static const char *MIBCOUNTERS[] = { "IfInOctets ",
"IfOutUcastPkts ", "IfOutUcastPkts ",
"IfOutMulticastPkts ", "IfOutMulticastPkts ",
"IfOutBroadcastPkts ", "IfOutBroadcastPkts ",
NULL }; NULL,
};
struct rtl8366_smi { struct rtl8366_smi {
struct platform_device *pdev; struct platform_device *pdev;
@ -561,10 +563,11 @@ static int rtl8366_get_mib_counter(struct rtl8366_smi *smi, int counter,
addr = RTL8366S_MIB_COUNTER_BASE + regoffset; addr = RTL8366S_MIB_COUNTER_BASE + regoffset;
/*
/* writing access counter address first */ * Writing access counter address first
/* then ASIC will prepare 64bits counter wait for being retrived */ * then ASIC will prepare 64bits counter wait for being retrived
data = 0;/* writing data will be discard by ASIC */ */
data = 0; /* writing data will be discard by ASIC */
err = rtl8366_smi_write_reg(smi, addr, data); err = rtl8366_smi_write_reg(smi, addr, data);
if (err) if (err)
return err; return err;
@ -697,7 +700,6 @@ static int rtl8366s_get_vlan_member_config(struct rtl8366_smi *smi, u32 index,
tableaddr = (u16 *)vlanmc; tableaddr = (u16 *)vlanmc;
addr = RTL8366S_VLAN_MEMCONF_BASE + (index << 1); addr = RTL8366S_VLAN_MEMCONF_BASE + (index << 1);
err = rtl8366_smi_read_reg(smi, addr, &data); err = rtl8366_smi_read_reg(smi, addr, &data);
if (err) if (err)
return err; return err;
@ -706,7 +708,6 @@ static int rtl8366s_get_vlan_member_config(struct rtl8366_smi *smi, u32 index,
tableaddr++; tableaddr++;
addr = RTL8366S_VLAN_MEMCONF_BASE + 1 + (index << 1); addr = RTL8366S_VLAN_MEMCONF_BASE + 1 + (index << 1);
err = rtl8366_smi_read_reg(smi, addr, &data); err = rtl8366_smi_read_reg(smi, addr, &data);
if (err) if (err)
return err; return err;
@ -735,7 +736,6 @@ static int rtl8366s_set_vlan_member_config(struct rtl8366_smi *smi, u32 index,
addr = RTL8366S_VLAN_MEMCONF_BASE + (index << 1); addr = RTL8366S_VLAN_MEMCONF_BASE + (index << 1);
tableaddr = (u16 *)vlanmc; tableaddr = (u16 *)vlanmc;
data = *tableaddr; data = *tableaddr;
@ -774,7 +774,6 @@ static int rtl8366_get_port_vlan_index(struct rtl8366_smi *smi, int port,
return -EINVAL; return -EINVAL;
addr = RTL8366S_PORT_VLAN_CTRL_BASE + addroffset[port]; addr = RTL8366S_PORT_VLAN_CTRL_BASE + addroffset[port];
err = rtl8366_smi_read_reg(smi, addr, &data); err = rtl8366_smi_read_reg(smi, addr, &data);
if (err) if (err)
return err; return err;
@ -788,9 +787,9 @@ static int rtl8366_get_port_vlan_index(struct rtl8366_smi *smi, int port,
static int rtl8366_get_vlan_port_pvid(struct rtl8366_smi *smi, int port, static int rtl8366_get_vlan_port_pvid(struct rtl8366_smi *smi, int port,
int *val) int *val)
{ {
struct rtl8366s_vlanconfig vlanmc;
int err; int err;
int index; int index;
struct rtl8366s_vlanconfig vlanmc;
err = rtl8366_get_port_vlan_index(smi, port, &index); err = rtl8366_get_port_vlan_index(smi, port, &index);
if (err) if (err)
@ -854,16 +853,16 @@ static int rtl8366_set_vlan_port_pvid(struct rtl8366_smi *smi, int port,
if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS) if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS)
return -EINVAL; return -EINVAL;
/* Updating the 4K entry; lookup it and change the port member set */ /* Updating the 4K entry; lookup it and change the port member set */
rtl8366s_get_vlan_4k_entry(smi, val, &vlan4k); rtl8366s_get_vlan_4k_entry(smi, val, &vlan4k);
vlan4k.member |= ((1 << port) | RTL8366_PORT_CPU); vlan4k.member |= ((1 << port) | RTL8366_PORT_CPU);
vlan4k.untag = RTL8366_PORT_ALL_BUT_CPU; vlan4k.untag = RTL8366_PORT_ALL_BUT_CPU;
rtl8366s_set_vlan_4k_entry(smi, &vlan4k); rtl8366s_set_vlan_4k_entry(smi, &vlan4k);
/* For the 16 entries more work needs to be done. First see if such /*
VID is already there and change it */ * For the 16 entries more work needs to be done. First see if such
* VID is already there and change it
*/
for (i = 0; i < RTL8366_NUM_VLANS; ++i) { for (i = 0; i < RTL8366_NUM_VLANS; ++i) {
rtl8366s_get_vlan_member_config(smi, i, &vlanmc); rtl8366s_get_vlan_member_config(smi, i, &vlanmc);
@ -879,13 +878,17 @@ static int rtl8366_set_vlan_port_pvid(struct rtl8366_smi *smi, int port,
} }
} }
/* PVID could not be found from vlan table. Replace unused (one that /*
has no member ports) with new one */ * PVID could not be found from vlan table. Replace unused (one that
* has no member ports) with new one
*/
for (i = 0; i < RTL8366_NUM_VLANS; ++i) { for (i = 0; i < RTL8366_NUM_VLANS; ++i) {
rtl8366s_get_vlan_member_config(smi, i, &vlanmc); rtl8366s_get_vlan_member_config(smi, i, &vlanmc);
/* See if this vlan member configuration is unused. It is /*
unused if member set contains no ports or CPU port only */ * See if this vlan member configuration is unused. It is
* unused if member set contains no ports or CPU port only
*/
if (!vlanmc.member || vlanmc.member == RTL8366_PORT_CPU) { if (!vlanmc.member || vlanmc.member == RTL8366_PORT_CPU) {
vlanmc.vid = val; vlanmc.vid = val;
vlanmc.priority = 0; vlanmc.priority = 0;
@ -902,8 +905,9 @@ static int rtl8366_set_vlan_port_pvid(struct rtl8366_smi *smi, int port,
} }
} }
dev_err(&smi->pdev->dev, "All 16 vlan member configurations are in " dev_err(&smi->pdev->dev,
"use\n"); "All 16 vlan member configurations are in use\n");
return -EINVAL; return -EINVAL;
} }
@ -911,6 +915,7 @@ static int rtl8366_set_vlan_port_pvid(struct rtl8366_smi *smi, int port,
static int rtl8366_vlan_set_vlan(struct rtl8366_smi *smi, int enable) static int rtl8366_vlan_set_vlan(struct rtl8366_smi *smi, int enable)
{ {
u32 data = 0; u32 data = 0;
rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data);
data &= ~(data & RTL8366_CHIP_CTRL_VLAN); data &= ~(data & RTL8366_CHIP_CTRL_VLAN);
@ -923,6 +928,7 @@ static int rtl8366_vlan_set_vlan(struct rtl8366_smi *smi, int enable)
static int rtl8366_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) static int rtl8366_vlan_set_4ktable(struct rtl8366_smi *smi, int enable)
{ {
u32 data = 0; u32 data = 0;
rtl8366_smi_read_reg(smi, RTL8366S_VLAN_TB_CTRL_REG, &data); rtl8366_smi_read_reg(smi, RTL8366S_VLAN_TB_CTRL_REG, &data);
data &= ~(data & 1); data &= ~(data & 1);
@ -981,8 +987,8 @@ static ssize_t rtl8366_read_debugfs_mibs(struct file *file,
char __user *user_buf, char __user *user_buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
int i, j, len = 0;
struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data; struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data;
int i, j, len = 0;
char *buf = smi->buf; char *buf = smi->buf;
len += snprintf(buf + len, sizeof(smi->buf) - len, "MIB Counters:\n"); len += snprintf(buf + len, sizeof(smi->buf) - len, "MIB Counters:\n");
@ -992,17 +998,18 @@ static ssize_t rtl8366_read_debugfs_mibs(struct file *file,
"Port 4\n"); "Port 4\n");
for (i = 0; i < 33; ++i) { for (i = 0; i < 33; ++i) {
len += snprintf(buf + len, sizeof(smi->buf) - len, "%d:%s ", len += snprintf(buf + len, sizeof(smi->buf) - len, "%d:%s ",
i, MIBCOUNTERS[i]); i, MIBCOUNTERS[i]);
for (j = 0; j < RTL8366_NUM_PORTS; ++j) { for (j = 0; j < RTL8366_NUM_PORTS; ++j) {
unsigned long long counter = 0; unsigned long long counter = 0;
if (!rtl8366_get_mib_counter(smi, i, j, &counter)) if (!rtl8366_get_mib_counter(smi, i, j, &counter))
len += snprintf(buf + len, sizeof(smi->buf) - len, len += snprintf(buf + len,
sizeof(smi->buf) - len,
"[%llu]", counter); "[%llu]", counter);
else else
len += snprintf(buf + len, sizeof(smi->buf) - len, len += snprintf(buf + len,
sizeof(smi->buf) - len,
"[error]"); "[error]");
if (j != RTL8366_NUM_PORTS - 1) { if (j != RTL8366_NUM_PORTS - 1) {
@ -1011,7 +1018,8 @@ static ssize_t rtl8366_read_debugfs_mibs(struct file *file,
sizeof(smi->buf) - len, sizeof(smi->buf) - len,
"\t"); "\t");
len += snprintf(buf + len, sizeof(smi->buf) - len, len += snprintf(buf + len,
sizeof(smi->buf) - len,
"\t"); "\t");
} }
} }
@ -1027,11 +1035,12 @@ static ssize_t rtl8366_read_debugfs_vlan(struct file *file,
char __user *user_buf, char __user *user_buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
int i, j, len = 0;
struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data; struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data;
int i, j, len = 0;
char *buf = smi->buf; char *buf = smi->buf;
len += snprintf(buf + len, sizeof(smi->buf) - len, "VLAN Member Config:\n"); len += snprintf(buf + len, sizeof(smi->buf) - len,
"VLAN Member Config:\n");
len += snprintf(buf + len, sizeof(smi->buf) - len, len += snprintf(buf + len, sizeof(smi->buf) - len,
"\t id \t vid \t prio \t member \t untag \t fid " "\t id \t vid \t prio \t member \t untag \t fid "
"\tports\n"); "\tports\n");
@ -1065,9 +1074,9 @@ static ssize_t rtl8366_read_debugfs_reg(struct file *file,
char __user *user_buf, char __user *user_buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data;
u32 t, reg = g_dbg_reg; u32 t, reg = g_dbg_reg;
int err, len = 0; int err, len = 0;
struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data;
char *buf = smi->buf; char *buf = smi->buf;
memset(buf, '\0', sizeof(smi->buf)); memset(buf, '\0', sizeof(smi->buf));
@ -1089,11 +1098,11 @@ static ssize_t rtl8366_write_debugfs_reg(struct file *file,
const char __user *user_buf, const char __user *user_buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data;
unsigned long data; unsigned long data;
u32 reg = g_dbg_reg; u32 reg = g_dbg_reg;
int err; int err;
size_t len; size_t len;
struct rtl8366_smi *smi = (struct rtl8366_smi *)file->private_data;
char *buf = smi->buf; char *buf = smi->buf;
len = min(count, sizeof(smi->buf) - 1); len = min(count, sizeof(smi->buf) - 1);
@ -1170,16 +1179,16 @@ static void rtl8366_debugfs_init(struct rtl8366_smi *smi)
node = debugfs_create_file("vlan", S_IRUSR, root, smi, node = debugfs_create_file("vlan", S_IRUSR, root, smi,
&fops_rtl8366_vlan); &fops_rtl8366_vlan);
if (!node) { if (!node) {
dev_err(&smi->pdev->dev, "Creating debugfs file vlan " dev_err(&smi->pdev->dev,
"failed\n"); "Creating debugfs file vlan failed\n");
return; return;
} }
node = debugfs_create_file("mibs", S_IRUSR, root, smi, node = debugfs_create_file("mibs", S_IRUSR, root, smi,
&fops_rtl8366_mibs); &fops_rtl8366_mibs);
if (!node) { if (!node) {
dev_err(&smi->pdev->dev, "Creating debugfs file mibs " dev_err(&smi->pdev->dev,
"xfailed\n"); "Creating debugfs file mibs failed\n");
return; return;
} }
} }
@ -1201,8 +1210,8 @@ static int rtl8366_global_reset_mibs(struct switch_dev *dev,
const struct switch_attr *attr, const struct switch_attr *attr,
struct switch_val *val) struct switch_val *val)
{ {
u32 data = 0;
struct rtl8366_smi *smi = sw_to_rtl8366(dev); struct rtl8366_smi *smi = sw_to_rtl8366(dev);
u32 data = 0;
if (val->value.i == 1) { if (val->value.i == 1) {
rtl8366_smi_read_reg(smi, RTL8366S_MIB_CTRL_REG, &data); rtl8366_smi_read_reg(smi, RTL8366S_MIB_CTRL_REG, &data);
@ -1217,8 +1226,8 @@ static int rtl8366_get_vlan(struct switch_dev *dev,
const struct switch_attr *attr, const struct switch_attr *attr,
struct switch_val *val) struct switch_val *val)
{ {
u32 data;
struct rtl8366_smi *smi = sw_to_rtl8366(dev); struct rtl8366_smi *smi = sw_to_rtl8366(dev);
u32 data;
if (attr->ofs == 1) { if (attr->ofs == 1) {
rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data); rtl8366_smi_read_reg(smi, RTL8366_CHIP_GLOBAL_CTRL_REG, &data);
@ -1243,8 +1252,9 @@ static int rtl8366_global_get_blinkrate(struct switch_dev *dev,
const struct switch_attr *attr, const struct switch_attr *attr,
struct switch_val *val) struct switch_val *val)
{ {
u32 data;
struct rtl8366_smi *smi = sw_to_rtl8366(dev); struct rtl8366_smi *smi = sw_to_rtl8366(dev);
u32 data;
rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data); rtl8366_smi_read_reg(smi, RTL8366_LED_BLINKRATE_REG, &data);
val->value.i = (data & (RTL8366_LED_BLINKRATE_MASK)); val->value.i = (data & (RTL8366_LED_BLINKRATE_MASK));
@ -1322,23 +1332,31 @@ static int rtl8366_attr_get_port_link(struct switch_dev *dev,
"Link DOWN, Speed: "); "Link DOWN, Speed: ");
if (speed == 0) if (speed == 0)
len += snprintf(buf + len, sizeof(smi->buf) - len, "10Base-TX "); len += snprintf(buf + len, sizeof(smi->buf) - len,
"10Base-TX ");
else if (speed == 1) else if (speed == 1)
len += snprintf(buf + len, sizeof(smi->buf) - len, "100Base-TX "); len += snprintf(buf + len, sizeof(smi->buf) - len,
"100Base-TX ");
else if (speed == 2) else if (speed == 2)
len += snprintf(buf + len, sizeof(smi->buf) - len, "1000Base-TX "); len += snprintf(buf + len, sizeof(smi->buf) - len,
"1000Base-TX ");
if (duplex) if (duplex)
len += snprintf(buf + len, sizeof(smi->buf) - len, "Full-Duplex, "); len += snprintf(buf + len, sizeof(smi->buf) - len,
"Full-Duplex, ");
else else
len += snprintf(buf + len, sizeof(smi->buf) - len, "Half-Duplex, "); len += snprintf(buf + len, sizeof(smi->buf) - len,
"Half-Duplex, ");
if (txpause) if (txpause)
len += snprintf(buf + len, sizeof(smi->buf) - len, "TX-Pause "); len += snprintf(buf + len, sizeof(smi->buf) - len,
"TX-Pause ");
if (rxpause) if (rxpause)
len += snprintf(buf + len, sizeof(smi->buf) - len, "RX-Pause "); len += snprintf(buf + len, sizeof(smi->buf) - len,
"RX-Pause ");
if (nway) if (nway)
len += snprintf(buf + len, sizeof(smi->buf) - len, "nway "); len += snprintf(buf + len, sizeof(smi->buf) - len,
"nway ");
val->value.s = buf; val->value.s = buf;
val->len = len; val->len = len;
@ -1372,7 +1390,8 @@ static int rtl8366_attr_get_vlan_info(struct switch_dev *dev,
int index = 0; int index = 0;
if (!rtl8366_get_port_vlan_index(smi, i, &index) && if (!rtl8366_get_port_vlan_index(smi, i, &index) &&
index == val->port_vlan) index == val->port_vlan)
len += snprintf(buf + len, sizeof(smi->buf) - len, "%d", i); len += snprintf(buf + len, sizeof(smi->buf) - len,
"%d", i);
} }
len += snprintf(buf + len, sizeof(smi->buf) - len, "\n"); len += snprintf(buf + len, sizeof(smi->buf) - len, "\n");
@ -1398,8 +1417,9 @@ static int rtl8366_set_port_led(struct switch_dev *dev,
const struct switch_attr *attr, const struct switch_attr *attr,
struct switch_val *val) struct switch_val *val)
{ {
u32 data = 0;
struct rtl8366_smi *smi = sw_to_rtl8366(dev); struct rtl8366_smi *smi = sw_to_rtl8366(dev);
u32 data = 0;
if (val->port_vlan >= RTL8366_NUM_PORTS || if (val->port_vlan >= RTL8366_NUM_PORTS ||
(1 << val->port_vlan) == RTL8366_PORT_UNKNOWN) (1 << val->port_vlan) == RTL8366_PORT_UNKNOWN)
return -EINVAL; return -EINVAL;
@ -1422,8 +1442,9 @@ static int rtl8366_get_port_led(struct switch_dev *dev,
const struct switch_attr *attr, const struct switch_attr *attr,
struct switch_val *val) struct switch_val *val)
{ {
u32 data = 0;
struct rtl8366_smi *smi = sw_to_rtl8366(dev); struct rtl8366_smi *smi = sw_to_rtl8366(dev);
u32 data = 0;
if (val->port_vlan >= RTL8366_NUM_LEDGROUPS) if (val->port_vlan >= RTL8366_NUM_LEDGROUPS)
return -EINVAL; return -EINVAL;
@ -1437,8 +1458,9 @@ static int rtl8366_reset_port_mibs(struct switch_dev *dev,
const struct switch_attr *attr, const struct switch_attr *attr,
struct switch_val *val) struct switch_val *val)
{ {
u32 data = 0;
struct rtl8366_smi *smi = sw_to_rtl8366(dev); struct rtl8366_smi *smi = sw_to_rtl8366(dev);
u32 data = 0;
if (val->port_vlan >= RTL8366_NUM_PORTS) if (val->port_vlan >= RTL8366_NUM_PORTS)
return -EINVAL; return -EINVAL;
@ -1453,18 +1475,19 @@ static int rtl8366_get_port_mib(struct switch_dev *dev,
const struct switch_attr *attr, const struct switch_attr *attr,
struct switch_val *val) struct switch_val *val)
{ {
struct rtl8366_smi *smi = sw_to_rtl8366(dev);
int i, len = 0; int i, len = 0;
unsigned long long counter = 0; unsigned long long counter = 0;
struct rtl8366_smi *smi = sw_to_rtl8366(dev);
char *buf = smi->buf; char *buf = smi->buf;
if (val->port_vlan >= RTL8366_NUM_PORTS) if (val->port_vlan >= RTL8366_NUM_PORTS)
return -EINVAL; return -EINVAL;
len += snprintf(buf + len, sizeof(smi->buf) - len, "Port %d MIB counters\n", len += snprintf(buf + len, sizeof(smi->buf) - len,
"Port %d MIB counters\n",
val->port_vlan); val->port_vlan);
for (i = 0; i < RTL8366S_MIB_COUNT; ++i) {
for (i = 0; i < RTL8366S_MIB_COUNT; ++i) {
len += snprintf(buf + len, sizeof(smi->buf) - len, len += snprintf(buf + len, sizeof(smi->buf) - len,
"%d:%s\t", i, MIBCOUNTERS[i]); "%d:%s\t", i, MIBCOUNTERS[i]);
if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter)) if (!rtl8366_get_mib_counter(smi, i, val->port_vlan, &counter))
@ -1588,8 +1611,7 @@ static struct switch_attr rtl8366_globals[] = {
.get = rtl8366_get_vlan, .get = rtl8366_get_vlan,
.max = 1, .max = 1,
.ofs = 1 .ofs = 1
}, }, {
{
.type = SWITCH_TYPE_INT, .type = SWITCH_TYPE_INT,
.name = "enable_vlan4k", .name = "enable_vlan4k",
.description = "Enable VLAN 4K mode", .description = "Enable VLAN 4K mode",
@ -1597,16 +1619,14 @@ static struct switch_attr rtl8366_globals[] = {
.get = rtl8366_get_vlan, .get = rtl8366_get_vlan,
.max = 1, .max = 1,
.ofs = 2 .ofs = 2
}, }, {
{
.type = SWITCH_TYPE_INT, .type = SWITCH_TYPE_INT,
.name = "reset_mibs", .name = "reset_mibs",
.description = "Reset all MIB counters", .description = "Reset all MIB counters",
.set = rtl8366_global_reset_mibs, .set = rtl8366_global_reset_mibs,
.get = NULL, .get = NULL,
.max = 1 .max = 1
}, }, {
{
.type = SWITCH_TYPE_INT, .type = SWITCH_TYPE_INT,
.name = "blinkrate", .name = "blinkrate",
.description = "Get/Set LED blinking rate (0 = 43ms, 1 = 84ms," .description = "Get/Set LED blinking rate (0 = 43ms, 1 = 84ms,"
@ -1625,24 +1645,21 @@ static struct switch_attr rtl8366_port[] = {
.max = 1, .max = 1,
.set = NULL, .set = NULL,
.get = rtl8366_attr_get_port_link .get = rtl8366_attr_get_port_link
}, }, {
{
.type = SWITCH_TYPE_INT, .type = SWITCH_TYPE_INT,
.name = "reset_mib", .name = "reset_mib",
.description = "Reset single port MIB counters", .description = "Reset single port MIB counters",
.max = 1, .max = 1,
.set = rtl8366_reset_port_mibs, .set = rtl8366_reset_port_mibs,
.get = NULL .get = NULL
}, }, {
{
.type = SWITCH_TYPE_STRING, .type = SWITCH_TYPE_STRING,
.name = "mib", .name = "mib",
.description = "Get MIB counters for port", .description = "Get MIB counters for port",
.max = 33, .max = 33,
.set = NULL, .set = NULL,
.get = rtl8366_get_port_mib .get = rtl8366_get_port_mib
}, }, {
{
.type = SWITCH_TYPE_INT, .type = SWITCH_TYPE_INT,
.name = "led", .name = "led",
.description = "Get/Set port group (0 - 3) led mode (0 - 15)", .description = "Get/Set port group (0 - 3) led mode (0 - 15)",