Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 278299
b: refs/heads/master
c: 596b9b6
h: refs/heads/master
i:
  278297: 46b442a
  278295: e8d4b73
v: v3
  • Loading branch information
David Miller committed Nov 30, 2011
1 parent 3e938ed commit d9a62c8
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5b8b0060cbd6332ae5d1fa0bec0e8e211248d0e7
refs/heads/master: 596b9b68ef118f7409afbc78487263e08ef96261
2 changes: 2 additions & 0 deletions trunk/drivers/infiniband/ulp/ipoib/ipoib_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1218,6 +1218,8 @@ static struct net_device *ipoib_add_port(const char *format,
priv->dev->mtu = IPOIB_UD_MTU(priv->max_ib_mtu);
priv->mcast_mtu = priv->admin_mtu = priv->dev->mtu;

priv->dev->neigh_priv_len = sizeof(struct ipoib_neigh);

result = ib_query_pkey(hca, port, 0, &priv->pkey);
if (result) {
printk(KERN_WARNING "%s: ib_query_pkey port %d failed (ret = %d)\n",
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/netdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -1080,6 +1080,7 @@ struct net_device {
unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */
unsigned char addr_assign_type; /* hw address assignment type */
unsigned char addr_len; /* hardware address length */
unsigned char neigh_priv_len;
unsigned short dev_id; /* for shared network cards */

spinlock_t addr_list_lock;
Expand Down
1 change: 1 addition & 0 deletions trunk/net/atm/clip.c
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,7 @@ static void clip_setup(struct net_device *dev)
{
dev->netdev_ops = &clip_netdev_ops;
dev->type = ARPHRD_ATM;
dev->neigh_priv_len = sizeof(struct atmarp_entry);
dev->hard_header_len = RFC1483LLC_LEN;
dev->mtu = RFC1626_MTU;
dev->tx_queue_len = 100; /* "normal" queue (packets) */
Expand Down
14 changes: 11 additions & 3 deletions trunk/net/core/neighbour.c
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev)
}
EXPORT_SYMBOL(neigh_ifdown);

static struct neighbour *neigh_alloc(struct neigh_table *tbl)
static struct neighbour *neigh_alloc(struct neigh_table *tbl, struct net_device *dev)
{
struct neighbour *n = NULL;
unsigned long now = jiffies;
Expand All @@ -288,7 +288,15 @@ static struct neighbour *neigh_alloc(struct neigh_table *tbl)
goto out_entries;
}

n = kzalloc(tbl->entry_size, GFP_ATOMIC);
if (tbl->entry_size)
n = kzalloc(tbl->entry_size, GFP_ATOMIC);
else {
int sz = sizeof(*n) + tbl->key_len;

sz = ALIGN(sz, NEIGH_PRIV_ALIGN);
sz += dev->neigh_priv_len;
n = kzalloc(sz, GFP_ATOMIC);
}
if (!n)
goto out_entries;

Expand Down Expand Up @@ -463,7 +471,7 @@ struct neighbour *neigh_create(struct neigh_table *tbl, const void *pkey,
u32 hash_val;
int key_len = tbl->key_len;
int error;
struct neighbour *n1, *rc, *n = neigh_alloc(tbl);
struct neighbour *n1, *rc, *n = neigh_alloc(tbl, dev);
struct neigh_hash_table *nht;

if (!n) {
Expand Down

0 comments on commit d9a62c8

Please sign in to comment.