Lines Matching defs:neigh
461 dummy_neigh_update(struct toedev *dev, struct rtentry *neigh)
864 neigh_suspect(struct ifnet *neigh)
868 neigh->output = neigh->ops->output;
870 for (hh = neigh->hh; hh; hh = hh->hh_next)
871 hh->hh_output = neigh->ops->output;
875 neigh_connect(struct ifnet *neigh)
879 neigh->output = neigh->ops->connected_output;
881 for (hh = neigh->hh; hh; hh = hh->hh_next)
882 hh->hh_output = neigh->ops->hh_output;
898 struct neighbour *neigh = (struct neighbour *)arg;
902 write_lock(&neigh->lock);
904 state = neigh->nud_state;
910 log(LOG_WARNING, "neigh: timer & !nud_in_timer\n");
917 neigh->confirmed +
918 neigh->parms->reachable_time)) {
919 next = neigh->confirmed + neigh->parms->reachable_time;
921 neigh->used +
922 neigh->parms->delay_probe_time)) {
923 neigh->nud_state = NUD_DELAY;
924 neigh->updated = jiffies;
925 neigh_suspect(neigh);
926 next = now + neigh->parms->delay_probe_time;
928 neigh->nud_state = NUD_STALE;
929 neigh->updated = jiffies;
930 neigh_suspect(neigh);
931 cxgb_neigh_update(neigh);
935 neigh->confirmed +
936 neigh->parms->delay_probe_time)) {
937 neigh->nud_state = NUD_REACHABLE;
938 neigh->updated = jiffies;
939 neigh_connect(neigh);
940 cxgb_neigh_update(neigh);
941 next = neigh->confirmed + neigh->parms->reachable_time;
943 neigh->nud_state = NUD_PROBE;
944 neigh->updated = jiffies;
945 atomic_set_int(&neigh->probes, 0);
946 next = now + neigh->parms->retrans_time;
950 next = now + neigh->parms->retrans_time;
956 if ((neigh->nud_state & (NUD_INCOMPLETE | NUD_PROBE)) &&
957 neigh->probes >= neigh_max_probes(neigh)) {
960 neigh->nud_state = NUD_FAILED;
961 neigh->updated = jiffies;
963 cxgb_neigh_update(neigh);
964 NEIGH_CACHE_STAT_INC(neigh->tbl, res_failed);
971 while (neigh->nud_state == NUD_FAILED &&
972 (skb = __skb_dequeue(&neigh->arp_queue)) != NULL) {
973 write_unlock(&neigh->lock);
974 neigh->ops->error_report(neigh, skb);
975 write_lock(&neigh->lock);
977 skb_queue_purge(&neigh->arp_queue);
980 if (neigh->nud_state & NUD_IN_TIMER) {
983 if (!mod_timer(&neigh->timer, next))
984 neigh_hold(neigh);
986 if (neigh->nud_state & (NUD_INCOMPLETE | NUD_PROBE)) {
987 struct mbuf *m = skb_peek(&neigh->arp_queue);
989 write_unlock(&neigh->lock);
990 neigh->ops->solicit(neigh, skb);
991 atomic_add_int(&neigh->probes, 1);
996 write_unlock(&neigh->lock);
1000 if (notify && neigh->parms->app_probes)
1001 neigh_app_notify(neigh);
1003 neigh_release(neigh);
1007 arp_constructor_offload(struct neighbour *neigh)
1009 if (neigh->ifp && is_offloading(neigh->ifp))
1010 neigh->timer.function = neigh_timer_handler_offload;
1011 return orig_arp_constructor(neigh);
1019 neigh_update_offload(struct neighbour *neigh, const u8 *lladdr,
1022 write_lock(&neigh->lock);
1023 cxgb_neigh_update(neigh);
1024 write_unlock(&neigh->lock);