void rxe_cq_cleanup(struct rxe_pool_elem *arg);
 
 /* rxe_mcast.c */
-void rxe_drop_all_mcast_groups(struct rxe_qp *qp);
 void rxe_mc_cleanup(struct rxe_pool_elem *arg);
 int rxe_attach_mcast(struct ib_qp *ibqp, union ib_gid *mgid, u16 mlid);
 int rxe_detach_mcast(struct ib_qp *ibqp, union ib_gid *mgid, u16 mlid);
 
        return -EINVAL;
 }
 
-void rxe_drop_all_mcast_groups(struct rxe_qp *qp)
-{
-       struct rxe_mcg *grp;
-       struct rxe_mca *elem;
-
-       while (1) {
-               spin_lock_bh(&qp->grp_lock);
-               if (list_empty(&qp->grp_list)) {
-                       spin_unlock_bh(&qp->grp_lock);
-                       break;
-               }
-               elem = list_first_entry(&qp->grp_list, struct rxe_mca,
-                                       grp_list);
-               list_del(&elem->grp_list);
-               spin_unlock_bh(&qp->grp_lock);
-
-               grp = elem->grp;
-               spin_lock_bh(&grp->mcg_lock);
-               list_del(&elem->qp_list);
-               grp->num_qp--;
-               spin_unlock_bh(&grp->mcg_lock);
-               rxe_drop_ref(grp);
-               rxe_drop_ref(elem);
-       }
-}
-
 void rxe_mc_cleanup(struct rxe_pool_elem *elem)
 {
        struct rxe_mcg *grp = container_of(elem, typeof(*grp), elem);
 
 {
        struct rxe_qp *qp = container_of(work, typeof(*qp), cleanup_work.work);
 
-       rxe_drop_all_mcast_groups(qp);
-
        if (qp->sq.queue)
                rxe_queue_cleanup(qp->sq.queue);