|
@@ -1,7 +1,7 @@
|
|
|
/*
|
|
|
* Generic HDLC support routines for Linux
|
|
|
*
|
|
|
- * Copyright (C) 1999 - 2006 Krzysztof Halasa <khc@pm.waw.pl>
|
|
|
+ * Copyright (C) 1999 - 2008 Krzysztof Halasa <khc@pm.waw.pl>
|
|
|
*
|
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
|
* under the terms of version 2 of the GNU General Public License
|
|
@@ -39,7 +39,7 @@
|
|
|
#include <net/net_namespace.h>
|
|
|
|
|
|
|
|
|
-static const char* version = "HDLC support module revision 1.21";
|
|
|
+static const char* version = "HDLC support module revision 1.22";
|
|
|
|
|
|
#undef DEBUG_LINK
|
|
|
|
|
@@ -66,19 +66,15 @@ static struct net_device_stats *hdlc_get_stats(struct net_device *dev)
|
|
|
static int hdlc_rcv(struct sk_buff *skb, struct net_device *dev,
|
|
|
struct packet_type *p, struct net_device *orig_dev)
|
|
|
{
|
|
|
- struct hdlc_device_desc *desc = dev_to_desc(dev);
|
|
|
+ struct hdlc_device *hdlc = dev_to_hdlc(dev);
|
|
|
|
|
|
if (dev->nd_net != &init_net) {
|
|
|
kfree_skb(skb);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- if (desc->netif_rx)
|
|
|
- return desc->netif_rx(skb);
|
|
|
-
|
|
|
- desc->stats.rx_dropped++; /* Shouldn't happen */
|
|
|
- dev_kfree_skb(skb);
|
|
|
- return NET_RX_DROP;
|
|
|
+ BUG_ON(!hdlc->proto->netif_rx);
|
|
|
+ return hdlc->proto->netif_rx(skb);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -87,7 +83,7 @@ static inline void hdlc_proto_start(struct net_device *dev)
|
|
|
{
|
|
|
hdlc_device *hdlc = dev_to_hdlc(dev);
|
|
|
if (hdlc->proto->start)
|
|
|
- return hdlc->proto->start(dev);
|
|
|
+ hdlc->proto->start(dev);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -96,7 +92,7 @@ static inline void hdlc_proto_stop(struct net_device *dev)
|
|
|
{
|
|
|
hdlc_device *hdlc = dev_to_hdlc(dev);
|
|
|
if (hdlc->proto->stop)
|
|
|
- return hdlc->proto->stop(dev);
|
|
|
+ hdlc->proto->stop(dev);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -263,8 +259,7 @@ static void hdlc_setup(struct net_device *dev)
|
|
|
struct net_device *alloc_hdlcdev(void *priv)
|
|
|
{
|
|
|
struct net_device *dev;
|
|
|
- dev = alloc_netdev(sizeof(struct hdlc_device_desc) +
|
|
|
- sizeof(hdlc_device), "hdlc%d", hdlc_setup);
|
|
|
+ dev = alloc_netdev(sizeof(struct hdlc_device), "hdlc%d", hdlc_setup);
|
|
|
if (dev)
|
|
|
dev_to_hdlc(dev)->priv = priv;
|
|
|
return dev;
|
|
@@ -281,7 +276,7 @@ void unregister_hdlc_device(struct net_device *dev)
|
|
|
|
|
|
|
|
|
int attach_hdlc_protocol(struct net_device *dev, struct hdlc_proto *proto,
|
|
|
- int (*rx)(struct sk_buff *skb), size_t size)
|
|
|
+ size_t size)
|
|
|
{
|
|
|
detach_hdlc_protocol(dev);
|
|
|
|
|
@@ -297,7 +292,6 @@ int attach_hdlc_protocol(struct net_device *dev, struct hdlc_proto *proto,
|
|
|
return -ENOBUFS;
|
|
|
}
|
|
|
dev_to_hdlc(dev)->proto = proto;
|
|
|
- dev_to_desc(dev)->netif_rx = rx;
|
|
|
return 0;
|
|
|
}
|
|
|
|