Lines Matching refs:sub

65 static void subscr_send_event(struct tipc_subscription *sub, u32 found_lower,  in subscr_send_event()  argument
69 struct tipc_net *tn = net_generic(sub->net, tipc_net_id); in subscr_send_event()
70 struct tipc_subscriber *subscriber = sub->subscriber; in subscr_send_event()
73 msg_sect.iov_base = (void *)&sub->evt; in subscr_send_event()
75 sub->evt.event = htohl(event, sub->swap); in subscr_send_event()
76 sub->evt.found_lower = htohl(found_lower, sub->swap); in subscr_send_event()
77 sub->evt.found_upper = htohl(found_upper, sub->swap); in subscr_send_event()
78 sub->evt.port.ref = htohl(port_ref, sub->swap); in subscr_send_event()
79 sub->evt.port.node = htohl(node, sub->swap); in subscr_send_event()
89 int tipc_subscr_overlap(struct tipc_subscription *sub, u32 found_lower, in tipc_subscr_overlap() argument
92 if (found_lower < sub->seq.lower) in tipc_subscr_overlap()
93 found_lower = sub->seq.lower; in tipc_subscr_overlap()
94 if (found_upper > sub->seq.upper) in tipc_subscr_overlap()
95 found_upper = sub->seq.upper; in tipc_subscr_overlap()
106 void tipc_subscr_report_overlap(struct tipc_subscription *sub, u32 found_lower, in tipc_subscr_report_overlap() argument
110 if (!tipc_subscr_overlap(sub, found_lower, found_upper)) in tipc_subscr_report_overlap()
112 if (!must && !(sub->filter & TIPC_SUB_PORTS)) in tipc_subscr_report_overlap()
115 subscr_send_event(sub, found_lower, found_upper, event, port_ref, node); in tipc_subscr_report_overlap()
120 struct tipc_subscription *sub = (struct tipc_subscription *)data; in subscr_timeout() local
121 struct tipc_subscriber *subscriber = sub->subscriber; in subscr_timeout()
122 struct tipc_net *tn = net_generic(sub->net, tipc_net_id); in subscr_timeout()
128 if (sub->timeout == TIPC_WAIT_FOREVER) { in subscr_timeout()
134 tipc_nametbl_unsubscribe(sub); in subscr_timeout()
137 list_del(&sub->subscription_list); in subscr_timeout()
142 subscr_send_event(sub, sub->evt.s.seq.lower, sub->evt.s.seq.upper, in subscr_timeout()
146 kfree(sub); in subscr_timeout()
155 static void subscr_del(struct tipc_subscription *sub) in subscr_del() argument
157 struct tipc_net *tn = net_generic(sub->net, tipc_net_id); in subscr_del()
159 tipc_nametbl_unsubscribe(sub); in subscr_del()
160 list_del(&sub->subscription_list); in subscr_del()
161 kfree(sub); in subscr_del()
167 struct tipc_subscription *sub; in subscr_release() local
173 list_for_each_entry_safe(sub, sub_temp, &subscriber->subscription_list, in subscr_release()
175 if (sub->timeout != TIPC_WAIT_FOREVER) { in subscr_release()
177 del_timer_sync(&sub->timer); in subscr_release()
180 subscr_del(sub); in subscr_release()
200 struct tipc_subscription *sub; in subscr_cancel() local
205 list_for_each_entry_safe(sub, sub_temp, &subscriber->subscription_list, in subscr_cancel()
207 if (!memcmp(s, &sub->evt.s, sizeof(struct tipc_subscr))) { in subscr_cancel()
216 if (sub->timeout != TIPC_WAIT_FOREVER) { in subscr_cancel()
217 sub->timeout = TIPC_WAIT_FOREVER; in subscr_cancel()
219 del_timer_sync(&sub->timer); in subscr_cancel()
222 subscr_del(sub); in subscr_cancel()
235 struct tipc_subscription *sub; in subscr_subscribe() local
256 sub = kmalloc(sizeof(*sub), GFP_ATOMIC); in subscr_subscribe()
257 if (!sub) { in subscr_subscribe()
263 sub->net = net; in subscr_subscribe()
264 sub->seq.type = htohl(s->seq.type, swap); in subscr_subscribe()
265 sub->seq.lower = htohl(s->seq.lower, swap); in subscr_subscribe()
266 sub->seq.upper = htohl(s->seq.upper, swap); in subscr_subscribe()
267 sub->timeout = msecs_to_jiffies(htohl(s->timeout, swap)); in subscr_subscribe()
268 sub->filter = htohl(s->filter, swap); in subscr_subscribe()
269 if ((!(sub->filter & TIPC_SUB_PORTS) == in subscr_subscribe()
270 !(sub->filter & TIPC_SUB_SERVICE)) || in subscr_subscribe()
271 (sub->seq.lower > sub->seq.upper)) { in subscr_subscribe()
273 kfree(sub); in subscr_subscribe()
276 list_add(&sub->subscription_list, &subscriber->subscription_list); in subscr_subscribe()
277 sub->subscriber = subscriber; in subscr_subscribe()
278 sub->swap = swap; in subscr_subscribe()
279 memcpy(&sub->evt.s, s, sizeof(struct tipc_subscr)); in subscr_subscribe()
281 if (sub->timeout != TIPC_WAIT_FOREVER) { in subscr_subscribe()
282 setup_timer(&sub->timer, subscr_timeout, (unsigned long)sub); in subscr_subscribe()
283 mod_timer(&sub->timer, jiffies + sub->timeout); in subscr_subscribe()
285 *sub_p = sub; in subscr_subscribe()
301 struct tipc_subscription *sub = NULL; in subscr_conn_msg_event() local
305 if (subscr_subscribe(net, (struct tipc_subscr *)buf, subscriber, &sub)) in subscr_conn_msg_event()
308 tipc_nametbl_subscribe(sub); in subscr_conn_msg_event()