diff options
author | Stephen Hemminger <shemminger@linux-foundation.org> | 2007-10-09 04:40:57 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:52:52 -0400 |
commit | 3b04ddde02cf1b6f14f2697da5c20eca5715017f (patch) | |
tree | 9da1341a5a399a507b5ea6bf5a3047506b8d8f8f /drivers/net/wan/hdlc_cisco.c | |
parent | b95cce3576813ac3f86bafa6b5daaaaf7574b0fe (diff) |
[NET]: Move hardware header operations out of netdevice.
Since hardware header operations are part of the protocol class
not the device instance, make them into a separate object and
save memory.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wan/hdlc_cisco.c')
-rw-r--r-- | drivers/net/wan/hdlc_cisco.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/wan/hdlc_cisco.c b/drivers/net/wan/hdlc_cisco.c index 9ec6cf2e510e..038a6e748bbf 100644 --- a/drivers/net/wan/hdlc_cisco.c +++ b/drivers/net/wan/hdlc_cisco.c | |||
@@ -74,7 +74,7 @@ static inline struct cisco_state * state(hdlc_device *hdlc) | |||
74 | 74 | ||
75 | 75 | ||
76 | static int cisco_hard_header(struct sk_buff *skb, struct net_device *dev, | 76 | static int cisco_hard_header(struct sk_buff *skb, struct net_device *dev, |
77 | u16 type, void *daddr, void *saddr, | 77 | u16 type, const void *daddr, const void *saddr, |
78 | unsigned int len) | 78 | unsigned int len) |
79 | { | 79 | { |
80 | struct hdlc_header *data; | 80 | struct hdlc_header *data; |
@@ -309,7 +309,6 @@ static void cisco_stop(struct net_device *dev) | |||
309 | } | 309 | } |
310 | 310 | ||
311 | 311 | ||
312 | |||
313 | static struct hdlc_proto proto = { | 312 | static struct hdlc_proto proto = { |
314 | .start = cisco_start, | 313 | .start = cisco_start, |
315 | .stop = cisco_stop, | 314 | .stop = cisco_stop, |
@@ -317,7 +316,10 @@ static struct hdlc_proto proto = { | |||
317 | .ioctl = cisco_ioctl, | 316 | .ioctl = cisco_ioctl, |
318 | .module = THIS_MODULE, | 317 | .module = THIS_MODULE, |
319 | }; | 318 | }; |
320 | 319 | ||
320 | static const struct header_ops cisco_header_ops = { | ||
321 | .create = cisco_hard_header, | ||
322 | }; | ||
321 | 323 | ||
322 | static int cisco_ioctl(struct net_device *dev, struct ifreq *ifr) | 324 | static int cisco_ioctl(struct net_device *dev, struct ifreq *ifr) |
323 | { | 325 | { |
@@ -365,7 +367,7 @@ static int cisco_ioctl(struct net_device *dev, struct ifreq *ifr) | |||
365 | 367 | ||
366 | memcpy(&state(hdlc)->settings, &new_settings, size); | 368 | memcpy(&state(hdlc)->settings, &new_settings, size); |
367 | dev->hard_start_xmit = hdlc->xmit; | 369 | dev->hard_start_xmit = hdlc->xmit; |
368 | dev->hard_header = cisco_hard_header; | 370 | dev->header_ops = &cisco_header_ops; |
369 | dev->type = ARPHRD_CISCO; | 371 | dev->type = ARPHRD_CISCO; |
370 | netif_dormant_on(dev); | 372 | netif_dormant_on(dev); |
371 | return 0; | 373 | return 0; |