提交 c4a80d7e 编写于 作者: S Stephen Hemminger 提交者: David S. Miller

uwb: convert devices to net_device_ops

Signed-off-by: NStephen Hemminger <shemminger@vyatta.com>
Acked-by: NDavid Vrabel <david.vrabel@csr.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 5ec38f30
...@@ -221,7 +221,6 @@ struct i1480u { ...@@ -221,7 +221,6 @@ struct i1480u {
struct net_device *net_dev; struct net_device *net_dev;
spinlock_t lock; spinlock_t lock;
struct net_device_stats stats;
/* RX context handling */ /* RX context handling */
struct sk_buff *rx_skb; struct sk_buff *rx_skb;
...@@ -271,7 +270,6 @@ extern int i1480u_stop(struct net_device *); ...@@ -271,7 +270,6 @@ extern int i1480u_stop(struct net_device *);
extern int i1480u_hard_start_xmit(struct sk_buff *, struct net_device *); extern int i1480u_hard_start_xmit(struct sk_buff *, struct net_device *);
extern void i1480u_tx_timeout(struct net_device *); extern void i1480u_tx_timeout(struct net_device *);
extern int i1480u_set_config(struct net_device *, struct ifmap *); extern int i1480u_set_config(struct net_device *, struct ifmap *);
extern struct net_device_stats *i1480u_get_stats(struct net_device *);
extern int i1480u_change_mtu(struct net_device *, int); extern int i1480u_change_mtu(struct net_device *, int);
extern void i1480u_uwb_notifs_cb(void *, struct uwb_dev *, enum uwb_notifs); extern void i1480u_uwb_notifs_cb(void *, struct uwb_dev *, enum uwb_notifs);
......
...@@ -181,6 +181,15 @@ void i1480u_notif_cb(struct urb *urb, struct pt_regs *regs) ...@@ -181,6 +181,15 @@ void i1480u_notif_cb(struct urb *urb, struct pt_regs *regs)
} }
#endif #endif
static const struct net_device_ops i1480u_netdev_ops = {
.ndo_open = i1480u_open,
.ndo_stop = i1480u_stop,
.ndo_start_xmit = i1480u_hard_start_xmit,
.ndo_tx_timeout = i1480u_tx_timeout,
.ndo_set_config = i1480u_set_config,
.ndo_change_mtu = i1480u_change_mtu,
};
static static
int i1480u_add(struct i1480u *i1480u, struct usb_interface *iface) int i1480u_add(struct i1480u *i1480u, struct usb_interface *iface)
{ {
...@@ -235,13 +244,7 @@ int i1480u_add(struct i1480u *i1480u, struct usb_interface *iface) ...@@ -235,13 +244,7 @@ int i1480u_add(struct i1480u *i1480u, struct usb_interface *iface)
net_dev->features |= NETIF_F_HIGHDMA; net_dev->features |= NETIF_F_HIGHDMA;
net_dev->watchdog_timeo = 5*HZ; /* FIXME: a better default? */ net_dev->watchdog_timeo = 5*HZ; /* FIXME: a better default? */
net_dev->open = i1480u_open; net_dev->netdev_ops = &i1480u_netdev_ops;
net_dev->stop = i1480u_stop;
net_dev->hard_start_xmit = i1480u_hard_start_xmit;
net_dev->tx_timeout = i1480u_tx_timeout;
net_dev->get_stats = i1480u_get_stats;
net_dev->set_config = i1480u_set_config;
net_dev->change_mtu = i1480u_change_mtu;
#ifdef i1480u_FLOW_CONTROL #ifdef i1480u_FLOW_CONTROL
/* Notification endpoint setup (submitted when we open the device) */ /* Notification endpoint setup (submitted when we open the device) */
......
...@@ -262,15 +262,6 @@ int i1480u_stop(struct net_device *net_dev) ...@@ -262,15 +262,6 @@ int i1480u_stop(struct net_device *net_dev)
return 0; return 0;
} }
/** Report statistics */
struct net_device_stats *i1480u_get_stats(struct net_device *net_dev)
{
struct i1480u *i1480u = netdev_priv(net_dev);
return &i1480u->stats;
}
/** /**
* *
* Change the interface config--we probably don't have to do anything. * Change the interface config--we probably don't have to do anything.
......
...@@ -167,7 +167,7 @@ do { \ ...@@ -167,7 +167,7 @@ do { \
do { \ do { \
if (printk_ratelimit()) \ if (printk_ratelimit()) \
dev_err(&i1480u->usb_iface->dev, msg); \ dev_err(&i1480u->usb_iface->dev, msg); \
i1480u->stats.rx_dropped++; \ i1480u->net_dev->stats.rx_dropped++; \
} while (0) } while (0)
...@@ -193,10 +193,8 @@ void i1480u_skb_deliver(struct i1480u *i1480u) ...@@ -193,10 +193,8 @@ void i1480u_skb_deliver(struct i1480u *i1480u)
if (!should_parse) if (!should_parse)
goto out; goto out;
i1480u->rx_skb->protocol = eth_type_trans(i1480u->rx_skb, net_dev); i1480u->rx_skb->protocol = eth_type_trans(i1480u->rx_skb, net_dev);
i1480u->stats.rx_packets++; net_dev->stats.rx_packets++;
i1480u->stats.rx_bytes += i1480u->rx_untd_pkt_size; net_dev->stats.rx_bytes += i1480u->rx_untd_pkt_size;
net_dev->last_rx = jiffies;
/* FIXME: flow control: check netif_rx() retval */
netif_rx(i1480u->rx_skb); /* deliver */ netif_rx(i1480u->rx_skb); /* deliver */
out: out:
......
...@@ -117,8 +117,8 @@ void i1480u_tx_cb(struct urb *urb) ...@@ -117,8 +117,8 @@ void i1480u_tx_cb(struct urb *urb)
switch (urb->status) { switch (urb->status) {
case 0: case 0:
spin_lock_irqsave(&i1480u->lock, flags); spin_lock_irqsave(&i1480u->lock, flags);
i1480u->stats.tx_packets++; net_dev->stats.tx_packets++;
i1480u->stats.tx_bytes += urb->actual_length; net_dev->stats.tx_bytes += urb->actual_length;
spin_unlock_irqrestore(&i1480u->lock, flags); spin_unlock_irqrestore(&i1480u->lock, flags);
break; break;
case -ECONNRESET: /* Not an error, but a controlled situation; */ case -ECONNRESET: /* Not an error, but a controlled situation; */
...@@ -530,7 +530,7 @@ int i1480u_hard_start_xmit(struct sk_buff *skb, struct net_device *net_dev) ...@@ -530,7 +530,7 @@ int i1480u_hard_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
return NETDEV_TX_OK; return NETDEV_TX_OK;
error: error:
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
i1480u->stats.tx_dropped++; net_dev->stats.tx_dropped++;
out: out:
return NETDEV_TX_OK; return NETDEV_TX_OK;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册