appletalk: convert ipddp to net_device_ops
Use internal element in network device for stats as well. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
03b35ccb7c
commit
43a67304a3
@ -48,12 +48,18 @@ static int ipddp_mode = IPDDP_DECAP;
|
|||||||
|
|
||||||
/* Index to functions, as function prototypes. */
|
/* Index to functions, as function prototypes. */
|
||||||
static int ipddp_xmit(struct sk_buff *skb, struct net_device *dev);
|
static int ipddp_xmit(struct sk_buff *skb, struct net_device *dev);
|
||||||
static struct net_device_stats *ipddp_get_stats(struct net_device *dev);
|
|
||||||
static int ipddp_create(struct ipddp_route *new_rt);
|
static int ipddp_create(struct ipddp_route *new_rt);
|
||||||
static int ipddp_delete(struct ipddp_route *rt);
|
static int ipddp_delete(struct ipddp_route *rt);
|
||||||
static struct ipddp_route* ipddp_find_route(struct ipddp_route *rt);
|
static struct ipddp_route* ipddp_find_route(struct ipddp_route *rt);
|
||||||
static int ipddp_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
|
static int ipddp_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
|
||||||
|
|
||||||
|
static const struct net_device_ops ipddp_netdev_ops = {
|
||||||
|
.ndo_start_xmit = ipddp_xmit,
|
||||||
|
.ndo_do_ioctl = ipddp_ioctl,
|
||||||
|
.ndo_change_mtu = eth_change_mtu,
|
||||||
|
.ndo_set_mac_address = eth_mac_addr,
|
||||||
|
.ndo_validate_addr = eth_validate_addr,
|
||||||
|
};
|
||||||
|
|
||||||
static struct net_device * __init ipddp_init(void)
|
static struct net_device * __init ipddp_init(void)
|
||||||
{
|
{
|
||||||
@ -61,7 +67,7 @@ static struct net_device * __init ipddp_init(void)
|
|||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
dev = alloc_etherdev(sizeof(struct net_device_stats));
|
dev = alloc_etherdev(0);
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
@ -71,9 +77,7 @@ static struct net_device * __init ipddp_init(void)
|
|||||||
printk(version);
|
printk(version);
|
||||||
|
|
||||||
/* Initalize the device structure. */
|
/* Initalize the device structure. */
|
||||||
dev->hard_start_xmit = ipddp_xmit;
|
dev->netdev_ops = &ipddp_netdev_ops;
|
||||||
dev->get_stats = ipddp_get_stats;
|
|
||||||
dev->do_ioctl = ipddp_ioctl;
|
|
||||||
|
|
||||||
dev->type = ARPHRD_IPDDP; /* IP over DDP tunnel */
|
dev->type = ARPHRD_IPDDP; /* IP over DDP tunnel */
|
||||||
dev->mtu = 585;
|
dev->mtu = 585;
|
||||||
@ -103,13 +107,6 @@ static struct net_device * __init ipddp_init(void)
|
|||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the current statistics. This may be called with the card open or closed.
|
|
||||||
*/
|
|
||||||
static struct net_device_stats *ipddp_get_stats(struct net_device *dev)
|
|
||||||
{
|
|
||||||
return netdev_priv(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Transmit LLAP/ELAP frame using aarp_send_ddp.
|
* Transmit LLAP/ELAP frame using aarp_send_ddp.
|
||||||
@ -170,8 +167,8 @@ static int ipddp_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
|
|
||||||
skb->protocol = htons(ETH_P_ATALK); /* Protocol has changed */
|
skb->protocol = htons(ETH_P_ATALK); /* Protocol has changed */
|
||||||
|
|
||||||
((struct net_device_stats *) netdev_priv(dev))->tx_packets++;
|
dev->stats.tx_packets++;
|
||||||
((struct net_device_stats *) netdev_priv(dev))->tx_bytes += skb->len;
|
dev->stats.tx_bytes += skb->len;
|
||||||
|
|
||||||
if(aarp_send_ddp(rt->dev, skb, &rt->at, NULL) < 0)
|
if(aarp_send_ddp(rt->dev, skb, &rt->at, NULL) < 0)
|
||||||
dev_kfree_skb(skb);
|
dev_kfree_skb(skb);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user