Lines Matching refs:mdb_entry_port

1101 	struct mlxsw_sp_mdb_entry_port *mdb_entry_port;  in mlxsw_sp_mdb_entry_port_lookup()  local
1103 list_for_each_entry(mdb_entry_port, &mdb_entry->ports_list, list) { in mlxsw_sp_mdb_entry_port_lookup()
1104 if (mdb_entry_port->local_port == local_port) in mlxsw_sp_mdb_entry_port_lookup()
1105 return mdb_entry_port; in mlxsw_sp_mdb_entry_port_lookup()
1116 struct mlxsw_sp_mdb_entry_port *mdb_entry_port; in mlxsw_sp_mdb_entry_port_get() local
1119 mdb_entry_port = mlxsw_sp_mdb_entry_port_lookup(mdb_entry, local_port); in mlxsw_sp_mdb_entry_port_get()
1120 if (mdb_entry_port) { in mlxsw_sp_mdb_entry_port_get()
1121 if (mdb_entry_port->mrouter && in mlxsw_sp_mdb_entry_port_get()
1122 refcount_read(&mdb_entry_port->refcount) == 1) in mlxsw_sp_mdb_entry_port_get()
1125 refcount_inc(&mdb_entry_port->refcount); in mlxsw_sp_mdb_entry_port_get()
1126 return mdb_entry_port; in mlxsw_sp_mdb_entry_port_get()
1134 mdb_entry_port = kzalloc(sizeof(*mdb_entry_port), GFP_KERNEL); in mlxsw_sp_mdb_entry_port_get()
1135 if (!mdb_entry_port) { in mlxsw_sp_mdb_entry_port_get()
1140 mdb_entry_port->local_port = local_port; in mlxsw_sp_mdb_entry_port_get()
1141 refcount_set(&mdb_entry_port->refcount, 1); in mlxsw_sp_mdb_entry_port_get()
1142 list_add(&mdb_entry_port->list, &mdb_entry->ports_list); in mlxsw_sp_mdb_entry_port_get()
1145 return mdb_entry_port; in mlxsw_sp_mdb_entry_port_get()
1158 struct mlxsw_sp_mdb_entry_port *mdb_entry_port; in mlxsw_sp_mdb_entry_port_put() local
1160 mdb_entry_port = mlxsw_sp_mdb_entry_port_lookup(mdb_entry, local_port); in mlxsw_sp_mdb_entry_port_put()
1161 if (!mdb_entry_port) in mlxsw_sp_mdb_entry_port_put()
1164 if (!force && !refcount_dec_and_test(&mdb_entry_port->refcount)) { in mlxsw_sp_mdb_entry_port_put()
1165 if (mdb_entry_port->mrouter && in mlxsw_sp_mdb_entry_port_put()
1166 refcount_read(&mdb_entry_port->refcount) == 1) in mlxsw_sp_mdb_entry_port_put()
1172 list_del(&mdb_entry_port->list); in mlxsw_sp_mdb_entry_port_put()
1173 kfree(mdb_entry_port); in mlxsw_sp_mdb_entry_port_put()
1183 struct mlxsw_sp_mdb_entry_port *mdb_entry_port; in mlxsw_sp_mdb_entry_mrouter_port_get() local
1186 mdb_entry_port = mlxsw_sp_mdb_entry_port_lookup(mdb_entry, local_port); in mlxsw_sp_mdb_entry_mrouter_port_get()
1187 if (mdb_entry_port) { in mlxsw_sp_mdb_entry_mrouter_port_get()
1188 if (!mdb_entry_port->mrouter) in mlxsw_sp_mdb_entry_mrouter_port_get()
1189 refcount_inc(&mdb_entry_port->refcount); in mlxsw_sp_mdb_entry_mrouter_port_get()
1190 return mdb_entry_port; in mlxsw_sp_mdb_entry_mrouter_port_get()
1198 mdb_entry_port = kzalloc(sizeof(*mdb_entry_port), GFP_KERNEL); in mlxsw_sp_mdb_entry_mrouter_port_get()
1199 if (!mdb_entry_port) { in mlxsw_sp_mdb_entry_mrouter_port_get()
1204 mdb_entry_port->local_port = local_port; in mlxsw_sp_mdb_entry_mrouter_port_get()
1205 refcount_set(&mdb_entry_port->refcount, 1); in mlxsw_sp_mdb_entry_mrouter_port_get()
1206 mdb_entry_port->mrouter = true; in mlxsw_sp_mdb_entry_mrouter_port_get()
1207 list_add(&mdb_entry_port->list, &mdb_entry->ports_list); in mlxsw_sp_mdb_entry_mrouter_port_get()
1209 return mdb_entry_port; in mlxsw_sp_mdb_entry_mrouter_port_get()
1222 struct mlxsw_sp_mdb_entry_port *mdb_entry_port; in mlxsw_sp_mdb_entry_mrouter_port_put() local
1224 mdb_entry_port = mlxsw_sp_mdb_entry_port_lookup(mdb_entry, local_port); in mlxsw_sp_mdb_entry_mrouter_port_put()
1225 if (!mdb_entry_port) in mlxsw_sp_mdb_entry_mrouter_port_put()
1228 if (!mdb_entry_port->mrouter) in mlxsw_sp_mdb_entry_mrouter_port_put()
1231 mdb_entry_port->mrouter = false; in mlxsw_sp_mdb_entry_mrouter_port_put()
1232 if (!refcount_dec_and_test(&mdb_entry_port->refcount)) in mlxsw_sp_mdb_entry_mrouter_port_put()
1235 list_del(&mdb_entry_port->list); in mlxsw_sp_mdb_entry_mrouter_port_put()
1236 kfree(mdb_entry_port); in mlxsw_sp_mdb_entry_mrouter_port_put()
1965 struct mlxsw_sp_mdb_entry_port *mdb_entry_port; in mlxsw_sp_mc_mdb_mrouters_add() local
1970 mdb_entry_port = mlxsw_sp_mdb_entry_mrouter_port_get(mlxsw_sp, in mlxsw_sp_mc_mdb_mrouters_add()
1973 if (IS_ERR(mdb_entry_port)) { in mlxsw_sp_mc_mdb_mrouters_add()
1984 return PTR_ERR(mdb_entry_port); in mlxsw_sp_mc_mdb_mrouters_add()
2026 struct mlxsw_sp_mdb_entry_port *mdb_entry_port; in mlxsw_sp_mc_mdb_entry_init() local
2047 mdb_entry_port = mlxsw_sp_mdb_entry_port_get(mlxsw_sp, mdb_entry, in mlxsw_sp_mc_mdb_entry_init()
2049 if (IS_ERR(mdb_entry_port)) { in mlxsw_sp_mc_mdb_entry_init()
2050 err = PTR_ERR(mdb_entry_port); in mlxsw_sp_mc_mdb_entry_init()
2115 struct mlxsw_sp_mdb_entry_port *mdb_entry_port; in mlxsw_sp_mc_mdb_entry_get() local
2117 mdb_entry_port = mlxsw_sp_mdb_entry_port_get(mlxsw_sp, in mlxsw_sp_mc_mdb_entry_get()
2120 if (IS_ERR(mdb_entry_port)) in mlxsw_sp_mc_mdb_entry_get()
2121 return ERR_CAST(mdb_entry_port); in mlxsw_sp_mc_mdb_entry_get()
2158 struct mlxsw_sp_mdb_entry_port *mdb_entry_port; in mlxsw_sp_mc_mdb_entry_put() local
2160 mdb_entry_port = mlxsw_sp_mdb_entry_port_lookup(mdb_entry, local_port); in mlxsw_sp_mc_mdb_entry_put()
2161 if (!mdb_entry_port) in mlxsw_sp_mc_mdb_entry_put()
2170 if (mlxsw_sp_mc_mdb_entry_remove(mdb_entry, mdb_entry_port, force)) in mlxsw_sp_mc_mdb_entry_put()