Lines Matching refs:req
539 struct mcast_req *req = NULL; in mlx4_ib_mcg_timeout_handler() local
546 req = list_first_entry(&group->pending_list, struct mcast_req, group_list); in mlx4_ib_mcg_timeout_handler()
547 list_del(&req->group_list); in mlx4_ib_mcg_timeout_handler()
548 list_del(&req->func_list); in mlx4_ib_mcg_timeout_handler()
549 --group->func[req->func].num_pend_reqs; in mlx4_ib_mcg_timeout_handler()
551 kfree(req); in mlx4_ib_mcg_timeout_handler()
581 struct mcast_req *req) in handle_leave_req() argument
585 if (req->clean) in handle_leave_req()
586 leave_mask = group->func[req->func].join_state; in handle_leave_req()
588 status = check_leave(group, req->func, leave_mask); in handle_leave_req()
590 leave_group(group, req->func, leave_mask); in handle_leave_req()
592 if (!req->clean) in handle_leave_req()
593 send_reply_to_slave(req->func, group, &req->sa_mad, status); in handle_leave_req()
594 --group->func[req->func].num_pend_reqs; in handle_leave_req()
595 list_del(&req->group_list); in handle_leave_req()
596 list_del(&req->func_list); in handle_leave_req()
597 kfree(req); in handle_leave_req()
602 struct mcast_req *req) in handle_join_req() argument
607 struct ib_sa_mcmember_data *sa_data = (struct ib_sa_mcmember_data *)req->sa_mad.data; in handle_join_req()
611 status = cmp_rec(&group->rec, sa_data, req->sa_mad.sa_hdr.comp_mask); in handle_join_req()
613 join_group(group, req->func, join_mask); in handle_join_req()
615 --group->func[req->func].num_pend_reqs; in handle_join_req()
616 send_reply_to_slave(req->func, group, &req->sa_mad, status); in handle_join_req()
617 list_del(&req->group_list); in handle_join_req()
618 list_del(&req->func_list); in handle_join_req()
619 kfree(req); in handle_join_req()
624 if (send_join_to_wire(group, &req->sa_mad)) { in handle_join_req()
625 --group->func[req->func].num_pend_reqs; in handle_join_req()
626 list_del(&req->group_list); in handle_join_req()
627 list_del(&req->func_list); in handle_join_req()
628 kfree(req); in handle_join_req()
641 struct mcast_req *req = NULL; in mlx4_ib_mcg_work_handler() local
670 req = list_first_entry(&group->pending_list, in mlx4_ib_mcg_work_handler()
673 if (req) { in mlx4_ib_mcg_work_handler()
674 send_reply_to_slave(req->func, group, &req->sa_mad, status); in mlx4_ib_mcg_work_handler()
675 --group->func[req->func].num_pend_reqs; in mlx4_ib_mcg_work_handler()
676 list_del(&req->group_list); in mlx4_ib_mcg_work_handler()
677 list_del(&req->func_list); in mlx4_ib_mcg_work_handler()
678 kfree(req); in mlx4_ib_mcg_work_handler()
706 req = list_first_entry(&group->pending_list, struct mcast_req, in mlx4_ib_mcg_work_handler()
708 sa_data = (struct ib_sa_mcmember_data *)req->sa_mad.data; in mlx4_ib_mcg_work_handler()
714 if (req->sa_mad.mad_hdr.method == IB_SA_METHOD_DELETE) in mlx4_ib_mcg_work_handler()
715 rc += handle_leave_req(group, req_join_state, req); in mlx4_ib_mcg_work_handler()
717 rc += handle_join_req(group, req_join_state, req); in mlx4_ib_mcg_work_handler()
747 struct mcast_req *req; in search_relocate_mgid0_group() local
765 req = list_first_entry(&group->pending_list, in search_relocate_mgid0_group()
767 --group->func[req->func].num_pend_reqs; in search_relocate_mgid0_group()
768 list_del(&req->group_list); in search_relocate_mgid0_group()
769 list_del(&req->func_list); in search_relocate_mgid0_group()
770 kfree(req); in search_relocate_mgid0_group()
869 static void queue_req(struct mcast_req *req) in queue_req() argument
871 struct mcast_group *group = req->group; in queue_req()
875 list_add_tail(&req->group_list, &group->pending_list); in queue_req()
876 list_add_tail(&req->func_list, &group->func[req->func].pending); in queue_req()
938 struct mcast_req *req; in mlx4_ib_mcg_multiplex_handler() local
948 req = kzalloc(sizeof *req, GFP_KERNEL); in mlx4_ib_mcg_multiplex_handler()
949 if (!req) in mlx4_ib_mcg_multiplex_handler()
952 req->func = slave; in mlx4_ib_mcg_multiplex_handler()
953 req->sa_mad = *sa_mad; in mlx4_ib_mcg_multiplex_handler()
959 kfree(req); in mlx4_ib_mcg_multiplex_handler()
968 kfree(req); in mlx4_ib_mcg_multiplex_handler()
972 req->group = group; in mlx4_ib_mcg_multiplex_handler()
973 queue_req(req); in mlx4_ib_mcg_multiplex_handler()
994 struct mcast_req *req = NULL; in sysfs_show_group() local
1009 req = list_first_entry(&group->pending_list, struct mcast_req, group_list); in sysfs_show_group()
1011 be64_to_cpu(req->sa_mad.mad_hdr.tid)); in sysfs_show_group()
1061 struct mcast_req *req, *tmp in force_clean_group() local
1063 list_for_each_entry_safe(req, tmp, &group->pending_list, group_list) { in force_clean_group()
1064 list_del(&req->group_list); in force_clean_group()
1065 kfree(req); in force_clean_group()
1154 static void build_leave_mad(struct mcast_req *req) in build_leave_mad() argument
1156 struct ib_sa_mad *mad = &req->sa_mad; in build_leave_mad()
1164 struct mcast_req *req, *tmp, *group_first = NULL; in clear_pending_reqs() local
1171 list_for_each_entry_safe(req, tmp, &group->func[vf].pending, func_list) { in clear_pending_reqs()
1173 if (group_first == req && in clear_pending_reqs()
1182 list_del(&req->group_list); in clear_pending_reqs()
1183 list_del(&req->func_list); in clear_pending_reqs()
1184 kfree(req); in clear_pending_reqs()
1197 struct mcast_req *req; in push_deleteing_req() local
1203 req = kzalloc(sizeof *req, GFP_KERNEL); in push_deleteing_req()
1204 if (!req) { in push_deleteing_req()
1212 kfree(req); in push_deleteing_req()
1217 req->clean = 1; in push_deleteing_req()
1218 req->func = slave; in push_deleteing_req()
1219 req->group = group; in push_deleteing_req()
1221 build_leave_mad(req); in push_deleteing_req()
1222 queue_req(req); in push_deleteing_req()