提交 18552b8f 编写于 作者: L Linus Torvalds

Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [NEIGH]: Fix IP-over-ATM and ARP interaction.
  [TG3]: ethtool always report port is TP.
...@@ -7653,21 +7653,23 @@ static int tg3_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) ...@@ -7653,21 +7653,23 @@ static int tg3_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
cmd->supported |= (SUPPORTED_1000baseT_Half | cmd->supported |= (SUPPORTED_1000baseT_Half |
SUPPORTED_1000baseT_Full); SUPPORTED_1000baseT_Full);
if (!(tp->tg3_flags2 & TG3_FLG2_ANY_SERDES)) if (!(tp->tg3_flags2 & TG3_FLG2_ANY_SERDES)) {
cmd->supported |= (SUPPORTED_100baseT_Half | cmd->supported |= (SUPPORTED_100baseT_Half |
SUPPORTED_100baseT_Full | SUPPORTED_100baseT_Full |
SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Half |
SUPPORTED_10baseT_Full | SUPPORTED_10baseT_Full |
SUPPORTED_MII); SUPPORTED_MII);
else cmd->port = PORT_TP;
} else {
cmd->supported |= SUPPORTED_FIBRE; cmd->supported |= SUPPORTED_FIBRE;
cmd->port = PORT_FIBRE;
}
cmd->advertising = tp->link_config.advertising; cmd->advertising = tp->link_config.advertising;
if (netif_running(dev)) { if (netif_running(dev)) {
cmd->speed = tp->link_config.active_speed; cmd->speed = tp->link_config.active_speed;
cmd->duplex = tp->link_config.active_duplex; cmd->duplex = tp->link_config.active_duplex;
} }
cmd->port = 0;
cmd->phy_address = PHY_ADDR; cmd->phy_address = PHY_ADDR;
cmd->transceiver = 0; cmd->transceiver = 0;
cmd->autoneg = tp->link_config.autoneg; cmd->autoneg = tp->link_config.autoneg;
......
...@@ -211,6 +211,7 @@ struct neigh_table ...@@ -211,6 +211,7 @@ struct neigh_table
#define NEIGH_UPDATE_F_ADMIN 0x80000000 #define NEIGH_UPDATE_F_ADMIN 0x80000000
extern void neigh_table_init(struct neigh_table *tbl); extern void neigh_table_init(struct neigh_table *tbl);
extern void neigh_table_init_no_netlink(struct neigh_table *tbl);
extern int neigh_table_clear(struct neigh_table *tbl); extern int neigh_table_clear(struct neigh_table *tbl);
extern struct neighbour * neigh_lookup(struct neigh_table *tbl, extern struct neighbour * neigh_lookup(struct neigh_table *tbl,
const void *pkey, const void *pkey,
......
...@@ -963,7 +963,7 @@ static struct file_operations arp_seq_fops = { ...@@ -963,7 +963,7 @@ static struct file_operations arp_seq_fops = {
static int __init atm_clip_init(void) static int __init atm_clip_init(void)
{ {
struct proc_dir_entry *p; struct proc_dir_entry *p;
neigh_table_init(&clip_tbl); neigh_table_init_no_netlink(&clip_tbl);
clip_tbl_hook = &clip_tbl; clip_tbl_hook = &clip_tbl;
register_atm_ioctl(&clip_ioctl_ops); register_atm_ioctl(&clip_ioctl_ops);
......
...@@ -1326,8 +1326,7 @@ void neigh_parms_destroy(struct neigh_parms *parms) ...@@ -1326,8 +1326,7 @@ void neigh_parms_destroy(struct neigh_parms *parms)
kfree(parms); kfree(parms);
} }
void neigh_table_init_no_netlink(struct neigh_table *tbl)
void neigh_table_init(struct neigh_table *tbl)
{ {
unsigned long now = jiffies; unsigned long now = jiffies;
unsigned long phsize; unsigned long phsize;
...@@ -1383,10 +1382,27 @@ void neigh_table_init(struct neigh_table *tbl) ...@@ -1383,10 +1382,27 @@ void neigh_table_init(struct neigh_table *tbl)
tbl->last_flush = now; tbl->last_flush = now;
tbl->last_rand = now + tbl->parms.reachable_time * 20; tbl->last_rand = now + tbl->parms.reachable_time * 20;
}
void neigh_table_init(struct neigh_table *tbl)
{
struct neigh_table *tmp;
neigh_table_init_no_netlink(tbl);
write_lock(&neigh_tbl_lock); write_lock(&neigh_tbl_lock);
for (tmp = neigh_tables; tmp; tmp = tmp->next) {
if (tmp->family == tbl->family)
break;
}
tbl->next = neigh_tables; tbl->next = neigh_tables;
neigh_tables = tbl; neigh_tables = tbl;
write_unlock(&neigh_tbl_lock); write_unlock(&neigh_tbl_lock);
if (unlikely(tmp)) {
printk(KERN_ERR "NEIGH: Registering multiple tables for "
"family %d\n", tbl->family);
dump_stack();
}
} }
int neigh_table_clear(struct neigh_table *tbl) int neigh_table_clear(struct neigh_table *tbl)
...@@ -2657,6 +2673,7 @@ EXPORT_SYMBOL(neigh_rand_reach_time); ...@@ -2657,6 +2673,7 @@ EXPORT_SYMBOL(neigh_rand_reach_time);
EXPORT_SYMBOL(neigh_resolve_output); EXPORT_SYMBOL(neigh_resolve_output);
EXPORT_SYMBOL(neigh_table_clear); EXPORT_SYMBOL(neigh_table_clear);
EXPORT_SYMBOL(neigh_table_init); EXPORT_SYMBOL(neigh_table_init);
EXPORT_SYMBOL(neigh_table_init_no_netlink);
EXPORT_SYMBOL(neigh_update); EXPORT_SYMBOL(neigh_update);
EXPORT_SYMBOL(neigh_update_hhs); EXPORT_SYMBOL(neigh_update_hhs);
EXPORT_SYMBOL(pneigh_enqueue); EXPORT_SYMBOL(pneigh_enqueue);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册