Merge remote-tracking branch 'asoc/fix/core' into asoc-linus
[deliverable/linux.git] / net / core / neighbour.c
index 510cd62fcb9963f92591e03b6c4d40502f2f37bf..cf26e04c4046ded822a1e449e5a6c036ca2af38e 100644 (file)
@@ -473,7 +473,7 @@ struct neighbour *__neigh_create(struct neigh_table *tbl, const void *pkey,
        }
 
        if (dev->netdev_ops->ndo_neigh_construct) {
-               error = dev->netdev_ops->ndo_neigh_construct(n);
+               error = dev->netdev_ops->ndo_neigh_construct(dev, n);
                if (error < 0) {
                        rc = ERR_PTR(error);
                        goto out_neigh_release;
@@ -701,7 +701,7 @@ void neigh_destroy(struct neighbour *neigh)
        neigh->arp_queue_len_bytes = 0;
 
        if (dev->netdev_ops->ndo_neigh_destroy)
-               dev->netdev_ops->ndo_neigh_destroy(neigh);
+               dev->netdev_ops->ndo_neigh_destroy(dev, neigh);
 
        dev_put(dev);
        neigh_parms_put(neigh->parms);
@@ -1060,8 +1060,6 @@ static void neigh_update_hhs(struct neighbour *neigh)
        NEIGH_UPDATE_F_WEAK_OVERRIDE will suspect existing "connected"
                                lladdr instead of overriding it
                                if it is different.
-                               It also allows to retain current state
-                               if lladdr is unchanged.
        NEIGH_UPDATE_F_ADMIN    means that the change is administrative.
 
        NEIGH_UPDATE_F_OVERRIDE_ISROUTER allows to override existing
@@ -1150,10 +1148,7 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new,
                        } else
                                goto out;
                } else {
-                       if (lladdr == neigh->ha && new == NUD_STALE &&
-                           ((flags & NEIGH_UPDATE_F_WEAK_OVERRIDE) ||
-                            (old & NUD_CONNECTED))
-                           )
+                       if (lladdr == neigh->ha && new == NUD_STALE)
                                new = old;
                }
        }
@@ -2047,6 +2042,7 @@ static int neightbl_set(struct sk_buff *skb, struct nlmsghdr *nlh)
                        case NDTPA_DELAY_PROBE_TIME:
                                NEIGH_VAR_SET(p, DELAY_PROBE_TIME,
                                              nla_get_msecs(tbp[i]));
+                               call_netevent_notifiers(NETEVENT_DELAY_PROBE_TIME_UPDATE, p);
                                break;
                        case NDTPA_RETRANS_TIME:
                                NEIGH_VAR_SET(p, RETRANS_TIME,
@@ -2930,6 +2926,7 @@ static void neigh_proc_update(struct ctl_table *ctl, int write)
                return;
 
        set_bit(index, p->data_state);
+       call_netevent_notifiers(NETEVENT_DELAY_PROBE_TIME_UPDATE, p);
        if (!dev) /* NULL dev means this is default value */
                neigh_copy_dflt_parms(net, p, index);
 }
This page took 0.031144 seconds and 5 git commands to generate.