*/
typedef struct
{
- /*
- * Stuff for generic ethercard I/F
- */
- struct net_device_stats stats;
-
/*
* DGRS specific data
*/
if ((skb = dev_alloc_skb(len+5)) == NULL)
{
printk("%s: dev_alloc_skb failed for rcv buffer\n", devN->name);
- ++privN->stats.rx_dropped;
+ ++dev0->stats.rx_dropped;
/* discarding the frame */
goto out;
}
- skb->dev = devN;
skb_reserve(skb, 2); /* Align IP header */
again:
skb->protocol = eth_type_trans(skb, devN);
netif_rx(skb);
devN->last_rx = jiffies;
- ++privN->stats.rx_packets;
- privN->stats.rx_bytes += len;
+ ++devN->stats.rx_packets;
+ devN->stats.rx_bytes += len;
out:
cbp->xmit.status = I596_CB_STATUS_C | I596_CB_STATUS_OK;
}
amt = min_t(unsigned int, len, rbdp->size - count);
- memcpy( (char *) S2H(rbdp->buf) + count, skb->data + i, amt);
+ skb_copy_from_linear_data_offset(skb, i, S2H(rbdp->buf) + count, amt);
i += amt;
count += amt;
len -= amt;
priv0->rfdp->status = I596_RFD_C | I596_RFD_OK;
priv0->rfdp = (I596_RFD *) S2H(priv0->rfdp->next);
- ++privN->stats.tx_packets;
+ ++devN->stats.tx_packets;
dev_kfree_skb (skb);
return (0);
return (0);
}
-/*
- * Get statistics
- */
-static struct net_device_stats *dgrs_get_stats( struct net_device *dev )
-{
- DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv;
-
- return (&priv->stats);
-}
-
/*
* Set multicast list and/or promiscuous mode
*/
* dev, priv will always refer to the 0th device in Multi-NIC mode.
*/
-static irqreturn_t dgrs_intr(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t dgrs_intr(int irq, void *dev_id)
{
- struct net_device *dev0 = (struct net_device *) dev_id;
- DGRS_PRIV *priv0 = (DGRS_PRIV *) dev0->priv;
+ struct net_device *dev0 = dev_id;
+ DGRS_PRIV *priv0 = dev0->priv;
I596_CB *cbp;
int cmd;
int i;
DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv;
unsigned long i;
int rc;
+ DECLARE_MAC_BUF(mac);
printk("%s: Digi RightSwitch io=%lx mem=%lx irq=%d plx=%lx dma=%lx\n",
dev->name, dev->base_addr, dev->mem_start, dev->irq,
/*
* Get ether address of board
*/
- printk("%s: Ethernet address", dev->name);
memcpy(dev->dev_addr, priv->port->ethaddr, 6);
- for (i = 0; i < 6; ++i)
- printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]);
- printk("\n");
+ printk("%s: Ethernet address %s\n",
+ dev->name, print_mac(mac, dev->dev_addr));
if (dev->dev_addr[0] & 1)
{
*/
dev->open = &dgrs_open;
dev->stop = &dgrs_close;
- dev->get_stats = &dgrs_get_stats;
dev->hard_start_xmit = &dgrs_start_xmit;
dev->set_multicast_list = &dgrs_set_multicast_list;
dev->do_ioctl = &dgrs_ioctl;
dgrs_initclone(struct net_device *dev)
{
DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv;
- int i;
+ DECLARE_MAC_BUF(mac);
- printk("%s: Digi RightSwitch port %d ",
- dev->name, priv->chan);
- for (i = 0; i < 6; ++i)
- printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]);
- printk("\n");
+ printk("%s: Digi RightSwitch port %d %s\n",
+ dev->name, priv->chan, print_mac(mac, dev->dev_addr));
- return (0);
+ return 0;
}
static struct net_device * __init
priv->chan = 1;
priv->devtbl[0] = dev;
- SET_MODULE_OWNER(dev);
SET_NETDEV_DEV(dev, pdev);
ret = dgrs_probe1(dev);
if (ret)
goto fail;
- SET_MODULE_OWNER(devN);
SET_NETDEV_DEV(dev, pdev);
ret = register_netdev(devN);