mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 23:42:43 +00:00
realtek: reduce excessive logging for FDB operations
Currently several messages at KERN_INFO level are printed for every FDB del/dump operation. This can cause a significant slowdown for example while using "bridge fdb", and may even trigger a watchdog. Remove most of these log messages, as the new L2 table debugfs node should be a good replacement. Change the remaining messages to KERN_DEBUG level. Signed-off-by: Jan Hoffmann <jan@3e8.eu>
This commit is contained in:
parent
ae9487c535
commit
19b86658b7
@ -1535,28 +1535,6 @@ static int rtl83xx_vlan_del(struct dsa_switch *ds, int port,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_l2_entry(struct rtl838x_l2_entry *e)
|
|
||||||
{
|
|
||||||
pr_info("MAC: %02x:%02x:%02x:%02x:%02x:%02x vid: %d, rvid: %d, port: %d, valid: %d\n",
|
|
||||||
e->mac[0], e->mac[1], e->mac[2], e->mac[3], e->mac[4], e->mac[5],
|
|
||||||
e->vid, e->rvid, e->port, e->valid);
|
|
||||||
|
|
||||||
if (e->type != L2_MULTICAST) {
|
|
||||||
pr_info("Type: %d, is_static: %d, is_ip_mc: %d, is_ipv6_mc: %d, block_da: %d\n",
|
|
||||||
e->type, e->is_static, e->is_ip_mc, e->is_ipv6_mc, e->block_da);
|
|
||||||
pr_info(" block_sa: %d, susp: %d, nh: %d, age: %d, is_trunk: %d, trunk: %d\n",
|
|
||||||
e->block_sa, e->suspended, e->next_hop, e->age, e->is_trunk, e->trunk);
|
|
||||||
}
|
|
||||||
if (e->type == L2_MULTICAST)
|
|
||||||
pr_info(" L2_MULTICAST mc_portmask_index: %d\n", e->mc_portmask_index);
|
|
||||||
if (e->is_ip_mc || e->is_ipv6_mc)
|
|
||||||
pr_info(" mc_portmask_index: %d, mc_gip: %d, mc_sip: %d\n",
|
|
||||||
e->mc_portmask_index, e->mc_gip, e->mc_sip);
|
|
||||||
pr_info(" stack_dev: %d\n", e->stack_dev);
|
|
||||||
if (e->next_hop)
|
|
||||||
pr_info(" nh_route_id: %d\n", e->nh_route_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rtl83xx_setup_l2_uc_entry(struct rtl838x_l2_entry *e, int port, int vid, u64 mac)
|
static void rtl83xx_setup_l2_uc_entry(struct rtl838x_l2_entry *e, int port, int vid, u64 mac)
|
||||||
{
|
{
|
||||||
e->is_ip_mc = e->is_ipv6_mc = false;
|
e->is_ip_mc = e->is_ipv6_mc = false;
|
||||||
@ -1685,15 +1663,14 @@ static int rtl83xx_port_fdb_del(struct dsa_switch *ds, int port,
|
|||||||
int err = 0, idx;
|
int err = 0, idx;
|
||||||
u64 seed = priv->r->l2_hash_seed(mac, vid);
|
u64 seed = priv->r->l2_hash_seed(mac, vid);
|
||||||
|
|
||||||
pr_info("In %s, mac %llx, vid: %d\n", __func__, mac, vid);
|
pr_debug("In %s, mac %llx, vid: %d\n", __func__, mac, vid);
|
||||||
mutex_lock(&priv->reg_mutex);
|
mutex_lock(&priv->reg_mutex);
|
||||||
|
|
||||||
idx = rtl83xx_find_l2_hash_entry(priv, seed, true, &e);
|
idx = rtl83xx_find_l2_hash_entry(priv, seed, true, &e);
|
||||||
|
|
||||||
if (idx >= 0) {
|
if (idx >= 0) {
|
||||||
pr_info("Found entry index %d, key %d and bucket %d\n", idx, idx >> 2, idx & 3);
|
pr_debug("Found entry index %d, key %d and bucket %d\n", idx, idx >> 2, idx & 3);
|
||||||
e.valid = false;
|
e.valid = false;
|
||||||
dump_l2_entry(&e);
|
|
||||||
priv->r->write_l2_entry_using_hash(idx >> 2, idx & 0x3, &e);
|
priv->r->write_l2_entry_using_hash(idx >> 2, idx & 0x3, &e);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@ -1718,8 +1695,6 @@ static int rtl83xx_port_fdb_dump(struct dsa_switch *ds, int port,
|
|||||||
struct rtl838x_l2_entry e;
|
struct rtl838x_l2_entry e;
|
||||||
struct rtl838x_switch_priv *priv = ds->priv;
|
struct rtl838x_switch_priv *priv = ds->priv;
|
||||||
int i;
|
int i;
|
||||||
u32 fid, pkey;
|
|
||||||
u64 mac;
|
|
||||||
|
|
||||||
mutex_lock(&priv->reg_mutex);
|
mutex_lock(&priv->reg_mutex);
|
||||||
|
|
||||||
@ -1729,30 +1704,8 @@ static int rtl83xx_port_fdb_dump(struct dsa_switch *ds, int port,
|
|||||||
if (!e.valid)
|
if (!e.valid)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (e.port == port || e.port == RTL930X_PORT_IGNORE) {
|
if (e.port == port || e.port == RTL930X_PORT_IGNORE)
|
||||||
u64 seed;
|
|
||||||
u32 key;
|
|
||||||
|
|
||||||
fid = ((i >> 2) & 0x3ff) | (e.rvid & ~0x3ff);
|
|
||||||
mac = ether_addr_to_u64(&e.mac[0]);
|
|
||||||
pkey = priv->r->l2_hash_key(priv, priv->r->l2_hash_seed(mac, fid));
|
|
||||||
fid = (pkey & 0x3ff) | (fid & ~0x3ff);
|
|
||||||
pr_info("-> index %d, key %x, bucket %d, dmac %016llx, fid: %x rvid: %x\n",
|
|
||||||
i, i >> 2, i & 0x3, mac, fid, e.rvid);
|
|
||||||
dump_l2_entry(&e);
|
|
||||||
seed = priv->r->l2_hash_seed(mac, e.rvid);
|
|
||||||
key = priv->r->l2_hash_key(priv, seed);
|
|
||||||
pr_info("seed: %016llx, key based on rvid: %08x\n", seed, key);
|
|
||||||
cb(e.mac, e.vid, e.is_static, data);
|
cb(e.mac, e.vid, e.is_static, data);
|
||||||
}
|
|
||||||
if (e.type == L2_MULTICAST) {
|
|
||||||
u64 portmask = priv->r->read_mcast_pmask(e.mc_portmask_index);
|
|
||||||
|
|
||||||
if (portmask & BIT_ULL(port)) {
|
|
||||||
dump_l2_entry(&e);
|
|
||||||
pr_info(" PM: %016llx\n", portmask);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 64; i++) {
|
for (i = 0; i < 64; i++) {
|
||||||
@ -1876,7 +1829,6 @@ int rtl83xx_port_mdb_del(struct dsa_switch *ds, int port,
|
|||||||
portmask = rtl83xx_mc_group_del_port(priv, e.mc_portmask_index, port);
|
portmask = rtl83xx_mc_group_del_port(priv, e.mc_portmask_index, port);
|
||||||
if (!portmask) {
|
if (!portmask) {
|
||||||
e.valid = false;
|
e.valid = false;
|
||||||
// dump_l2_entry(&e);
|
|
||||||
priv->r->write_l2_entry_using_hash(idx >> 2, idx & 0x3, &e);
|
priv->r->write_l2_entry_using_hash(idx >> 2, idx & 0x3, &e);
|
||||||
}
|
}
|
||||||
goto out;
|
goto out;
|
||||||
@ -1889,7 +1841,6 @@ int rtl83xx_port_mdb_del(struct dsa_switch *ds, int port,
|
|||||||
portmask = rtl83xx_mc_group_del_port(priv, e.mc_portmask_index, port);
|
portmask = rtl83xx_mc_group_del_port(priv, e.mc_portmask_index, port);
|
||||||
if (!portmask) {
|
if (!portmask) {
|
||||||
e.valid = false;
|
e.valid = false;
|
||||||
// dump_l2_entry(&e);
|
|
||||||
priv->r->write_cam(idx, &e);
|
priv->r->write_cam(idx, &e);
|
||||||
}
|
}
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -579,22 +579,6 @@ static void rtl930x_write_cam(int idx, struct rtl838x_l2_entry *e)
|
|||||||
rtl_table_release(q);
|
rtl_table_release(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_l2_entry(struct rtl838x_l2_entry *e)
|
|
||||||
{
|
|
||||||
pr_info("MAC: %02x:%02x:%02x:%02x:%02x:%02x vid: %d, rvid: %d, port: %d, valid: %d\n",
|
|
||||||
e->mac[0], e->mac[1], e->mac[2], e->mac[3], e->mac[4], e->mac[5],
|
|
||||||
e->vid, e->rvid, e->port, e->valid);
|
|
||||||
pr_info("Type: %d, is_static: %d, is_ip_mc: %d, is_ipv6_mc: %d, block_da: %d\n",
|
|
||||||
e->type, e->is_static, e->is_ip_mc, e->is_ipv6_mc, e->block_da);
|
|
||||||
pr_info(" block_sa: %d, suspended: %d, next_hop: %d, age: %d, is_trunk: %d, trunk: %d\n",
|
|
||||||
e->block_sa, e->suspended, e->next_hop, e->age, e->is_trunk, e->trunk);
|
|
||||||
if (e->is_ip_mc || e->is_ipv6_mc)
|
|
||||||
pr_info(" mc_portmask_index: %d, mc_gip: %d, mc_sip: %d\n",
|
|
||||||
e->mc_portmask_index, e->mc_gip, e->mc_sip);
|
|
||||||
pr_info(" stac_dev: %d, nh_route_id: %d, port: %d, dev_id\n",
|
|
||||||
e->stack_dev, e->nh_route_id, e->port);
|
|
||||||
}
|
|
||||||
|
|
||||||
static u64 rtl930x_read_mcast_pmask(int idx)
|
static u64 rtl930x_read_mcast_pmask(int idx)
|
||||||
{
|
{
|
||||||
u32 portmask;
|
u32 portmask;
|
||||||
|
Loading…
Reference in New Issue
Block a user