vserver 2.0 rc7
[linux-2.6.git] / include / linux / netdevice.h
index eafc820..ba5d123 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Version:    @(#)dev.h       1.0.10  08/12/93
  *
- * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
+ * Authors:    Ross Biro
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  *             Corey Minyard <wf-rch!minyard@relay.EU.net>
  *             Donald J. Becker, <becker@cesdis.gsfc.nasa.gov>
@@ -41,7 +41,7 @@
 struct divert_blk;
 struct vlan_group;
 struct ethtool_ops;
-
+struct netpoll;
                                        /* source back-compat hooks */
 #define SET_ETHTOOL_OPS(netdev,ops) \
        ( (netdev)->ethtool_ops = (ops) )
@@ -204,7 +204,7 @@ struct hh_cache
        /* cached hardware header; allow for machine alignment needs.        */
 #define HH_DATA_MOD    16
 #define HH_DATA_OFF(__len) \
-       (HH_DATA_MOD - ((__len) & (HH_DATA_MOD - 1)))
+       (HH_DATA_MOD - (((__len - 1) & (HH_DATA_MOD - 1)) + 1))
 #define HH_DATA_ALIGN(__len) \
        (((__len)+(HH_DATA_MOD-1))&~(HH_DATA_MOD - 1))
        unsigned long   hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];
@@ -328,9 +328,7 @@ struct net_device
        unsigned short          flags;  /* interface flags (a la BSD)   */
        unsigned short          gflags;
         unsigned short          priv_flags; /* Like 'flags' but invisible to userspace. */
-        unsigned short          unused_alignment_fixer; /* Because we need priv_flags,
-                                                         * and we want to be 32-bit aligned.
-                                                         */
+       unsigned short          padded; /* How much padding added by alloc_netdev() */
 
        unsigned                mtu;    /* interface MTU value          */
        unsigned short          type;   /* interface hardware type      */
@@ -403,7 +401,7 @@ struct net_device
        } reg_state;
 
        /* Net device features */
-       int                     features;
+       unsigned long           features;
 #define NETIF_F_SG             1       /* Scatter/gather IO. */
 #define NETIF_F_IP_CSUM                2       /* Can checksum only TCP/UDP over IPv4. */
 #define NETIF_F_NO_CSUM                4       /* Does not require checksum. F.e. loopack. */
@@ -469,9 +467,8 @@ struct net_device
        int                     (*hard_header_parse)(struct sk_buff *skb,
                                                     unsigned char *haddr);
        int                     (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
-       int                     (*accept_fastpath)(struct net_device *, struct dst_entry*);
 #ifdef CONFIG_NETPOLL
-       int                     netpoll_rx;
+       struct netpoll          *np;
 #endif
 #ifdef CONFIG_NET_POLL_CONTROLLER
        void                    (*poll_controller)(struct net_device *dev);
@@ -487,8 +484,6 @@ struct net_device
 
        /* class/net/name entry */
        struct class_device     class_dev;
-       /* how much padding had been added by alloc_netdev() */
-       int padded;
 };
 
 #define        NETDEV_ALIGN            32
@@ -508,7 +503,7 @@ static inline void *netdev_priv(struct net_device *dev)
 #define SET_NETDEV_DEV(net, pdev)      ((net)->class_dev.dev = (pdev))
 
 struct packet_type {
-       unsigned short          type;   /* This is really htons(ether_type).    */
+       __be16                  type;   /* This is really htons(ether_type).    */
        struct net_device               *dev;   /* NULL is wildcarded here              */
        int                     (*func) (struct sk_buff *, struct net_device *,
                                         struct packet_type *);
@@ -678,6 +673,8 @@ extern unsigned             dev_get_flags(const struct net_device *);
 extern int             dev_change_flags(struct net_device *, unsigned);
 extern int             dev_change_name(struct net_device *, char *);
 extern int             dev_set_mtu(struct net_device *, int);
+extern int             dev_set_mac_address(struct net_device *,
+                                           struct sockaddr *);
 extern void            dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev);
 
 extern void            dev_init(void);
@@ -916,13 +913,12 @@ extern void               dev_mc_discard(struct net_device *dev);
 extern void            dev_set_promiscuity(struct net_device *dev, int inc);
 extern void            dev_set_allmulti(struct net_device *dev, int inc);
 extern void            netdev_state_change(struct net_device *dev);
+extern void            netdev_features_change(struct net_device *dev);
 /* Load a device via the kmod */
 extern void            dev_load(const char *name);
 extern void            dev_mcast_init(void);
 extern int             netdev_max_backlog;
 extern int             weight_p;
-extern unsigned long   netdev_fc_xoff;
-extern atomic_t netdev_dropping;
 extern int             netdev_set_master(struct net_device *dev, struct net_device *master);
 extern int skb_checksum_help(struct sk_buff *skb, int inward);
 /* rx skb timestamps */