]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - include/linux/etherdevice.h
[NET]: Move hardware header operations out of netdevice.
[net-next-2.6.git] / include / linux / etherdevice.h
index 745c988359c0bb29628609062c7d7a59c424ba45..b7558ec81ed58117042520f8cb7d764028252c60 100644 (file)
 #include <linux/random.h>
 
 #ifdef __KERNEL__
-extern int             eth_header(struct sk_buff *skb, struct net_device *dev,
-                                  unsigned short type, void *daddr,
-                                  void *saddr, unsigned len);
-extern int             eth_rebuild_header(struct sk_buff *skb);
 extern __be16          eth_type_trans(struct sk_buff *skb, struct net_device *dev);
-extern void            eth_header_cache_update(struct hh_cache *hh, struct net_device *dev,
-                                               unsigned char * haddr);
-extern int             eth_header_cache(struct neighbour *neigh,
-                                        struct hh_cache *hh);
+extern const struct header_ops eth_header_ops;
+
+extern int eth_header(struct sk_buff *skb, struct net_device *dev,
+                     unsigned short type,
+                     const void *daddr, const void *saddr, unsigned len);
+extern int eth_rebuild_header(struct sk_buff *skb);
+extern int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);
+extern int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh);
+extern void eth_header_cache_update(struct hh_cache *hh,
+                                   const struct net_device *dev,
+                                   const unsigned char *haddr);
 
-extern struct net_device *alloc_etherdev(int sizeof_priv);
-static inline void eth_copy_and_sum (struct sk_buff *dest, 
-                                    const unsigned char *src, 
-                                    int len, int base)
-{
-       memcpy (dest->data, src, len);
-}
+
+extern struct net_device *alloc_etherdev_mq(int sizeof_priv, unsigned int queue_count);
+#define alloc_etherdev(sizeof_priv) alloc_etherdev_mq(sizeof_priv, 1)
 
 /**
  * is_zero_ether_addr - Determine if give Ethernet address is all zeros.
@@ -70,6 +69,18 @@ static inline int is_multicast_ether_addr(const u8 *addr)
        return (0x01 & addr[0]);
 }
 
+/**
+ * is_local_ether_addr - Determine if the Ethernet address is locally-assigned
+ * one (IEEE 802).
+ * @addr: Pointer to a six-byte array containing the Ethernet address
+ *
+ * Return true if the address is a local address.
+ */
+static inline int is_local_ether_addr(const u8 *addr)
+{
+       return (0x02 & addr[0]);
+}
+
 /**
  * is_broadcast_ether_addr - Determine if the Ethernet address is broadcast
  * @addr: Pointer to a six-byte array containing the Ethernet address