• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/net/netrom/

Lines Matching refs:nr_neigh

64 static struct nr_neigh *nr_neigh_get_dev(ax25_address *callsign,
67 struct nr_neigh *found = NULL;
68 struct nr_neigh *nr_neigh;
72 nr_neigh_for_each(nr_neigh, node, &nr_neigh_list)
73 if (ax25cmp(callsign, &nr_neigh->callsign) == 0 &&
74 nr_neigh->dev == dev) {
75 nr_neigh_hold(nr_neigh);
76 found = nr_neigh;
83 static void nr_remove_neigh(struct nr_neigh *);
94 struct nr_neigh *nr_neigh;
106 nr_neigh = nr_neigh_get_dev(ax25, dev);
114 if (nr_neigh != NULL && nr_neigh->failed != 0 && quality == 0) {
122 if (nr_nodet->routes[i].neighbour == nr_neigh)
130 if (nr_neigh != NULL)
131 nr_neigh->failed = 0;
133 if (quality == 0 && nr_neigh != NULL && nr_node != NULL) {
134 nr_neigh_put(nr_neigh);
139 if (nr_neigh == NULL) {
140 if ((nr_neigh = kmalloc(sizeof(*nr_neigh), GFP_ATOMIC)) == NULL) {
146 nr_neigh->callsign = *ax25;
147 nr_neigh->digipeat = NULL;
148 nr_neigh->ax25 = NULL;
149 nr_neigh->dev = dev;
150 nr_neigh->quality = sysctl_netrom_default_path_quality;
151 nr_neigh->locked = 0;
152 nr_neigh->count = 0;
153 nr_neigh->number = nr_neigh_no++;
154 nr_neigh->failed = 0;
155 atomic_set(&nr_neigh->refcount, 1);
158 nr_neigh->digipeat = kmemdup(ax25_digi,
161 if (nr_neigh->digipeat == NULL) {
162 kfree(nr_neigh);
170 hlist_add_head(&nr_neigh->neigh_node, &nr_neigh_list);
171 nr_neigh_hold(nr_neigh);
175 if (quality != 0 && ax25cmp(nr, ax25) == 0 && !nr_neigh->locked)
176 nr_neigh->quality = quality;
180 if (nr_neigh)
181 nr_neigh_put(nr_neigh);
195 nr_node->routes[0].neighbour = nr_neigh;
197 nr_neigh_hold(nr_neigh);
198 nr_neigh->count++;
213 if (nr_node->routes[i].neighbour == nr_neigh) {
229 nr_node->routes[0].neighbour = nr_neigh;
233 nr_neigh_hold(nr_neigh);
234 nr_neigh->count++;
246 nr_node->routes[2].neighbour = nr_neigh;
248 nr_neigh_hold(nr_neigh);
249 nr_neigh->count++;
302 if (nr_node->routes[i].neighbour == nr_neigh) {
309 nr_neigh_put(nr_neigh);
331 static inline void __nr_remove_neigh(struct nr_neigh *nr_neigh)
333 hlist_del_init(&nr_neigh->neigh_node);
334 nr_neigh_put(nr_neigh);
340 static void nr_remove_neigh(struct nr_neigh *nr_neigh)
343 __nr_remove_neigh(nr_neigh);
354 struct nr_neigh *nr_neigh;
362 nr_neigh = nr_neigh_get_dev(neighbour, dev);
364 if (nr_neigh == NULL) {
371 if (nr_node->routes[i].neighbour == nr_neigh) {
372 nr_neigh->count--;
373 nr_neigh_put(nr_neigh);
375 if (nr_neigh->count == 0 && !nr_neigh->locked)
376 nr_remove_neigh(nr_neigh);
377 nr_neigh_put(nr_neigh);
399 nr_neigh_put(nr_neigh);
412 struct nr_neigh *nr_neigh;
414 nr_neigh = nr_neigh_get_dev(callsign, dev);
415 if (nr_neigh) {
416 nr_neigh->quality = quality;
417 nr_neigh->locked = 1;
418 nr_neigh_put(nr_neigh);
422 if ((nr_neigh = kmalloc(sizeof(*nr_neigh), GFP_ATOMIC)) == NULL)
425 nr_neigh->callsign = *callsign;
426 nr_neigh->digipeat = NULL;
427 nr_neigh->ax25 = NULL;
428 nr_neigh->dev = dev;
429 nr_neigh->quality = quality;
430 nr_neigh->locked = 1;
431 nr_neigh->count = 0;
432 nr_neigh->number = nr_neigh_no++;
433 nr_neigh->failed = 0;
434 atomic_set(&nr_neigh->refcount, 1);
437 nr_neigh->digipeat = kmemdup(ax25_digi, sizeof(*ax25_digi),
439 if (nr_neigh->digipeat == NULL) {
440 kfree(nr_neigh);
446 hlist_add_head(&nr_neigh->neigh_node, &nr_neigh_list);
459 struct nr_neigh *nr_neigh;
461 nr_neigh = nr_neigh_get_dev(callsign, dev);
463 if (nr_neigh == NULL) return -EINVAL;
465 nr_neigh->quality = quality;
466 nr_neigh->locked = 0;
468 if (nr_neigh->count == 0)
469 nr_remove_neigh(nr_neigh);
470 nr_neigh_put(nr_neigh);
482 struct nr_neigh *nr_neigh;
496 nr_neigh = s->routes[i].neighbour;
498 nr_neigh->count--;
499 nr_neigh_put(nr_neigh);
501 if (nr_neigh->count == 0 && !nr_neigh->locked)
502 nr_remove_neigh(nr_neigh);
537 struct nr_neigh *s;
727 struct nr_neigh *s, *nr_neigh = NULL;
735 nr_neigh = s;
741 if (nr_neigh == NULL)
744 nr_neigh->ax25 = NULL;
747 if (++nr_neigh->failed < sysctl_netrom_link_fails_count) {
748 nr_neigh_put(nr_neigh);
755 nr_node->routes[nr_node->which].neighbour == nr_neigh)
760 nr_neigh_put(nr_neigh);
770 struct nr_neigh *nr_neigh;
818 nr_neigh = nr_node->routes[nr_node->which].neighbour;
842 ax25s = ax25_send_frame(skb, 256, (ax25_address *)dev->dev_addr, &nr_neigh->callsign, nr_neigh->digipeat, nr_neigh->dev);
843 if (nr_neigh->ax25 && ax25s) {
847 nr_neigh->ax25 = ax25s;
850 ret = (nr_neigh->ax25 != NULL);
947 struct nr_neigh *nr_neigh;
955 nr_neigh_for_each(nr_neigh, node, &nr_neigh_list) {
957 return nr_neigh;
969 : ((struct nr_neigh *)v)->neigh_node.next;
971 return hlist_entry(node, struct nr_neigh, neigh_node);
987 struct nr_neigh *nr_neigh = v;
990 nr_neigh->number,
991 ax2asc(buf, &nr_neigh->callsign),
992 nr_neigh->dev ? nr_neigh->dev->name : "???",
993 nr_neigh->quality,
994 nr_neigh->locked,
995 nr_neigh->count,
996 nr_neigh->failed);
998 if (nr_neigh->digipeat != NULL) {
999 for (i = 0; i < nr_neigh->digipeat->ndigi; i++)
1001 ax2asc(buf, &nr_neigh->digipeat->calls[i]));
1036 struct nr_neigh *s = NULL;