Lines Matching refs:nb
36 static void x25_transmit_restart_confirmation(struct x25_neigh *nb);
37 static void x25_transmit_restart_request(struct x25_neigh *nb);
42 static inline void x25_start_t20timer(struct x25_neigh *nb) in x25_start_t20timer() argument
44 mod_timer(&nb->t20timer, jiffies + nb->t20); in x25_start_t20timer()
49 struct x25_neigh *nb = from_timer(nb, t, t20timer); in x25_t20timer_expiry() local
51 x25_transmit_restart_request(nb); in x25_t20timer_expiry()
53 x25_start_t20timer(nb); in x25_t20timer_expiry()
56 static inline void x25_stop_t20timer(struct x25_neigh *nb) in x25_stop_t20timer() argument
58 del_timer(&nb->t20timer); in x25_stop_t20timer()
61 static inline int x25_t20timer_pending(struct x25_neigh *nb) in x25_t20timer_pending() argument
63 return timer_pending(&nb->t20timer); in x25_t20timer_pending()
69 void x25_link_control(struct sk_buff *skb, struct x25_neigh *nb, in x25_link_control() argument
77 confirm = !x25_t20timer_pending(nb); in x25_link_control()
78 x25_stop_t20timer(nb); in x25_link_control()
79 nb->state = X25_LINK_STATE_3; in x25_link_control()
81 x25_transmit_restart_confirmation(nb); in x25_link_control()
85 x25_stop_t20timer(nb); in x25_link_control()
86 nb->state = X25_LINK_STATE_3; in x25_link_control()
104 if (nb->state == X25_LINK_STATE_3) in x25_link_control()
105 while ((skbn = skb_dequeue(&nb->queue)) != NULL) in x25_link_control()
106 x25_send_frame(skbn, nb); in x25_link_control()
112 static void x25_transmit_restart_request(struct x25_neigh *nb) in x25_transmit_restart_request() argument
125 *dptr++ = nb->extended ? X25_GFI_EXTSEQ : X25_GFI_STDSEQ; in x25_transmit_restart_request()
133 x25_send_frame(skb, nb); in x25_transmit_restart_request()
139 static void x25_transmit_restart_confirmation(struct x25_neigh *nb) in x25_transmit_restart_confirmation() argument
152 *dptr++ = nb->extended ? X25_GFI_EXTSEQ : X25_GFI_STDSEQ; in x25_transmit_restart_confirmation()
158 x25_send_frame(skb, nb); in x25_transmit_restart_confirmation()
165 void x25_transmit_clear_request(struct x25_neigh *nb, unsigned int lci, in x25_transmit_clear_request() argument
179 *dptr++ = ((lci >> 8) & 0x0F) | (nb->extended ? in x25_transmit_clear_request()
189 x25_send_frame(skb, nb); in x25_transmit_clear_request()
192 void x25_transmit_link(struct sk_buff *skb, struct x25_neigh *nb) in x25_transmit_link() argument
194 switch (nb->state) { in x25_transmit_link()
196 skb_queue_tail(&nb->queue, skb); in x25_transmit_link()
197 nb->state = X25_LINK_STATE_1; in x25_transmit_link()
198 x25_establish_link(nb); in x25_transmit_link()
202 skb_queue_tail(&nb->queue, skb); in x25_transmit_link()
205 x25_send_frame(skb, nb); in x25_transmit_link()
213 void x25_link_established(struct x25_neigh *nb) in x25_link_established() argument
215 switch (nb->state) { in x25_link_established()
217 nb->state = X25_LINK_STATE_2; in x25_link_established()
220 x25_transmit_restart_request(nb); in x25_link_established()
221 nb->state = X25_LINK_STATE_2; in x25_link_established()
222 x25_start_t20timer(nb); in x25_link_established()
232 void x25_link_terminated(struct x25_neigh *nb) in x25_link_terminated() argument
234 nb->state = X25_LINK_STATE_0; in x25_link_terminated()
236 x25_kill_by_neigh(nb); in x25_link_terminated()
244 struct x25_neigh *nb = kmalloc(sizeof(*nb), GFP_ATOMIC); in x25_link_device_up() local
246 if (!nb) in x25_link_device_up()
249 skb_queue_head_init(&nb->queue); in x25_link_device_up()
250 timer_setup(&nb->t20timer, x25_t20timer_expiry, 0); in x25_link_device_up()
253 nb->dev = dev; in x25_link_device_up()
254 nb->state = X25_LINK_STATE_0; in x25_link_device_up()
255 nb->extended = 0; in x25_link_device_up()
259 nb->global_facil_mask = X25_MASK_REVERSE | in x25_link_device_up()
263 nb->t20 = sysctl_x25_restart_request_timeout; in x25_link_device_up()
264 refcount_set(&nb->refcnt, 1); in x25_link_device_up()
267 list_add(&nb->node, &x25_neigh_list); in x25_link_device_up()
278 static void __x25_remove_neigh(struct x25_neigh *nb) in __x25_remove_neigh() argument
280 skb_queue_purge(&nb->queue); in __x25_remove_neigh()
281 x25_stop_t20timer(nb); in __x25_remove_neigh()
283 if (nb->node.next) { in __x25_remove_neigh()
284 list_del(&nb->node); in __x25_remove_neigh()
285 x25_neigh_put(nb); in __x25_remove_neigh()
294 struct x25_neigh *nb; in x25_link_device_down() local
300 nb = list_entry(entry, struct x25_neigh, node); in x25_link_device_down()
302 if (nb->dev == dev) { in x25_link_device_down()
303 __x25_remove_neigh(nb); in x25_link_device_down()
316 struct x25_neigh *nb, *use = NULL; in x25_get_neigh() local
321 nb = list_entry(entry, struct x25_neigh, node); in x25_get_neigh()
323 if (nb->dev == dev) { in x25_get_neigh()
324 use = nb; in x25_get_neigh()
341 struct x25_neigh *nb; in x25_subscr_ioctl() local
356 if ((nb = x25_get_neigh(dev)) == NULL) in x25_subscr_ioctl()
363 x25_subscr.extended = nb->extended; in x25_subscr_ioctl()
364 x25_subscr.global_facil_mask = nb->global_facil_mask; in x25_subscr_ioctl()
373 nb->extended = x25_subscr.extended; in x25_subscr_ioctl()
374 nb->global_facil_mask = x25_subscr.global_facil_mask; in x25_subscr_ioctl()
378 x25_neigh_put(nb); in x25_subscr_ioctl()
392 struct x25_neigh *nb; in x25_link_free() local
400 nb = list_entry(entry, struct x25_neigh, node); in x25_link_free()
401 dev = nb->dev; in x25_link_free()
402 __x25_remove_neigh(nb); in x25_link_free()