static void b53_set_vlan_entry(struct b53_device *dev, u16 vid, u16 members, u16 untag) { if (is5325(dev)) { u32 entry = 0; if (members) entry = (untag << VA_UNTAG_S) | members | VA_VALID_25; b53_write32(dev, B53_VLAN_PAGE, B53_VLAN_WRITE_25, entry); b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_TABLE_ACCESS_25, vid | VTA_RW_STATE_WR | VTA_RW_OP_EN); } else if (is5365(dev)) { u16 entry = 0; if (members) entry = (untag << VA_UNTAG_S) | members | VA_VALID_65; b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_WRITE_65, entry); b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_TABLE_ACCESS_65, vid | VTA_RW_STATE_WR | VTA_RW_OP_EN); } else { b53_write16(dev, B53_ARLIO_PAGE, dev->vta_regs[1], vid); b53_write32(dev, B53_ARLIO_PAGE, dev->vta_regs[2], (untag << VTE_UNTAG_S) | members); b53_do_vlan_op(dev, VTA_CMD_WRITE); } }
static int b53_set_jumbo(struct b53_device *dev, int enable, int allow_10_100) { u32 port_mask = 0; u16 max_size = JMS_MIN_SIZE; if (is5325(dev) || is5365(dev)) return -EINVAL; if (enable) { port_mask = dev->enabled_ports; max_size = JMS_MAX_SIZE; if (allow_10_100) port_mask |= JPM_10_100_JUMBO_EN; } b53_write32(dev, B53_JUMBO_PAGE, dev->jumbo_pm_reg, port_mask); return b53_write16(dev, B53_JUMBO_PAGE, dev->jumbo_size_reg, max_size); }