pmctx->multicast_router = MDB_RTR_TYPE_TEMP_QUERY;
 }
 
-int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val)
+int br_multicast_set_port_router(struct net_bridge_mcast_port *pmctx,
+                                unsigned long val)
 {
-       struct net_bridge_mcast *brmctx = &p->br->multicast_ctx;
-       struct net_bridge_mcast_port *pmctx = &p->multicast_ctx;
+       struct net_bridge_mcast *brmctx;
        unsigned long now = jiffies;
        int err = -EINVAL;
        bool del = false;
 
-       spin_lock(&p->br->multicast_lock);
+       brmctx = br_multicast_port_ctx_get_global(pmctx);
+       spin_lock(&brmctx->br->multicast_lock);
        if (pmctx->multicast_router == val) {
                /* Refresh the temp router port timer */
                if (pmctx->multicast_router == MDB_RTR_TYPE_TEMP) {
        }
        err = 0;
 unlock:
-       spin_unlock(&p->br->multicast_lock);
+       spin_unlock(&brmctx->br->multicast_lock);
 
        return err;
 }
 
        if (tb[IFLA_BRPORT_MULTICAST_ROUTER]) {
                u8 mcast_router = nla_get_u8(tb[IFLA_BRPORT_MULTICAST_ROUTER]);
 
-               err = br_multicast_set_port_router(p, mcast_router);
+               err = br_multicast_set_port_router(&p->multicast_ctx,
+                                                  mcast_router);
                if (err)
                        return err;
        }
 
                        struct net_bridge_mcast *brmctx,
                        bool local_rcv, bool local_orig);
 int br_multicast_set_router(struct net_bridge_mcast *brmctx, unsigned long val);
-int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val);
+int br_multicast_set_port_router(struct net_bridge_mcast_port *pmctx,
+                                unsigned long val);
 int br_multicast_toggle(struct net_bridge *br, unsigned long val,
                        struct netlink_ext_ack *extack);
 int br_multicast_set_querier(struct net_bridge_mcast *brmctx, unsigned long val);
 
 static int store_multicast_router(struct net_bridge_port *p,
                                      unsigned long v)
 {
-       return br_multicast_set_port_router(p, v);
+       return br_multicast_set_port_router(&p->multicast_ctx, v);
 }
 static BRPORT_ATTR(multicast_router, 0644, show_multicast_router,
                   store_multicast_router);