Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 28698
b: refs/heads/master
c: 07fb3f4
h: refs/heads/master
v: v3
  • Loading branch information
Stephen Rothwell authored and Paul Mackerras committed May 19, 2006
1 parent 143b8c6 commit def0ecd
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 14 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: d6b89a196dfb03fdfbe3d574ab6773fe14a1d2c6
refs/heads/master: 07fb3f454cc9e0f656e378a6feb5bdd6cac4bd41
8 changes: 5 additions & 3 deletions trunk/arch/powerpc/platforms/iseries/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -946,10 +946,10 @@ void dt_vdevices(struct iseries_flat_dt *dt)

if ((vlan_map & (0x8000 >> i)) == 0)
continue;
snprintf(buf, 32, "vlan@%08x", reg + i);
snprintf(buf, 32, "l-lan@%08x", reg + i);
dt_start_node(dt, buf);
dt_prop_str(dt, "device_type", "vlan");
dt_prop_str(dt, "compatible", "");
dt_prop_str(dt, "device_type", "network");
dt_prop_str(dt, "compatible", "IBM,iSeries-l-lan");
dt_prop_u32(dt, "reg", reg + i);
dt_prop_u32(dt, "linux,unit_address", i);

Expand All @@ -961,6 +961,8 @@ void dt_vdevices(struct iseries_flat_dt *dt)
mac_addr[5] = HvLpConfig_getLpIndex_outline();
dt_prop(dt, "local-mac-address", (char *)mac_addr, ETH_ALEN);
dt_prop(dt, "mac-address", (char *)mac_addr, ETH_ALEN);
dt_prop_u32(dt, "max-frame-size", 9000);
dt_prop_u32(dt, "address-bits", 48);

dt_end_node(dt);
}
Expand Down
27 changes: 17 additions & 10 deletions trunk/drivers/net/iseries_veth.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
#include <linux/delay.h>
#include <linux/mm.h>
#include <linux/ethtool.h>
#include <linux/if_ether.h>

#include <asm/abs_addr.h>
#include <asm/iseries/mf.h>
Expand Down Expand Up @@ -1035,11 +1036,22 @@ static struct ethtool_ops ops = {
.get_link = veth_get_link,
};

static struct net_device * __init veth_probe_one(int vlan, struct device *vdev)
static struct net_device * __init veth_probe_one(int vlan,
struct vio_dev *vio_dev)
{
struct net_device *dev;
struct veth_port *port;
struct device *vdev = &vio_dev->dev;
int i, rc;
const unsigned char *mac_addr;

mac_addr = vio_get_attribute(vio_dev, "local-mac-address", NULL);
if (mac_addr == NULL)
mac_addr = vio_get_attribute(vio_dev, "mac-address", NULL);
if (mac_addr == NULL) {
veth_error("Unable to fetch MAC address from device tree.\n");
return NULL;
}

dev = alloc_etherdev(sizeof (struct veth_port));
if (! dev) {
Expand All @@ -1064,16 +1076,11 @@ static struct net_device * __init veth_probe_one(int vlan, struct device *vdev)
}
port->dev = vdev;

dev->dev_addr[0] = 0x02;
dev->dev_addr[1] = 0x01;
dev->dev_addr[2] = 0xff;
dev->dev_addr[3] = vlan;
dev->dev_addr[4] = 0xff;
dev->dev_addr[5] = this_lp;
memcpy(dev->dev_addr, mac_addr, ETH_ALEN);

dev->mtu = VETH_MAX_MTU;

memcpy(&port->mac_addr, dev->dev_addr, 6);
memcpy(&port->mac_addr, mac_addr, ETH_ALEN);

dev->open = veth_open;
dev->hard_start_xmit = veth_start_xmit;
Expand Down Expand Up @@ -1608,7 +1615,7 @@ static int veth_probe(struct vio_dev *vdev, const struct vio_device_id *id)
struct net_device *dev;
struct veth_port *port;

dev = veth_probe_one(i, &vdev->dev);
dev = veth_probe_one(i, vdev);
if (dev == NULL) {
veth_remove(vdev);
return 1;
Expand Down Expand Up @@ -1641,7 +1648,7 @@ static int veth_probe(struct vio_dev *vdev, const struct vio_device_id *id)
* support.
*/
static struct vio_device_id veth_device_table[] __devinitdata = {
{ "vlan", "" },
{ "network", "IBM,iSeries-l-lan" },
{ "", "" }
};
MODULE_DEVICE_TABLE(vio, veth_device_table);
Expand Down

0 comments on commit def0ecd

Please sign in to comment.