pgt_entry
list_for_each_entry(pgt_entry_port, &pgt_entry->ports_list, list) {
struct mlxsw_sp_pgt_entry *pgt_entry;
pgt_entry = kzalloc_obj(*pgt_entry);
if (!pgt_entry)
ret = idr_replace(&pgt->pgt_idr, pgt_entry, mid);
INIT_LIST_HEAD(&pgt_entry->ports_list);
pgt_entry->index = mid;
pgt_entry->smpe_index = smpe;
return pgt_entry;
kfree(pgt_entry);
struct mlxsw_sp_pgt_entry *pgt_entry)
WARN_ON(!list_empty(&pgt_entry->ports_list));
pgt_entry = idr_replace(&pgt->pgt_idr, NULL, pgt_entry->index);
if (WARN_ON(IS_ERR(pgt_entry)))
kfree(pgt_entry);
struct mlxsw_sp_pgt_entry *pgt_entry;
pgt_entry = idr_find(&pgt->pgt_idr, mid);
if (pgt_entry)
return pgt_entry;
struct mlxsw_sp_pgt_entry *pgt_entry;
pgt_entry = idr_find(&pgt->pgt_idr, mid);
if (WARN_ON(!pgt_entry))
if (list_empty(&pgt_entry->ports_list))
mlxsw_sp_pgt_entry_destroy(pgt, pgt_entry);
const struct mlxsw_sp_pgt_entry *pgt_entry,
mlxsw_reg_smid2_pack(smid2_pl, pgt_entry->index, 0, 0,
pgt_entry->smpe_index);
struct mlxsw_sp_pgt_entry *pgt_entry,
err = mlxsw_sp_pgt_entry_port_write(mlxsw_sp, pgt_entry, local_port,
list_add(&pgt_entry_port->list, &pgt_entry->ports_list);
struct mlxsw_sp_pgt_entry *pgt_entry,
mlxsw_sp_pgt_entry_port_write(mlxsw_sp, pgt_entry,
struct mlxsw_sp_pgt_entry *pgt_entry;
pgt_entry = mlxsw_sp_pgt_entry_get(mlxsw_sp->pgt, mid, smpe);
if (IS_ERR(pgt_entry)) {
err = PTR_ERR(pgt_entry);
pgt_entry_port = mlxsw_sp_pgt_entry_port_create(mlxsw_sp, pgt_entry,
struct mlxsw_sp_pgt_entry *pgt_entry;
pgt_entry = idr_find(&mlxsw_sp->pgt->pgt_idr, mid);
if (!pgt_entry)
pgt_entry_port = mlxsw_sp_pgt_entry_port_lookup(pgt_entry, local_port);
mlxsw_sp_pgt_entry_port_destroy(mlxsw_sp, pgt_entry, pgt_entry_port);
mlxsw_sp_pgt_entry_port_lookup(struct mlxsw_sp_pgt_entry *pgt_entry,
static __always_inline unsigned long get_extent(enum pgt_entry entry,
enum pgt_entry entry)
enum pgt_entry entry, void *old_entry, void *new_entry)