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)
44 mod_timer(&nb->t20timer, jiffies + nb->t20);
49 struct x25_neigh *nb = from_timer(nb, t, t20timer);
51 x25_transmit_restart_request(nb);
53 x25_start_t20timer(nb);
56 static inline void x25_stop_t20timer(struct x25_neigh *nb)
58 del_timer(&nb->t20timer);
64 void x25_link_control(struct sk_buff *skb, struct x25_neigh *nb,
71 switch (nb->state) {
76 nb->state = X25_LINK_STATE_3;
77 x25_transmit_restart_confirmation(nb);
80 x25_stop_t20timer(nb);
81 nb->state = X25_LINK_STATE_3;
85 x25_kill_by_neigh(nb);
87 x25_transmit_restart_confirmation(nb);
93 switch (nb->state) {
95 x25_stop_t20timer(nb);
96 nb->state = X25_LINK_STATE_3;
100 x25_kill_by_neigh(nb);
102 x25_transmit_restart_request(nb);
103 nb->state = X25_LINK_STATE_2;
104 x25_start_t20timer(nb);
124 if (nb->state == X25_LINK_STATE_3)
125 while ((skbn = skb_dequeue(&nb->queue)) != NULL)
126 x25_send_frame(skbn, nb);
132 static void x25_transmit_restart_request(struct x25_neigh *nb)
145 *dptr++ = nb->extended ? X25_GFI_EXTSEQ : X25_GFI_STDSEQ;
153 x25_send_frame(skb, nb);
159 static void x25_transmit_restart_confirmation(struct x25_neigh *nb)
172 *dptr++ = nb->extended ? X25_GFI_EXTSEQ : X25_GFI_STDSEQ;
178 x25_send_frame(skb, nb);
185 void x25_transmit_clear_request(struct x25_neigh *nb, unsigned int lci,
199 *dptr++ = ((lci >> 8) & 0x0F) | (nb->extended ?
209 x25_send_frame(skb, nb);
212 void x25_transmit_link(struct sk_buff *skb, struct x25_neigh *nb)
214 switch (nb->state) {
216 skb_queue_tail(&nb->queue, skb);
217 nb->state = X25_LINK_STATE_1;
218 x25_establish_link(nb);
222 skb_queue_tail(&nb->queue, skb);
225 x25_send_frame(skb, nb);
233 void x25_link_established(struct x25_neigh *nb)
235 switch (nb->state) {
238 x25_transmit_restart_request(nb);
239 nb->state = X25_LINK_STATE_2;
240 x25_start_t20timer(nb);
250 void x25_link_terminated(struct x25_neigh *nb)
252 nb->state = X25_LINK_STATE_0;
253 skb_queue_purge(&nb->queue);
254 x25_stop_t20timer(nb);
257 x25_kill_by_neigh(nb);
265 struct x25_neigh *nb = kmalloc(sizeof(*nb), GFP_ATOMIC);
267 if (!nb)
270 skb_queue_head_init(&nb->queue);
271 timer_setup(&nb->t20timer, x25_t20timer_expiry, 0);
274 nb->dev = dev;
275 nb->state = X25_LINK_STATE_0;
276 nb->extended = 0;
280 nb->global_facil_mask = X25_MASK_REVERSE |
284 nb->t20 = sysctl_x25_restart_request_timeout;
285 refcount_set(&nb->refcnt, 1);
288 list_add(&nb->node, &x25_neigh_list);
294 * @nb: - neigh to remove
299 static void __x25_remove_neigh(struct x25_neigh *nb)
301 if (nb->node.next) {
302 list_del(&nb->node);
303 x25_neigh_put(nb);
312 struct x25_neigh *nb;
318 nb = list_entry(entry, struct x25_neigh, node);
320 if (nb->dev == dev) {
321 __x25_remove_neigh(nb);
334 struct x25_neigh *nb, *use = NULL;
337 list_for_each_entry(nb, &x25_neigh_list, node) {
338 if (nb->dev == dev) {
339 use = nb;
356 struct x25_neigh *nb;
371 if ((nb = x25_get_neigh(dev)) == NULL)
378 x25_subscr.extended = nb->extended;
379 x25_subscr.global_facil_mask = nb->global_facil_mask;
388 nb->extended = x25_subscr.extended;
389 nb->global_facil_mask = x25_subscr.global_facil_mask;
393 x25_neigh_put(nb);
407 struct x25_neigh *nb;
415 nb = list_entry(entry, struct x25_neigh, node);
416 dev = nb->dev;
417 __x25_remove_neigh(nb);