linux/include/linux/netdevice.h
<<
>>
Prefs
   1/*
   2 * INET         An implementation of the TCP/IP protocol suite for the LINUX
   3 *              operating system.  INET is implemented using the  BSD Socket
   4 *              interface as the means of communication with the user level.
   5 *
   6 *              Definitions for the Interfaces handler.
   7 *
   8 * Version:     @(#)dev.h       1.0.10  08/12/93
   9 *
  10 * Authors:     Ross Biro
  11 *              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  12 *              Corey Minyard <wf-rch!minyard@relay.EU.net>
  13 *              Donald J. Becker, <becker@cesdis.gsfc.nasa.gov>
  14 *              Alan Cox, <alan@lxorguk.ukuu.org.uk>
  15 *              Bjorn Ekwall. <bj0rn@blox.se>
  16 *              Pekka Riikonen <priikone@poseidon.pspt.fi>
  17 *
  18 *              This program is free software; you can redistribute it and/or
  19 *              modify it under the terms of the GNU General Public License
  20 *              as published by the Free Software Foundation; either version
  21 *              2 of the License, or (at your option) any later version.
  22 *
  23 *              Moved to /usr/include/linux for NET3
  24 */
  25#ifndef _LINUX_NETDEVICE_H
  26#define _LINUX_NETDEVICE_H
  27
  28#include <linux/if.h>
  29#include <linux/if_ether.h>
  30#include <linux/if_packet.h>
  31
  32#ifdef __KERNEL__
  33#include <linux/timer.h>
  34#include <linux/delay.h>
  35#include <linux/mm.h>
  36#include <asm/atomic.h>
  37#include <asm/cache.h>
  38#include <asm/byteorder.h>
  39
  40#include <linux/device.h>
  41#include <linux/percpu.h>
  42#include <linux/dmaengine.h>
  43#include <linux/workqueue.h>
  44
  45#include <net/net_namespace.h>
  46#include <net/dsa.h>
  47#ifdef CONFIG_DCB
  48#include <net/dcbnl.h>
  49#endif
  50
  51struct vlan_group;
  52struct ethtool_ops;
  53struct netpoll_info;
  54/* 802.11 specific */
  55struct wireless_dev;
  56                                        /* source back-compat hooks */
  57#define SET_ETHTOOL_OPS(netdev,ops) \
  58        ( (netdev)->ethtool_ops = (ops) )
  59
  60#define HAVE_ALLOC_NETDEV               /* feature macro: alloc_xxxdev
  61                                           functions are available. */
  62#define HAVE_FREE_NETDEV                /* free_netdev() */
  63#define HAVE_NETDEV_PRIV                /* netdev_priv() */
  64
  65#define NET_XMIT_SUCCESS        0
  66#define NET_XMIT_DROP           1       /* skb dropped                  */
  67#define NET_XMIT_CN             2       /* congestion notification      */
  68#define NET_XMIT_POLICED        3       /* skb is shot by police        */
  69#define NET_XMIT_MASK           0xFFFF  /* qdisc flags in net/sch_generic.h */
  70
  71/* Backlog congestion levels */
  72#define NET_RX_SUCCESS          0   /* keep 'em coming, baby */
  73#define NET_RX_DROP             1  /* packet dropped */
  74#define NET_RX_CN_LOW           2   /* storm alert, just in case */
  75#define NET_RX_CN_MOD           3   /* Storm on its way! */
  76#define NET_RX_CN_HIGH          4   /* The storm is here */
  77#define NET_RX_BAD              5  /* packet dropped due to kernel error */
  78
  79/* NET_XMIT_CN is special. It does not guarantee that this packet is lost. It
  80 * indicates that the device will soon be dropping packets, or already drops
  81 * some packets of the same priority; prompting us to send less aggressively. */
  82#define net_xmit_eval(e)        ((e) == NET_XMIT_CN? 0 : (e))
  83#define net_xmit_errno(e)       ((e) != NET_XMIT_CN ? -ENOBUFS : 0)
  84
  85#endif
  86
  87#define MAX_ADDR_LEN    32              /* Largest hardware address length */
  88
  89/* Driver transmit return codes */
  90#define NETDEV_TX_OK 0          /* driver took care of packet */
  91#define NETDEV_TX_BUSY 1        /* driver tx path was busy*/
  92#define NETDEV_TX_LOCKED -1     /* driver tx lock was already taken */
  93
  94#ifdef  __KERNEL__
  95
  96/*
  97 *      Compute the worst case header length according to the protocols
  98 *      used.
  99 */
 100
 101#if defined(CONFIG_WLAN_80211) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
 102# if defined(CONFIG_MAC80211_MESH)
 103#  define LL_MAX_HEADER 128
 104# else
 105#  define LL_MAX_HEADER 96
 106# endif
 107#elif defined(CONFIG_TR) || defined(CONFIG_TR_MODULE)
 108# define LL_MAX_HEADER 48
 109#else
 110# define LL_MAX_HEADER 32
 111#endif
 112
 113#if !defined(CONFIG_NET_IPIP) && !defined(CONFIG_NET_IPIP_MODULE) && \
 114    !defined(CONFIG_NET_IPGRE) &&  !defined(CONFIG_NET_IPGRE_MODULE) && \
 115    !defined(CONFIG_IPV6_SIT) && !defined(CONFIG_IPV6_SIT_MODULE) && \
 116    !defined(CONFIG_IPV6_TUNNEL) && !defined(CONFIG_IPV6_TUNNEL_MODULE)
 117#define MAX_HEADER LL_MAX_HEADER
 118#else
 119#define MAX_HEADER (LL_MAX_HEADER + 48)
 120#endif
 121
 122#endif  /*  __KERNEL__  */
 123
 124/*
 125 *      Network device statistics. Akin to the 2.0 ether stats but
 126 *      with byte counters.
 127 */
 128
 129struct net_device_stats
 130{
 131        unsigned long   rx_packets;             /* total packets received       */
 132        unsigned long   tx_packets;             /* total packets transmitted    */
 133        unsigned long   rx_bytes;               /* total bytes received         */
 134        unsigned long   tx_bytes;               /* total bytes transmitted      */
 135        unsigned long   rx_errors;              /* bad packets received         */
 136        unsigned long   tx_errors;              /* packet transmit problems     */
 137        unsigned long   rx_dropped;             /* no space in linux buffers    */
 138        unsigned long   tx_dropped;             /* no space available in linux  */
 139        unsigned long   multicast;              /* multicast packets received   */
 140        unsigned long   collisions;
 141
 142        /* detailed rx_errors: */
 143        unsigned long   rx_length_errors;
 144        unsigned long   rx_over_errors;         /* receiver ring buff overflow  */
 145        unsigned long   rx_crc_errors;          /* recved pkt with crc error    */
 146        unsigned long   rx_frame_errors;        /* recv'd frame alignment error */
 147        unsigned long   rx_fifo_errors;         /* recv'r fifo overrun          */
 148        unsigned long   rx_missed_errors;       /* receiver missed packet       */
 149
 150        /* detailed tx_errors */
 151        unsigned long   tx_aborted_errors;
 152        unsigned long   tx_carrier_errors;
 153        unsigned long   tx_fifo_errors;
 154        unsigned long   tx_heartbeat_errors;
 155        unsigned long   tx_window_errors;
 156        
 157        /* for cslip etc */
 158        unsigned long   rx_compressed;
 159        unsigned long   tx_compressed;
 160};
 161
 162
 163/* Media selection options. */
 164enum {
 165        IF_PORT_UNKNOWN = 0,
 166        IF_PORT_10BASE2,
 167        IF_PORT_10BASET,
 168        IF_PORT_AUI,
 169        IF_PORT_100BASET,
 170        IF_PORT_100BASETX,
 171        IF_PORT_100BASEFX
 172};
 173
 174#ifdef __KERNEL__
 175
 176#include <linux/cache.h>
 177#include <linux/skbuff.h>
 178
 179struct neighbour;
 180struct neigh_parms;
 181struct sk_buff;
 182
 183struct netif_rx_stats
 184{
 185        unsigned total;
 186        unsigned dropped;
 187        unsigned time_squeeze;
 188        unsigned cpu_collision;
 189};
 190
 191DECLARE_PER_CPU(struct netif_rx_stats, netdev_rx_stat);
 192
 193struct dev_addr_list
 194{
 195        struct dev_addr_list    *next;
 196        u8                      da_addr[MAX_ADDR_LEN];
 197        u8                      da_addrlen;
 198        u8                      da_synced;
 199        int                     da_users;
 200        int                     da_gusers;
 201};
 202
 203/*
 204 *      We tag multicasts with these structures.
 205 */
 206
 207#define dev_mc_list     dev_addr_list
 208#define dmi_addr        da_addr
 209#define dmi_addrlen     da_addrlen
 210#define dmi_users       da_users
 211#define dmi_gusers      da_gusers
 212
 213struct hh_cache
 214{
 215        struct hh_cache *hh_next;       /* Next entry                        */
 216        atomic_t        hh_refcnt;      /* number of users                   */
 217/*
 218 * We want hh_output, hh_len, hh_lock and hh_data be a in a separate
 219 * cache line on SMP.
 220 * They are mostly read, but hh_refcnt may be changed quite frequently,
 221 * incurring cache line ping pongs.
 222 */
 223        __be16          hh_type ____cacheline_aligned_in_smp;
 224                                        /* protocol identifier, f.e ETH_P_IP
 225                                         *  NOTE:  For VLANs, this will be the
 226                                         *  encapuslated type. --BLG
 227                                         */
 228        u16             hh_len;         /* length of header */
 229        int             (*hh_output)(struct sk_buff *skb);
 230        seqlock_t       hh_lock;
 231
 232        /* cached hardware header; allow for machine alignment needs.        */
 233#define HH_DATA_MOD     16
 234#define HH_DATA_OFF(__len) \
 235        (HH_DATA_MOD - (((__len - 1) & (HH_DATA_MOD - 1)) + 1))
 236#define HH_DATA_ALIGN(__len) \
 237        (((__len)+(HH_DATA_MOD-1))&~(HH_DATA_MOD - 1))
 238        unsigned long   hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];
 239};
 240
 241/* Reserve HH_DATA_MOD byte aligned hard_header_len, but at least that much.
 242 * Alternative is:
 243 *   dev->hard_header_len ? (dev->hard_header_len +
 244 *                           (HH_DATA_MOD - 1)) & ~(HH_DATA_MOD - 1) : 0
 245 *
 246 * We could use other alignment values, but we must maintain the
 247 * relationship HH alignment <= LL alignment.
 248 *
 249 * LL_ALLOCATED_SPACE also takes into account the tailroom the device
 250 * may need.
 251 */
 252#define LL_RESERVED_SPACE(dev) \
 253        ((((dev)->hard_header_len+(dev)->needed_headroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
 254#define LL_RESERVED_SPACE_EXTRA(dev,extra) \
 255        ((((dev)->hard_header_len+(dev)->needed_headroom+(extra))&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
 256#define LL_ALLOCATED_SPACE(dev) \
 257        ((((dev)->hard_header_len+(dev)->needed_headroom+(dev)->needed_tailroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
 258
 259struct header_ops {
 260        int     (*create) (struct sk_buff *skb, struct net_device *dev,
 261                           unsigned short type, const void *daddr,
 262                           const void *saddr, unsigned len);
 263        int     (*parse)(const struct sk_buff *skb, unsigned char *haddr);
 264        int     (*rebuild)(struct sk_buff *skb);
 265#define HAVE_HEADER_CACHE
 266        int     (*cache)(const struct neighbour *neigh, struct hh_cache *hh);
 267        void    (*cache_update)(struct hh_cache *hh,
 268                                const struct net_device *dev,
 269                                const unsigned char *haddr);
 270};
 271
 272/* These flag bits are private to the generic network queueing
 273 * layer, they may not be explicitly referenced by any other
 274 * code.
 275 */
 276
 277enum netdev_state_t
 278{
 279        __LINK_STATE_START,
 280        __LINK_STATE_PRESENT,
 281        __LINK_STATE_NOCARRIER,
 282        __LINK_STATE_LINKWATCH_PENDING,
 283        __LINK_STATE_DORMANT,
 284};
 285
 286
 287/*
 288 * This structure holds at boot time configured netdevice settings. They
 289 * are then used in the device probing.
 290 */
 291struct netdev_boot_setup {
 292        char name[IFNAMSIZ];
 293        struct ifmap map;
 294};
 295#define NETDEV_BOOT_SETUP_MAX 8
 296
 297extern int __init netdev_boot_setup(char *str);
 298
 299/*
 300 * Structure for NAPI scheduling similar to tasklet but with weighting
 301 */
 302struct napi_struct {
 303        /* The poll_list must only be managed by the entity which
 304         * changes the state of the NAPI_STATE_SCHED bit.  This means
 305         * whoever atomically sets that bit can add this napi_struct
 306         * to the per-cpu poll_list, and whoever clears that bit
 307         * can remove from the list right before clearing the bit.
 308         */
 309        struct list_head        poll_list;
 310
 311        unsigned long           state;
 312        int                     weight;
 313        int                     (*poll)(struct napi_struct *, int);
 314#ifdef CONFIG_NETPOLL
 315        spinlock_t              poll_lock;
 316        int                     poll_owner;
 317#endif
 318
 319        unsigned int            gro_count;
 320
 321        struct net_device       *dev;
 322        struct list_head        dev_list;
 323        struct sk_buff          *gro_list;
 324        struct sk_buff          *skb;
 325};
 326
 327enum
 328{
 329        NAPI_STATE_SCHED,       /* Poll is scheduled */
 330        NAPI_STATE_DISABLE,     /* Disable pending */
 331        NAPI_STATE_NPSVC,       /* Netpoll - don't dequeue from poll_list */
 332};
 333
 334enum {
 335        GRO_MERGED,
 336        GRO_MERGED_FREE,
 337        GRO_HELD,
 338        GRO_NORMAL,
 339        GRO_DROP,
 340};
 341
 342extern void __napi_schedule(struct napi_struct *n);
 343
 344static inline int napi_disable_pending(struct napi_struct *n)
 345{
 346        return test_bit(NAPI_STATE_DISABLE, &n->state);
 347}
 348
 349/**
 350 *      napi_schedule_prep - check if napi can be scheduled
 351 *      @n: napi context
 352 *
 353 * Test if NAPI routine is already running, and if not mark
 354 * it as running.  This is used as a condition variable
 355 * insure only one NAPI poll instance runs.  We also make
 356 * sure there is no pending NAPI disable.
 357 */
 358static inline int napi_schedule_prep(struct napi_struct *n)
 359{
 360        return !napi_disable_pending(n) &&
 361                !test_and_set_bit(NAPI_STATE_SCHED, &n->state);
 362}
 363
 364/**
 365 *      napi_schedule - schedule NAPI poll
 366 *      @n: napi context
 367 *
 368 * Schedule NAPI poll routine to be called if it is not already
 369 * running.
 370 */
 371static inline void napi_schedule(struct napi_struct *n)
 372{
 373        if (napi_schedule_prep(n))
 374                __napi_schedule(n);
 375}
 376
 377/* Try to reschedule poll. Called by dev->poll() after napi_complete().  */
 378static inline int napi_reschedule(struct napi_struct *napi)
 379{
 380        if (napi_schedule_prep(napi)) {
 381                __napi_schedule(napi);
 382                return 1;
 383        }
 384        return 0;
 385}
 386
 387/**
 388 *      napi_complete - NAPI processing complete
 389 *      @n: napi context
 390 *
 391 * Mark NAPI processing as complete.
 392 */
 393extern void __napi_complete(struct napi_struct *n);
 394extern void napi_complete(struct napi_struct *n);
 395
 396/**
 397 *      napi_disable - prevent NAPI from scheduling
 398 *      @n: napi context
 399 *
 400 * Stop NAPI from being scheduled on this context.
 401 * Waits till any outstanding processing completes.
 402 */
 403static inline void napi_disable(struct napi_struct *n)
 404{
 405        set_bit(NAPI_STATE_DISABLE, &n->state);
 406        while (test_and_set_bit(NAPI_STATE_SCHED, &n->state))
 407                msleep(1);
 408        clear_bit(NAPI_STATE_DISABLE, &n->state);
 409}
 410
 411/**
 412 *      napi_enable - enable NAPI scheduling
 413 *      @n: napi context
 414 *
 415 * Resume NAPI from being scheduled on this context.
 416 * Must be paired with napi_disable.
 417 */
 418static inline void napi_enable(struct napi_struct *n)
 419{
 420        BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
 421        smp_mb__before_clear_bit();
 422        clear_bit(NAPI_STATE_SCHED, &n->state);
 423}
 424
 425#ifdef CONFIG_SMP
 426/**
 427 *      napi_synchronize - wait until NAPI is not running
 428 *      @n: napi context
 429 *
 430 * Wait until NAPI is done being scheduled on this context.
 431 * Waits till any outstanding processing completes but
 432 * does not disable future activations.
 433 */
 434static inline void napi_synchronize(const struct napi_struct *n)
 435{
 436        while (test_bit(NAPI_STATE_SCHED, &n->state))
 437                msleep(1);
 438}
 439#else
 440# define napi_synchronize(n)    barrier()
 441#endif
 442
 443enum netdev_queue_state_t
 444{
 445        __QUEUE_STATE_XOFF,
 446        __QUEUE_STATE_FROZEN,
 447};
 448
 449struct netdev_queue {
 450        struct net_device       *dev;
 451        struct Qdisc            *qdisc;
 452        unsigned long           state;
 453        spinlock_t              _xmit_lock;
 454        int                     xmit_lock_owner;
 455        struct Qdisc            *qdisc_sleeping;
 456} ____cacheline_aligned_in_smp;
 457
 458
 459/*
 460 * This structure defines the management hooks for network devices.
 461 * The following hooks can be defined; unless noted otherwise, they are
 462 * optional and can be filled with a null pointer.
 463 *
 464 * int (*ndo_init)(struct net_device *dev);
 465 *     This function is called once when network device is registered.
 466 *     The network device can use this to any late stage initializaton
 467 *     or semantic validattion. It can fail with an error code which will
 468 *     be propogated back to register_netdev
 469 *
 470 * void (*ndo_uninit)(struct net_device *dev);
 471 *     This function is called when device is unregistered or when registration
 472 *     fails. It is not called if init fails.
 473 *
 474 * int (*ndo_open)(struct net_device *dev);
 475 *     This function is called when network device transistions to the up
 476 *     state.
 477 *
 478 * int (*ndo_stop)(struct net_device *dev);
 479 *     This function is called when network device transistions to the down
 480 *     state.
 481 *
 482 * int (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev);
 483 *      Called when a packet needs to be transmitted.
 484 *      Must return NETDEV_TX_OK , NETDEV_TX_BUSY, or NETDEV_TX_LOCKED,
 485 *      Required can not be NULL.
 486 *
 487 * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb);
 488 *      Called to decide which queue to when device supports multiple
 489 *      transmit queues.
 490 *
 491 * void (*ndo_change_rx_flags)(struct net_device *dev, int flags);
 492 *      This function is called to allow device receiver to make
 493 *      changes to configuration when multicast or promiscious is enabled.
 494 *
 495 * void (*ndo_set_rx_mode)(struct net_device *dev);
 496 *      This function is called device changes address list filtering.
 497 *
 498 * void (*ndo_set_multicast_list)(struct net_device *dev);
 499 *      This function is called when the multicast address list changes.
 500 *
 501 * int (*ndo_set_mac_address)(struct net_device *dev, void *addr);
 502 *      This function  is called when the Media Access Control address
 503 *      needs to be changed. If this interface is not defined, the
 504 *      mac address can not be changed.
 505 *
 506 * int (*ndo_validate_addr)(struct net_device *dev);
 507 *      Test if Media Access Control address is valid for the device.
 508 *
 509 * int (*ndo_do_ioctl)(struct net_device *dev, struct ifreq *ifr, int cmd);
 510 *      Called when a user request an ioctl which can't be handled by
 511 *      the generic interface code. If not defined ioctl's return
 512 *      not supported error code.
 513 *
 514 * int (*ndo_set_config)(struct net_device *dev, struct ifmap *map);
 515 *      Used to set network devices bus interface parameters. This interface
 516 *      is retained for legacy reason, new devices should use the bus
 517 *      interface (PCI) for low level management.
 518 *
 519 * int (*ndo_change_mtu)(struct net_device *dev, int new_mtu);
 520 *      Called when a user wants to change the Maximum Transfer Unit
 521 *      of a device. If not defined, any request to change MTU will
 522 *      will return an error.
 523 *
 524 * void (*ndo_tx_timeout)(struct net_device *dev);
 525 *      Callback uses when the transmitter has not made any progress
 526 *      for dev->watchdog ticks.
 527 *
 528 * struct net_device_stats* (*get_stats)(struct net_device *dev);
 529 *      Called when a user wants to get the network device usage
 530 *      statistics. If not defined, the counters in dev->stats will
 531 *      be used.
 532 *
 533 * void (*ndo_vlan_rx_register)(struct net_device *dev, struct vlan_group *grp);
 534 *      If device support VLAN receive accleration
 535 *      (ie. dev->features & NETIF_F_HW_VLAN_RX), then this function is called
 536 *      when vlan groups for the device changes.  Note: grp is NULL
 537 *      if no vlan's groups are being used.
 538 *
 539 * void (*ndo_vlan_rx_add_vid)(struct net_device *dev, unsigned short vid);
 540 *      If device support VLAN filtering (dev->features & NETIF_F_HW_VLAN_FILTER)
 541 *      this function is called when a VLAN id is registered.
 542 *
 543 * void (*ndo_vlan_rx_kill_vid)(struct net_device *dev, unsigned short vid);
 544 *      If device support VLAN filtering (dev->features & NETIF_F_HW_VLAN_FILTER)
 545 *      this function is called when a VLAN id is unregistered.
 546 *
 547 * void (*ndo_poll_controller)(struct net_device *dev);
 548 */
 549#define HAVE_NET_DEVICE_OPS
 550struct net_device_ops {
 551        int                     (*ndo_init)(struct net_device *dev);
 552        void                    (*ndo_uninit)(struct net_device *dev);
 553        int                     (*ndo_open)(struct net_device *dev);
 554        int                     (*ndo_stop)(struct net_device *dev);
 555        int                     (*ndo_start_xmit) (struct sk_buff *skb,
 556                                                   struct net_device *dev);
 557        u16                     (*ndo_select_queue)(struct net_device *dev,
 558                                                    struct sk_buff *skb);
 559#define HAVE_CHANGE_RX_FLAGS
 560        void                    (*ndo_change_rx_flags)(struct net_device *dev,
 561                                                       int flags);
 562#define HAVE_SET_RX_MODE
 563        void                    (*ndo_set_rx_mode)(struct net_device *dev);
 564#define HAVE_MULTICAST
 565        void                    (*ndo_set_multicast_list)(struct net_device *dev);
 566#define HAVE_SET_MAC_ADDR
 567        int                     (*ndo_set_mac_address)(struct net_device *dev,
 568                                                       void *addr);
 569#define HAVE_VALIDATE_ADDR
 570        int                     (*ndo_validate_addr)(struct net_device *dev);
 571#define HAVE_PRIVATE_IOCTL
 572        int                     (*ndo_do_ioctl)(struct net_device *dev,
 573                                                struct ifreq *ifr, int cmd);
 574#define HAVE_SET_CONFIG
 575        int                     (*ndo_set_config)(struct net_device *dev,
 576                                                  struct ifmap *map);
 577#define HAVE_CHANGE_MTU
 578        int                     (*ndo_change_mtu)(struct net_device *dev,
 579                                                  int new_mtu);
 580        int                     (*ndo_neigh_setup)(struct net_device *dev,
 581                                                   struct neigh_parms *);
 582#define HAVE_TX_TIMEOUT
 583        void                    (*ndo_tx_timeout) (struct net_device *dev);
 584
 585        struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
 586
 587        void                    (*ndo_vlan_rx_register)(struct net_device *dev,
 588                                                        struct vlan_group *grp);
 589        void                    (*ndo_vlan_rx_add_vid)(struct net_device *dev,
 590                                                       unsigned short vid);
 591        void                    (*ndo_vlan_rx_kill_vid)(struct net_device *dev,
 592                                                        unsigned short vid);
 593#ifdef CONFIG_NET_POLL_CONTROLLER
 594#define HAVE_NETDEV_POLL
 595        void                    (*ndo_poll_controller)(struct net_device *dev);
 596#endif
 597#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
 598        int                     (*ndo_fcoe_ddp_setup)(struct net_device *dev,
 599                                                      u16 xid,
 600                                                      struct scatterlist *sgl,
 601                                                      unsigned int sgc);
 602        int                     (*ndo_fcoe_ddp_done)(struct net_device *dev,
 603                                                     u16 xid);
 604#endif
 605};
 606
 607/*
 608 *      The DEVICE structure.
 609 *      Actually, this whole structure is a big mistake.  It mixes I/O
 610 *      data with strictly "high-level" data, and it has to know about
 611 *      almost every data structure used in the INET module.
 612 *
 613 *      FIXME: cleanup struct net_device such that network protocol info
 614 *      moves out.
 615 */
 616
 617struct net_device
 618{
 619
 620        /*
 621         * This is the first field of the "visible" part of this structure
 622         * (i.e. as seen by users in the "Space.c" file).  It is the name
 623         * the interface.
 624         */
 625        char                    name[IFNAMSIZ];
 626        /* device name hash chain */
 627        struct hlist_node       name_hlist;
 628        /* snmp alias */
 629        char                    *ifalias;
 630
 631        /*
 632         *      I/O specific fields
 633         *      FIXME: Merge these and struct ifmap into one
 634         */
 635        unsigned long           mem_end;        /* shared mem end       */
 636        unsigned long           mem_start;      /* shared mem start     */
 637        unsigned long           base_addr;      /* device I/O address   */
 638        unsigned int            irq;            /* device IRQ number    */
 639
 640        /*
 641         *      Some hardware also needs these fields, but they are not
 642         *      part of the usual set specified in Space.c.
 643         */
 644
 645        unsigned char           if_port;        /* Selectable AUI, TP,..*/
 646        unsigned char           dma;            /* DMA channel          */
 647
 648        unsigned long           state;
 649
 650        struct list_head        dev_list;
 651        struct list_head        napi_list;
 652
 653        /* Net device features */
 654        unsigned long           features;
 655#define NETIF_F_SG              1       /* Scatter/gather IO. */
 656#define NETIF_F_IP_CSUM         2       /* Can checksum TCP/UDP over IPv4. */
 657#define NETIF_F_NO_CSUM         4       /* Does not require checksum. F.e. loopack. */
 658#define NETIF_F_HW_CSUM         8       /* Can checksum all the packets. */
 659#define NETIF_F_IPV6_CSUM       16      /* Can checksum TCP/UDP over IPV6 */
 660#define NETIF_F_HIGHDMA         32      /* Can DMA to high memory. */
 661#define NETIF_F_FRAGLIST        64      /* Scatter/gather IO. */
 662#define NETIF_F_HW_VLAN_TX      128     /* Transmit VLAN hw acceleration */
 663#define NETIF_F_HW_VLAN_RX      256     /* Receive VLAN hw acceleration */
 664#define NETIF_F_HW_VLAN_FILTER  512     /* Receive filtering on VLAN */
 665#define NETIF_F_VLAN_CHALLENGED 1024    /* Device cannot handle VLAN packets */
 666#define NETIF_F_GSO             2048    /* Enable software GSO. */
 667#define NETIF_F_LLTX            4096    /* LockLess TX - deprecated. Please */
 668                                        /* do not use LLTX in new drivers */
 669#define NETIF_F_NETNS_LOCAL     8192    /* Does not change network namespaces */
 670#define NETIF_F_GRO             16384   /* Generic receive offload */
 671#define NETIF_F_LRO             32768   /* large receive offload */
 672
 673#define NETIF_F_FCOE_CRC        (1 << 24) /* FCoE CRC32 */
 674
 675        /* Segmentation offload features */
 676#define NETIF_F_GSO_SHIFT       16
 677#define NETIF_F_GSO_MASK        0x00ff0000
 678#define NETIF_F_TSO             (SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT)
 679#define NETIF_F_UFO             (SKB_GSO_UDP << NETIF_F_GSO_SHIFT)
 680#define NETIF_F_GSO_ROBUST      (SKB_GSO_DODGY << NETIF_F_GSO_SHIFT)
 681#define NETIF_F_TSO_ECN         (SKB_GSO_TCP_ECN << NETIF_F_GSO_SHIFT)
 682#define NETIF_F_TSO6            (SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT)
 683#define NETIF_F_FSO             (SKB_GSO_FCOE << NETIF_F_GSO_SHIFT)
 684
 685        /* List of features with software fallbacks. */
 686#define NETIF_F_GSO_SOFTWARE    (NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6)
 687
 688
 689#define NETIF_F_GEN_CSUM        (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM)
 690#define NETIF_F_V4_CSUM         (NETIF_F_GEN_CSUM | NETIF_F_IP_CSUM)
 691#define NETIF_F_V6_CSUM         (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)
 692#define NETIF_F_ALL_CSUM        (NETIF_F_V4_CSUM | NETIF_F_V6_CSUM)
 693
 694        /*
 695         * If one device supports one of these features, then enable them
 696         * for all in netdev_increment_features.
 697         */
 698#define NETIF_F_ONE_FOR_ALL     (NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ROBUST | \
 699                                 NETIF_F_SG | NETIF_F_HIGHDMA |         \
 700                                 NETIF_F_FRAGLIST)
 701
 702        /* Interface index. Unique device identifier    */
 703        int                     ifindex;
 704        int                     iflink;
 705
 706        struct net_device_stats stats;
 707
 708#ifdef CONFIG_WIRELESS_EXT
 709        /* List of functions to handle Wireless Extensions (instead of ioctl).
 710         * See <net/iw_handler.h> for details. Jean II */
 711        const struct iw_handler_def *   wireless_handlers;
 712        /* Instance data managed by the core of Wireless Extensions. */
 713        struct iw_public_data * wireless_data;
 714#endif
 715        /* Management operations */
 716        const struct net_device_ops *netdev_ops;
 717        const struct ethtool_ops *ethtool_ops;
 718
 719        /* Hardware header description */
 720        const struct header_ops *header_ops;
 721
 722        unsigned int            flags;  /* interface flags (a la BSD)   */
 723        unsigned short          gflags;
 724        unsigned short          priv_flags; /* Like 'flags' but invisible to userspace. */
 725        unsigned short          padded; /* How much padding added by alloc_netdev() */
 726
 727        unsigned char           operstate; /* RFC2863 operstate */
 728        unsigned char           link_mode; /* mapping policy to operstate */
 729
 730        unsigned                mtu;    /* interface MTU value          */
 731        unsigned short          type;   /* interface hardware type      */
 732        unsigned short          hard_header_len;        /* hardware hdr length  */
 733
 734        /* extra head- and tailroom the hardware may need, but not in all cases
 735         * can this be guaranteed, especially tailroom. Some cases also use
 736         * LL_MAX_HEADER instead to allocate the skb.
 737         */
 738        unsigned short          needed_headroom;
 739        unsigned short          needed_tailroom;
 740
 741        struct net_device       *master; /* Pointer to master device of a group,
 742                                          * which this device is member of.
 743                                          */
 744
 745        /* Interface address info. */
 746        unsigned char           perm_addr[MAX_ADDR_LEN]; /* permanent hw address */
 747        unsigned char           addr_len;       /* hardware address length      */
 748        unsigned short          dev_id;         /* for shared network cards */
 749
 750        spinlock_t              addr_list_lock;
 751        struct dev_addr_list    *uc_list;       /* Secondary unicast mac addresses */
 752        int                     uc_count;       /* Number of installed ucasts   */
 753        int                     uc_promisc;
 754        struct dev_addr_list    *mc_list;       /* Multicast mac addresses      */
 755        int                     mc_count;       /* Number of installed mcasts   */
 756        unsigned int            promiscuity;
 757        unsigned int            allmulti;
 758
 759
 760        /* Protocol specific pointers */
 761        
 762#ifdef CONFIG_NET_DSA
 763        void                    *dsa_ptr;       /* dsa specific data */
 764#endif
 765        void                    *atalk_ptr;     /* AppleTalk link       */
 766        void                    *ip_ptr;        /* IPv4 specific data   */
 767        void                    *dn_ptr;        /* DECnet specific data */
 768        void                    *ip6_ptr;       /* IPv6 specific data */
 769        void                    *ec_ptr;        /* Econet specific data */
 770        void                    *ax25_ptr;      /* AX.25 specific data */
 771        struct wireless_dev     *ieee80211_ptr; /* IEEE 802.11 specific data,
 772                                                   assign before registering */
 773
 774/*
 775 * Cache line mostly used on receive path (including eth_type_trans())
 776 */
 777        unsigned long           last_rx;        /* Time of last Rx      */
 778        /* Interface address info used in eth_type_trans() */
 779        unsigned char           dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast
 780                                                           because most packets are unicast) */
 781
 782        unsigned char           broadcast[MAX_ADDR_LEN];        /* hw bcast add */
 783
 784        struct netdev_queue     rx_queue;
 785
 786        struct netdev_queue     *_tx ____cacheline_aligned_in_smp;
 787
 788        /* Number of TX queues allocated at alloc_netdev_mq() time  */
 789        unsigned int            num_tx_queues;
 790
 791        /* Number of TX queues currently active in device  */
 792        unsigned int            real_num_tx_queues;
 793
 794        unsigned long           tx_queue_len;   /* Max frames per queue allowed */
 795        spinlock_t              tx_global_lock;
 796/*
 797 * One part is mostly used on xmit path (device)
 798 */
 799        /* These may be needed for future network-power-down code. */
 800        unsigned long           trans_start;    /* Time (in jiffies) of last Tx */
 801
 802        int                     watchdog_timeo; /* used by dev_watchdog() */
 803        struct timer_list       watchdog_timer;
 804
 805        /* Number of references to this device */
 806        atomic_t                refcnt ____cacheline_aligned_in_smp;
 807
 808        /* delayed register/unregister */
 809        struct list_head        todo_list;
 810        /* device index hash chain */
 811        struct hlist_node       index_hlist;
 812
 813        struct net_device       *link_watch_next;
 814
 815        /* register/unregister state machine */
 816        enum { NETREG_UNINITIALIZED=0,
 817               NETREG_REGISTERED,       /* completed register_netdevice */
 818               NETREG_UNREGISTERING,    /* called unregister_netdevice */
 819               NETREG_UNREGISTERED,     /* completed unregister todo */
 820               NETREG_RELEASED,         /* called free_netdev */
 821               NETREG_DUMMY,            /* dummy device for NAPI poll */
 822        } reg_state;
 823
 824        /* Called from unregister, can be used to call free_netdev */
 825        void (*destructor)(struct net_device *dev);
 826
 827#ifdef CONFIG_NETPOLL
 828        struct netpoll_info     *npinfo;
 829#endif
 830
 831#ifdef CONFIG_NET_NS
 832        /* Network namespace this network device is inside */
 833        struct net              *nd_net;
 834#endif
 835
 836        /* mid-layer private */
 837        void                    *ml_priv;
 838
 839        /* bridge stuff */
 840        struct net_bridge_port  *br_port;
 841        /* macvlan */
 842        struct macvlan_port     *macvlan_port;
 843        /* GARP */
 844        struct garp_port        *garp_port;
 845
 846        /* class/net/name entry */
 847        struct device           dev;
 848        /* space for optional statistics and wireless sysfs groups */
 849        struct attribute_group  *sysfs_groups[3];
 850
 851        /* rtnetlink link ops */
 852        const struct rtnl_link_ops *rtnl_link_ops;
 853
 854        /* VLAN feature mask */
 855        unsigned long vlan_features;
 856
 857        /* for setting kernel sock attribute on TCP connection setup */
 858#define GSO_MAX_SIZE            65536
 859        unsigned int            gso_max_size;
 860
 861#ifdef CONFIG_DCB
 862        /* Data Center Bridging netlink ops */
 863        struct dcbnl_rtnl_ops *dcbnl_ops;
 864#endif
 865
 866#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
 867        /* max exchange id for FCoE LRO by ddp */
 868        unsigned int            fcoe_ddp_xid;
 869#endif
 870
 871#ifdef CONFIG_COMPAT_NET_DEV_OPS
 872        struct {
 873                int                     (*init)(struct net_device *dev);
 874                void                    (*uninit)(struct net_device *dev);
 875                int                     (*open)(struct net_device *dev);
 876                int                     (*stop)(struct net_device *dev);
 877                int                     (*hard_start_xmit) (struct sk_buff *skb,
 878                                                            struct net_device *dev);
 879                u16                     (*select_queue)(struct net_device *dev,
 880                                                        struct sk_buff *skb);
 881                void                    (*change_rx_flags)(struct net_device *dev,
 882                                                           int flags);
 883                void                    (*set_rx_mode)(struct net_device *dev);
 884                void                    (*set_multicast_list)(struct net_device *dev);
 885                int                     (*set_mac_address)(struct net_device *dev,
 886                                                           void *addr);
 887                int                     (*validate_addr)(struct net_device *dev);
 888                int                     (*do_ioctl)(struct net_device *dev,
 889                                                    struct ifreq *ifr, int cmd);
 890                int                     (*set_config)(struct net_device *dev,
 891                                                      struct ifmap *map);
 892                int                     (*change_mtu)(struct net_device *dev, int new_mtu);
 893                int                     (*neigh_setup)(struct net_device *dev,
 894                                                       struct neigh_parms *);
 895                void                    (*tx_timeout) (struct net_device *dev);
 896                struct net_device_stats* (*get_stats)(struct net_device *dev);
 897                void                    (*vlan_rx_register)(struct net_device *dev,
 898                                                            struct vlan_group *grp);
 899                void                    (*vlan_rx_add_vid)(struct net_device *dev,
 900                                                           unsigned short vid);
 901                void                    (*vlan_rx_kill_vid)(struct net_device *dev,
 902                                                            unsigned short vid);
 903#ifdef CONFIG_NET_POLL_CONTROLLER
 904                void                    (*poll_controller)(struct net_device *dev);
 905#endif
 906        };
 907#endif
 908};
 909#define to_net_dev(d) container_of(d, struct net_device, dev)
 910
 911#define NETDEV_ALIGN            32
 912#define NETDEV_ALIGN_CONST      (NETDEV_ALIGN - 1)
 913
 914static inline
 915struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev,
 916                                         unsigned int index)
 917{
 918        return &dev->_tx[index];
 919}
 920
 921static inline void netdev_for_each_tx_queue(struct net_device *dev,
 922                                            void (*f)(struct net_device *,
 923                                                      struct netdev_queue *,
 924                                                      void *),
 925                                            void *arg)
 926{
 927        unsigned int i;
 928
 929        for (i = 0; i < dev->num_tx_queues; i++)
 930                f(dev, &dev->_tx[i], arg);
 931}
 932
 933/*
 934 * Net namespace inlines
 935 */
 936static inline
 937struct net *dev_net(const struct net_device *dev)
 938{
 939#ifdef CONFIG_NET_NS
 940        return dev->nd_net;
 941#else
 942        return &init_net;
 943#endif
 944}
 945
 946static inline
 947void dev_net_set(struct net_device *dev, struct net *net)
 948{
 949#ifdef CONFIG_NET_NS
 950        release_net(dev->nd_net);
 951        dev->nd_net = hold_net(net);
 952#endif
 953}
 954
 955static inline bool netdev_uses_dsa_tags(struct net_device *dev)
 956{
 957#ifdef CONFIG_NET_DSA_TAG_DSA
 958        if (dev->dsa_ptr != NULL)
 959                return dsa_uses_dsa_tags(dev->dsa_ptr);
 960#endif
 961
 962        return 0;
 963}
 964
 965static inline bool netdev_uses_trailer_tags(struct net_device *dev)
 966{
 967#ifdef CONFIG_NET_DSA_TAG_TRAILER
 968        if (dev->dsa_ptr != NULL)
 969                return dsa_uses_trailer_tags(dev->dsa_ptr);
 970#endif
 971
 972        return 0;
 973}
 974
 975/**
 976 *      netdev_priv - access network device private data
 977 *      @dev: network device
 978 *
 979 * Get network device private data
 980 */
 981static inline void *netdev_priv(const struct net_device *dev)
 982{
 983        return (char *)dev + ((sizeof(struct net_device)
 984                               + NETDEV_ALIGN_CONST)
 985                              & ~NETDEV_ALIGN_CONST);
 986}
 987
 988/* Set the sysfs physical device reference for the network logical device
 989 * if set prior to registration will cause a symlink during initialization.
 990 */
 991#define SET_NETDEV_DEV(net, pdev)       ((net)->dev.parent = (pdev))
 992
 993/**
 994 *      netif_napi_add - initialize a napi context
 995 *      @dev:  network device
 996 *      @napi: napi context
 997 *      @poll: polling function
 998 *      @weight: default weight
 999 *
1000 * netif_napi_add() must be used to initialize a napi context prior to calling
1001 * *any* of the other napi related functions.
1002 */
1003void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
1004                    int (*poll)(struct napi_struct *, int), int weight);
1005
1006/**
1007 *  netif_napi_del - remove a napi context
1008 *  @napi: napi context
1009 *
1010 *  netif_napi_del() removes a napi context from the network device napi list
1011 */
1012void netif_napi_del(struct napi_struct *napi);
1013
1014struct napi_gro_cb {
1015        /* This indicates where we are processing relative to skb->data. */
1016        int data_offset;
1017
1018        /* This is non-zero if the packet may be of the same flow. */
1019        int same_flow;
1020
1021        /* This is non-zero if the packet cannot be merged with the new skb. */
1022        int flush;
1023
1024        /* Number of segments aggregated. */
1025        int count;
1026
1027        /* Free the skb? */
1028        int free;
1029};
1030
1031#define NAPI_GRO_CB(skb) ((struct napi_gro_cb *)(skb)->cb)
1032
1033struct packet_type {
1034        __be16                  type;   /* This is really htons(ether_type). */
1035        struct net_device       *dev;   /* NULL is wildcarded here           */
1036        int                     (*func) (struct sk_buff *,
1037                                         struct net_device *,
1038                                         struct packet_type *,
1039                                         struct net_device *);
1040        struct sk_buff          *(*gso_segment)(struct sk_buff *skb,
1041                                                int features);
1042        int                     (*gso_send_check)(struct sk_buff *skb);
1043        struct sk_buff          **(*gro_receive)(struct sk_buff **head,
1044                                               struct sk_buff *skb);
1045        int                     (*gro_complete)(struct sk_buff *skb);
1046        void                    *af_packet_priv;
1047        struct list_head        list;
1048};
1049
1050struct napi_gro_fraginfo {
1051        skb_frag_t frags[MAX_SKB_FRAGS];
1052        unsigned int nr_frags;
1053        unsigned int ip_summed;
1054        unsigned int len;
1055        __wsum csum;
1056};
1057
1058#include <linux/interrupt.h>
1059#include <linux/notifier.h>
1060
1061extern rwlock_t                         dev_base_lock;          /* Device list lock */
1062
1063
1064#define for_each_netdev(net, d)         \
1065                list_for_each_entry(d, &(net)->dev_base_head, dev_list)
1066#define for_each_netdev_safe(net, d, n) \
1067                list_for_each_entry_safe(d, n, &(net)->dev_base_head, dev_list)
1068#define for_each_netdev_continue(net, d)                \
1069                list_for_each_entry_continue(d, &(net)->dev_base_head, dev_list)
1070#define net_device_entry(lh)    list_entry(lh, struct net_device, dev_list)
1071
1072static inline struct net_device *next_net_device(struct net_device *dev)
1073{
1074        struct list_head *lh;
1075        struct net *net;
1076
1077        net = dev_net(dev);
1078        lh = dev->dev_list.next;
1079        return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1080}
1081
1082static inline struct net_device *first_net_device(struct net *net)
1083{
1084        return list_empty(&net->dev_base_head) ? NULL :
1085                net_device_entry(net->dev_base_head.next);
1086}
1087
1088extern int                      netdev_boot_setup_check(struct net_device *dev);
1089extern unsigned long            netdev_boot_base(const char *prefix, int unit);
1090extern struct net_device    *dev_getbyhwaddr(struct net *net, unsigned short type, char *hwaddr);
1091extern struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
1092extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
1093extern void             dev_add_pack(struct packet_type *pt);
1094extern void             dev_remove_pack(struct packet_type *pt);
1095extern void             __dev_remove_pack(struct packet_type *pt);
1096
1097extern struct net_device        *dev_get_by_flags(struct net *net, unsigned short flags,
1098                                                  unsigned short mask);
1099extern struct net_device        *dev_get_by_name(struct net *net, const char *name);
1100extern struct net_device        *__dev_get_by_name(struct net *net, const char *name);
1101extern int              dev_alloc_name(struct net_device *dev, const char *name);
1102extern int              dev_open(struct net_device *dev);
1103extern int              dev_close(struct net_device *dev);
1104extern void             dev_disable_lro(struct net_device *dev);
1105extern int              dev_queue_xmit(struct sk_buff *skb);
1106extern int              register_netdevice(struct net_device *dev);
1107extern void             unregister_netdevice(struct net_device *dev);
1108extern void             free_netdev(struct net_device *dev);
1109extern void             synchronize_net(void);
1110extern int              register_netdevice_notifier(struct notifier_block *nb);
1111extern int              unregister_netdevice_notifier(struct notifier_block *nb);
1112extern int              init_dummy_netdev(struct net_device *dev);
1113extern void             netdev_resync_ops(struct net_device *dev);
1114
1115extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
1116extern struct net_device        *dev_get_by_index(struct net *net, int ifindex);
1117extern struct net_device        *__dev_get_by_index(struct net *net, int ifindex);
1118extern int              dev_restart(struct net_device *dev);
1119#ifdef CONFIG_NETPOLL_TRAP
1120extern int              netpoll_trap(void);
1121#endif
1122extern void           *skb_gro_header(struct sk_buff *skb, unsigned int hlen);
1123extern int             skb_gro_receive(struct sk_buff **head,
1124                                       struct sk_buff *skb);
1125
1126static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
1127{
1128        return NAPI_GRO_CB(skb)->data_offset;
1129}
1130
1131static inline unsigned int skb_gro_len(const struct sk_buff *skb)
1132{
1133        return skb->len - NAPI_GRO_CB(skb)->data_offset;
1134}
1135
1136static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len)
1137{
1138        NAPI_GRO_CB(skb)->data_offset += len;
1139}
1140
1141static inline void skb_gro_reset_offset(struct sk_buff *skb)
1142{
1143        NAPI_GRO_CB(skb)->data_offset = 0;
1144}
1145
1146static inline void *skb_gro_mac_header(struct sk_buff *skb)
1147{
1148        return skb_mac_header(skb) < skb->data ? skb_mac_header(skb) :
1149               page_address(skb_shinfo(skb)->frags[0].page) +
1150               skb_shinfo(skb)->frags[0].page_offset;
1151}
1152
1153static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
1154                                  unsigned short type,
1155                                  const void *daddr, const void *saddr,
1156                                  unsigned len)
1157{
1158        if (!dev->header_ops || !dev->header_ops->create)
1159                return 0;
1160
1161        return dev->header_ops->create(skb, dev, type, daddr, saddr, len);
1162}
1163
1164static inline int dev_parse_header(const struct sk_buff *skb,
1165                                   unsigned char *haddr)
1166{
1167        const struct net_device *dev = skb->dev;
1168
1169        if (!dev->header_ops || !dev->header_ops->parse)
1170                return 0;
1171        return dev->header_ops->parse(skb, haddr);
1172}
1173
1174typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
1175extern int              register_gifconf(unsigned int family, gifconf_func_t * gifconf);
1176static inline int unregister_gifconf(unsigned int family)
1177{
1178        return register_gifconf(family, NULL);
1179}
1180
1181/*
1182 * Incoming packets are placed on per-cpu queues so that
1183 * no locking is needed.
1184 */
1185struct softnet_data
1186{
1187        struct Qdisc            *output_queue;
1188        struct sk_buff_head     input_pkt_queue;
1189        struct list_head        poll_list;
1190        struct sk_buff          *completion_queue;
1191
1192        struct napi_struct      backlog;
1193};
1194
1195DECLARE_PER_CPU(struct softnet_data,softnet_data);
1196
1197#define HAVE_NETIF_QUEUE
1198
1199extern void __netif_schedule(struct Qdisc *q);
1200
1201static inline void netif_schedule_queue(struct netdev_queue *txq)
1202{
1203        if (!test_bit(__QUEUE_STATE_XOFF, &txq->state))
1204                __netif_schedule(txq->qdisc);
1205}
1206
1207static inline void netif_tx_schedule_all(struct net_device *dev)
1208{
1209        unsigned int i;
1210
1211        for (i = 0; i < dev->num_tx_queues; i++)
1212                netif_schedule_queue(netdev_get_tx_queue(dev, i));
1213}
1214
1215static inline void netif_tx_start_queue(struct netdev_queue *dev_queue)
1216{
1217        clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1218}
1219
1220/**
1221 *      netif_start_queue - allow transmit
1222 *      @dev: network device
1223 *
1224 *      Allow upper layers to call the device hard_start_xmit routine.
1225 */
1226static inline void netif_start_queue(struct net_device *dev)
1227{
1228        netif_tx_start_queue(netdev_get_tx_queue(dev, 0));
1229}
1230
1231static inline void netif_tx_start_all_queues(struct net_device *dev)
1232{
1233        unsigned int i;
1234
1235        for (i = 0; i < dev->num_tx_queues; i++) {
1236                struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1237                netif_tx_start_queue(txq);
1238        }
1239}
1240
1241static inline void netif_tx_wake_queue(struct netdev_queue *dev_queue)
1242{
1243#ifdef CONFIG_NETPOLL_TRAP
1244        if (netpoll_trap()) {
1245                clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1246                return;
1247        }
1248#endif
1249        if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state))
1250                __netif_schedule(dev_queue->qdisc);
1251}
1252
1253/**
1254 *      netif_wake_queue - restart transmit
1255 *      @dev: network device
1256 *
1257 *      Allow upper layers to call the device hard_start_xmit routine.
1258 *      Used for flow control when transmit resources are available.
1259 */
1260static inline void netif_wake_queue(struct net_device *dev)
1261{
1262        netif_tx_wake_queue(netdev_get_tx_queue(dev, 0));
1263}
1264
1265static inline void netif_tx_wake_all_queues(struct net_device *dev)
1266{
1267        unsigned int i;
1268
1269        for (i = 0; i < dev->num_tx_queues; i++) {
1270                struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1271                netif_tx_wake_queue(txq);
1272        }
1273}
1274
1275static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue)
1276{
1277        set_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1278}
1279
1280/**
1281 *      netif_stop_queue - stop transmitted packets
1282 *      @dev: network device
1283 *
1284 *      Stop upper layers calling the device hard_start_xmit routine.
1285 *      Used for flow control when transmit resources are unavailable.
1286 */
1287static inline void netif_stop_queue(struct net_device *dev)
1288{
1289        netif_tx_stop_queue(netdev_get_tx_queue(dev, 0));
1290}
1291
1292static inline void netif_tx_stop_all_queues(struct net_device *dev)
1293{
1294        unsigned int i;
1295
1296        for (i = 0; i < dev->num_tx_queues; i++) {
1297                struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1298                netif_tx_stop_queue(txq);
1299        }
1300}
1301
1302static inline int netif_tx_queue_stopped(const struct netdev_queue *dev_queue)
1303{
1304        return test_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1305}
1306
1307/**
1308 *      netif_queue_stopped - test if transmit queue is flowblocked
1309 *      @dev: network device
1310 *
1311 *      Test if transmit queue on device is currently unable to send.
1312 */
1313static inline int netif_queue_stopped(const struct net_device *dev)
1314{
1315        return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0));
1316}
1317
1318static inline int netif_tx_queue_frozen(const struct netdev_queue *dev_queue)
1319{
1320        return test_bit(__QUEUE_STATE_FROZEN, &dev_queue->state);
1321}
1322
1323/**
1324 *      netif_running - test if up
1325 *      @dev: network device
1326 *
1327 *      Test if the device has been brought up.
1328 */
1329static inline int netif_running(const struct net_device *dev)
1330{
1331        return test_bit(__LINK_STATE_START, &dev->state);
1332}
1333
1334/*
1335 * Routines to manage the subqueues on a device.  We only need start
1336 * stop, and a check if it's stopped.  All other device management is
1337 * done at the overall netdevice level.
1338 * Also test the device if we're multiqueue.
1339 */
1340
1341/**
1342 *      netif_start_subqueue - allow sending packets on subqueue
1343 *      @dev: network device
1344 *      @queue_index: sub queue index
1345 *
1346 * Start individual transmit queue of a device with multiple transmit queues.
1347 */
1348static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index)
1349{
1350        struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1351        clear_bit(__QUEUE_STATE_XOFF, &txq->state);
1352}
1353
1354/**
1355 *      netif_stop_subqueue - stop sending packets on subqueue
1356 *      @dev: network device
1357 *      @queue_index: sub queue index
1358 *
1359 * Stop individual transmit queue of a device with multiple transmit queues.
1360 */
1361static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index)
1362{
1363        struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1364#ifdef CONFIG_NETPOLL_TRAP
1365        if (netpoll_trap())
1366                return;
1367#endif
1368        set_bit(__QUEUE_STATE_XOFF, &txq->state);
1369}
1370
1371/**
1372 *      netif_subqueue_stopped - test status of subqueue
1373 *      @dev: network device
1374 *      @queue_index: sub queue index
1375 *
1376 * Check individual transmit queue of a device with multiple transmit queues.
1377 */
1378static inline int __netif_subqueue_stopped(const struct net_device *dev,
1379                                         u16 queue_index)
1380{
1381        struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1382        return test_bit(__QUEUE_STATE_XOFF, &txq->state);
1383}
1384
1385static inline int netif_subqueue_stopped(const struct net_device *dev,
1386                                         struct sk_buff *skb)
1387{
1388        return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb));
1389}
1390
1391/**
1392 *      netif_wake_subqueue - allow sending packets on subqueue
1393 *      @dev: network device
1394 *      @queue_index: sub queue index
1395 *
1396 * Resume individual transmit queue of a device with multiple transmit queues.
1397 */
1398static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
1399{
1400        struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1401#ifdef CONFIG_NETPOLL_TRAP
1402        if (netpoll_trap())
1403                return;
1404#endif
1405        if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state))
1406                __netif_schedule(txq->qdisc);
1407}
1408
1409/**
1410 *      netif_is_multiqueue - test if device has multiple transmit queues
1411 *      @dev: network device
1412 *
1413 * Check if device has multiple transmit queues
1414 */
1415static inline int netif_is_multiqueue(const struct net_device *dev)
1416{
1417        return (dev->num_tx_queues > 1);
1418}
1419
1420/* Use this variant when it is known for sure that it
1421 * is executing from hardware interrupt context or with hardware interrupts
1422 * disabled.
1423 */
1424extern void dev_kfree_skb_irq(struct sk_buff *skb);
1425
1426/* Use this variant in places where it could be invoked
1427 * from either hardware interrupt or other context, with hardware interrupts
1428 * either disabled or enabled.
1429 */
1430extern void dev_kfree_skb_any(struct sk_buff *skb);
1431
1432#define HAVE_NETIF_RX 1
1433extern int              netif_rx(struct sk_buff *skb);
1434extern int              netif_rx_ni(struct sk_buff *skb);
1435#define HAVE_NETIF_RECEIVE_SKB 1
1436extern int              netif_receive_skb(struct sk_buff *skb);
1437extern void             napi_gro_flush(struct napi_struct *napi);
1438extern int              dev_gro_receive(struct napi_struct *napi,
1439                                        struct sk_buff *skb);
1440extern int              napi_skb_finish(int ret, struct sk_buff *skb);
1441extern int              napi_gro_receive(struct napi_struct *napi,
1442                                         struct sk_buff *skb);
1443extern void             napi_reuse_skb(struct napi_struct *napi,
1444                                       struct sk_buff *skb);
1445extern struct sk_buff * napi_fraginfo_skb(struct napi_struct *napi,
1446                                          struct napi_gro_fraginfo *info);
1447extern int              napi_frags_finish(struct napi_struct *napi,
1448                                          struct sk_buff *skb, int ret);
1449extern int              napi_gro_frags(struct napi_struct *napi,
1450                                       struct napi_gro_fraginfo *info);
1451extern void             netif_nit_deliver(struct sk_buff *skb);
1452extern int              dev_valid_name(const char *name);
1453extern int              dev_ioctl(struct net *net, unsigned int cmd, void __user *);
1454extern int              dev_ethtool(struct net *net, struct ifreq *);
1455extern unsigned         dev_get_flags(const struct net_device *);
1456extern int              dev_change_flags(struct net_device *, unsigned);
1457extern int              dev_change_name(struct net_device *, const char *);
1458extern int              dev_set_alias(struct net_device *, const char *, size_t);
1459extern int              dev_change_net_namespace(struct net_device *,
1460                                                 struct net *, const char *);
1461extern int              dev_set_mtu(struct net_device *, int);
1462extern int              dev_set_mac_address(struct net_device *,
1463                                            struct sockaddr *);
1464extern int              dev_hard_start_xmit(struct sk_buff *skb,
1465                                            struct net_device *dev,
1466                                            struct netdev_queue *txq);
1467
1468extern int              netdev_budget;
1469
1470/* Called by rtnetlink.c:rtnl_unlock() */
1471extern void netdev_run_todo(void);
1472
1473/**
1474 *      dev_put - release reference to device
1475 *      @dev: network device
1476 *
1477 * Release reference to device to allow it to be freed.
1478 */
1479static inline void dev_put(struct net_device *dev)
1480{
1481        atomic_dec(&dev->refcnt);
1482}
1483
1484/**
1485 *      dev_hold - get reference to device
1486 *      @dev: network device
1487 *
1488 * Hold reference to device to keep it from being freed.
1489 */
1490static inline void dev_hold(struct net_device *dev)
1491{
1492        atomic_inc(&dev->refcnt);
1493}
1494
1495/* Carrier loss detection, dial on demand. The functions netif_carrier_on
1496 * and _off may be called from IRQ context, but it is caller
1497 * who is responsible for serialization of these calls.
1498 *
1499 * The name carrier is inappropriate, these functions should really be
1500 * called netif_lowerlayer_*() because they represent the state of any
1501 * kind of lower layer not just hardware media.
1502 */
1503
1504extern void linkwatch_fire_event(struct net_device *dev);
1505
1506/**
1507 *      netif_carrier_ok - test if carrier present
1508 *      @dev: network device
1509 *
1510 * Check if carrier is present on device
1511 */
1512static inline int netif_carrier_ok(const struct net_device *dev)
1513{
1514        return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
1515}
1516
1517extern void __netdev_watchdog_up(struct net_device *dev);
1518
1519extern void netif_carrier_on(struct net_device *dev);
1520
1521extern void netif_carrier_off(struct net_device *dev);
1522
1523/**
1524 *      netif_dormant_on - mark device as dormant.
1525 *      @dev: network device
1526 *
1527 * Mark device as dormant (as per RFC2863).
1528 *
1529 * The dormant state indicates that the relevant interface is not
1530 * actually in a condition to pass packets (i.e., it is not 'up') but is
1531 * in a "pending" state, waiting for some external event.  For "on-
1532 * demand" interfaces, this new state identifies the situation where the
1533 * interface is waiting for events to place it in the up state.
1534 *
1535 */
1536static inline void netif_dormant_on(struct net_device *dev)
1537{
1538        if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state))
1539                linkwatch_fire_event(dev);
1540}
1541
1542/**
1543 *      netif_dormant_off - set device as not dormant.
1544 *      @dev: network device
1545 *
1546 * Device is not in dormant state.
1547 */
1548static inline void netif_dormant_off(struct net_device *dev)
1549{
1550        if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state))
1551                linkwatch_fire_event(dev);
1552}
1553
1554/**
1555 *      netif_dormant - test if carrier present
1556 *      @dev: network device
1557 *
1558 * Check if carrier is present on device
1559 */
1560static inline int netif_dormant(const struct net_device *dev)
1561{
1562        return test_bit(__LINK_STATE_DORMANT, &dev->state);
1563}
1564
1565
1566/**
1567 *      netif_oper_up - test if device is operational
1568 *      @dev: network device
1569 *
1570 * Check if carrier is operational
1571 */
1572static inline int netif_oper_up(const struct net_device *dev) {
1573        return (dev->operstate == IF_OPER_UP ||
1574                dev->operstate == IF_OPER_UNKNOWN /* backward compat */);
1575}
1576
1577/**
1578 *      netif_device_present - is device available or removed
1579 *      @dev: network device
1580 *
1581 * Check if device has not been removed from system.
1582 */
1583static inline int netif_device_present(struct net_device *dev)
1584{
1585        return test_bit(__LINK_STATE_PRESENT, &dev->state);
1586}
1587
1588extern void netif_device_detach(struct net_device *dev);
1589
1590extern void netif_device_attach(struct net_device *dev);
1591
1592/*
1593 * Network interface message level settings
1594 */
1595#define HAVE_NETIF_MSG 1
1596
1597enum {
1598        NETIF_MSG_DRV           = 0x0001,
1599        NETIF_MSG_PROBE         = 0x0002,
1600        NETIF_MSG_LINK          = 0x0004,
1601        NETIF_MSG_TIMER         = 0x0008,
1602        NETIF_MSG_IFDOWN        = 0x0010,
1603        NETIF_MSG_IFUP          = 0x0020,
1604        NETIF_MSG_RX_ERR        = 0x0040,
1605        NETIF_MSG_TX_ERR        = 0x0080,
1606        NETIF_MSG_TX_QUEUED     = 0x0100,
1607        NETIF_MSG_INTR          = 0x0200,
1608        NETIF_MSG_TX_DONE       = 0x0400,
1609        NETIF_MSG_RX_STATUS     = 0x0800,
1610        NETIF_MSG_PKTDATA       = 0x1000,
1611        NETIF_MSG_HW            = 0x2000,
1612        NETIF_MSG_WOL           = 0x4000,
1613};
1614
1615#define netif_msg_drv(p)        ((p)->msg_enable & NETIF_MSG_DRV)
1616#define netif_msg_probe(p)      ((p)->msg_enable & NETIF_MSG_PROBE)
1617#define netif_msg_link(p)       ((p)->msg_enable & NETIF_MSG_LINK)
1618#define netif_msg_timer(p)      ((p)->msg_enable & NETIF_MSG_TIMER)
1619#define netif_msg_ifdown(p)     ((p)->msg_enable & NETIF_MSG_IFDOWN)
1620#define netif_msg_ifup(p)       ((p)->msg_enable & NETIF_MSG_IFUP)
1621#define netif_msg_rx_err(p)     ((p)->msg_enable & NETIF_MSG_RX_ERR)
1622#define netif_msg_tx_err(p)     ((p)->msg_enable & NETIF_MSG_TX_ERR)
1623#define netif_msg_tx_queued(p)  ((p)->msg_enable & NETIF_MSG_TX_QUEUED)
1624#define netif_msg_intr(p)       ((p)->msg_enable & NETIF_MSG_INTR)
1625#define netif_msg_tx_done(p)    ((p)->msg_enable & NETIF_MSG_TX_DONE)
1626#define netif_msg_rx_status(p)  ((p)->msg_enable & NETIF_MSG_RX_STATUS)
1627#define netif_msg_pktdata(p)    ((p)->msg_enable & NETIF_MSG_PKTDATA)
1628#define netif_msg_hw(p)         ((p)->msg_enable & NETIF_MSG_HW)
1629#define netif_msg_wol(p)        ((p)->msg_enable & NETIF_MSG_WOL)
1630
1631static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits)
1632{
1633        /* use default */
1634        if (debug_value < 0 || debug_value >= (sizeof(u32) * 8))
1635                return default_msg_enable_bits;
1636        if (debug_value == 0)   /* no output */
1637                return 0;
1638        /* set low N bits */
1639        return (1 << debug_value) - 1;
1640}
1641
1642static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
1643{
1644        spin_lock(&txq->_xmit_lock);
1645        txq->xmit_lock_owner = cpu;
1646}
1647
1648static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
1649{
1650        spin_lock_bh(&txq->_xmit_lock);
1651        txq->xmit_lock_owner = smp_processor_id();
1652}
1653
1654static inline int __netif_tx_trylock(struct netdev_queue *txq)
1655{
1656        int ok = spin_trylock(&txq->_xmit_lock);
1657        if (likely(ok))
1658                txq->xmit_lock_owner = smp_processor_id();
1659        return ok;
1660}
1661
1662static inline void __netif_tx_unlock(struct netdev_queue *txq)
1663{
1664        txq->xmit_lock_owner = -1;
1665        spin_unlock(&txq->_xmit_lock);
1666}
1667
1668static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
1669{
1670        txq->xmit_lock_owner = -1;
1671        spin_unlock_bh(&txq->_xmit_lock);
1672}
1673
1674/**
1675 *      netif_tx_lock - grab network device transmit lock
1676 *      @dev: network device
1677 *
1678 * Get network device transmit lock
1679 */
1680static inline void netif_tx_lock(struct net_device *dev)
1681{
1682        unsigned int i;
1683        int cpu;
1684
1685        spin_lock(&dev->tx_global_lock);
1686        cpu = smp_processor_id();
1687        for (i = 0; i < dev->num_tx_queues; i++) {
1688                struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1689
1690                /* We are the only thread of execution doing a
1691                 * freeze, but we have to grab the _xmit_lock in
1692                 * order to synchronize with threads which are in
1693                 * the ->hard_start_xmit() handler and already
1694                 * checked the frozen bit.
1695                 */
1696                __netif_tx_lock(txq, cpu);
1697                set_bit(__QUEUE_STATE_FROZEN, &txq->state);
1698                __netif_tx_unlock(txq);
1699        }
1700}
1701
1702static inline void netif_tx_lock_bh(struct net_device *dev)
1703{
1704        local_bh_disable();
1705        netif_tx_lock(dev);
1706}
1707
1708static inline void netif_tx_unlock(struct net_device *dev)
1709{
1710        unsigned int i;
1711
1712        for (i = 0; i < dev->num_tx_queues; i++) {
1713                struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1714
1715                /* No need to grab the _xmit_lock here.  If the
1716                 * queue is not stopped for another reason, we
1717                 * force a schedule.
1718                 */
1719                clear_bit(__QUEUE_STATE_FROZEN, &txq->state);
1720                if (!test_bit(__QUEUE_STATE_XOFF, &txq->state))
1721                        __netif_schedule(txq->qdisc);
1722        }
1723        spin_unlock(&dev->tx_global_lock);
1724}
1725
1726static inline void netif_tx_unlock_bh(struct net_device *dev)
1727{
1728        netif_tx_unlock(dev);
1729        local_bh_enable();
1730}
1731
1732#define HARD_TX_LOCK(dev, txq, cpu) {                   \
1733        if ((dev->features & NETIF_F_LLTX) == 0) {      \
1734                __netif_tx_lock(txq, cpu);              \
1735        }                                               \
1736}
1737
1738#define HARD_TX_UNLOCK(dev, txq) {                      \
1739        if ((dev->features & NETIF_F_LLTX) == 0) {      \
1740                __netif_tx_unlock(txq);                 \
1741        }                                               \
1742}
1743
1744static inline void netif_tx_disable(struct net_device *dev)
1745{
1746        unsigned int i;
1747        int cpu;
1748
1749        local_bh_disable();
1750        cpu = smp_processor_id();
1751        for (i = 0; i < dev->num_tx_queues; i++) {
1752                struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1753
1754                __netif_tx_lock(txq, cpu);
1755                netif_tx_stop_queue(txq);
1756                __netif_tx_unlock(txq);
1757        }
1758        local_bh_enable();
1759}
1760
1761static inline void netif_addr_lock(struct net_device *dev)
1762{
1763        spin_lock(&dev->addr_list_lock);
1764}
1765
1766static inline void netif_addr_lock_bh(struct net_device *dev)
1767{
1768        spin_lock_bh(&dev->addr_list_lock);
1769}
1770
1771static inline void netif_addr_unlock(struct net_device *dev)
1772{
1773        spin_unlock(&dev->addr_list_lock);
1774}
1775
1776static inline void netif_addr_unlock_bh(struct net_device *dev)
1777{
1778        spin_unlock_bh(&dev->addr_list_lock);
1779}
1780
1781/* These functions live elsewhere (drivers/net/net_init.c, but related) */
1782
1783extern void             ether_setup(struct net_device *dev);
1784
1785/* Support for loadable net-drivers */
1786extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
1787                                       void (*setup)(struct net_device *),
1788                                       unsigned int queue_count);
1789#define alloc_netdev(sizeof_priv, name, setup) \
1790        alloc_netdev_mq(sizeof_priv, name, setup, 1)
1791extern int              register_netdev(struct net_device *dev);
1792extern void             unregister_netdev(struct net_device *dev);
1793/* Functions used for secondary unicast and multicast support */
1794extern void             dev_set_rx_mode(struct net_device *dev);
1795extern void             __dev_set_rx_mode(struct net_device *dev);
1796extern int              dev_unicast_delete(struct net_device *dev, void *addr, int alen);
1797extern int              dev_unicast_add(struct net_device *dev, void *addr, int alen);
1798extern int              dev_unicast_sync(struct net_device *to, struct net_device *from);
1799extern void             dev_unicast_unsync(struct net_device *to, struct net_device *from);
1800extern int              dev_mc_delete(struct net_device *dev, void *addr, int alen, int all);
1801extern int              dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly);
1802extern int              dev_mc_sync(struct net_device *to, struct net_device *from);
1803extern void             dev_mc_unsync(struct net_device *to, struct net_device *from);
1804extern int              __dev_addr_delete(struct dev_addr_list **list, int *count, void *addr, int alen, int all);
1805extern int              __dev_addr_add(struct dev_addr_list **list, int *count, void *addr, int alen, int newonly);
1806extern int              __dev_addr_sync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
1807extern void             __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
1808extern int              dev_set_promiscuity(struct net_device *dev, int inc);
1809extern int              dev_set_allmulti(struct net_device *dev, int inc);
1810extern void             netdev_state_change(struct net_device *dev);
1811extern void             netdev_bonding_change(struct net_device *dev);
1812extern void             netdev_features_change(struct net_device *dev);
1813/* Load a device via the kmod */
1814extern void             dev_load(struct net *net, const char *name);
1815extern void             dev_mcast_init(void);
1816extern const struct net_device_stats *dev_get_stats(struct net_device *dev);
1817
1818extern int              netdev_max_backlog;
1819extern int              weight_p;
1820extern int              netdev_set_master(struct net_device *dev, struct net_device *master);
1821extern int skb_checksum_help(struct sk_buff *skb);
1822extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features);
1823#ifdef CONFIG_BUG
1824extern void netdev_rx_csum_fault(struct net_device *dev);
1825#else
1826static inline void netdev_rx_csum_fault(struct net_device *dev)
1827{
1828}
1829#endif
1830/* rx skb timestamps */
1831extern void             net_enable_timestamp(void);
1832extern void             net_disable_timestamp(void);
1833
1834#ifdef CONFIG_PROC_FS
1835extern void *dev_seq_start(struct seq_file *seq, loff_t *pos);
1836extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos);
1837extern void dev_seq_stop(struct seq_file *seq, void *v);
1838#endif
1839
1840extern int netdev_class_create_file(struct class_attribute *class_attr);
1841extern void netdev_class_remove_file(struct class_attribute *class_attr);
1842
1843extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len);
1844
1845extern void linkwatch_run_queue(void);
1846
1847unsigned long netdev_increment_features(unsigned long all, unsigned long one,
1848                                        unsigned long mask);
1849unsigned long netdev_fix_features(unsigned long features, const char *name);
1850
1851static inline int net_gso_ok(int features, int gso_type)
1852{
1853        int feature = gso_type << NETIF_F_GSO_SHIFT;
1854        return (features & feature) == feature;
1855}
1856
1857static inline int skb_gso_ok(struct sk_buff *skb, int features)
1858{
1859        return net_gso_ok(features, skb_shinfo(skb)->gso_type);
1860}
1861
1862static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb)
1863{
1864        return skb_is_gso(skb) &&
1865               (!skb_gso_ok(skb, dev->features) ||
1866                (skb_shinfo(skb)->frag_list &&
1867                 !(dev->features & NETIF_F_FRAGLIST)) ||
1868                unlikely(skb->ip_summed != CHECKSUM_PARTIAL));
1869}
1870
1871static inline void netif_set_gso_max_size(struct net_device *dev,
1872                                          unsigned int size)
1873{
1874        dev->gso_max_size = size;
1875}
1876
1877/* On bonding slaves other than the currently active slave, suppress
1878 * duplicates except for 802.3ad ETH_P_SLOW, alb non-mcast/bcast, and
1879 * ARP on active-backup slaves with arp_validate enabled.
1880 */
1881static inline int skb_bond_should_drop(struct sk_buff *skb)
1882{
1883        struct net_device *dev = skb->dev;
1884        struct net_device *master = dev->master;
1885
1886        if (master) {
1887                if (master->priv_flags & IFF_MASTER_ARPMON)
1888                        dev->last_rx = jiffies;
1889
1890                if (dev->priv_flags & IFF_SLAVE_INACTIVE) {
1891                        if ((dev->priv_flags & IFF_SLAVE_NEEDARP) &&
1892                            skb->protocol == __cpu_to_be16(ETH_P_ARP))
1893                                return 0;
1894
1895                        if (master->priv_flags & IFF_MASTER_ALB) {
1896                                if (skb->pkt_type != PACKET_BROADCAST &&
1897                                    skb->pkt_type != PACKET_MULTICAST)
1898                                        return 0;
1899                        }
1900                        if (master->priv_flags & IFF_MASTER_8023AD &&
1901                            skb->protocol == __cpu_to_be16(ETH_P_SLOW))
1902                                return 0;
1903
1904                        return 1;
1905                }
1906        }
1907        return 0;
1908}
1909
1910extern struct pernet_operations __net_initdata loopback_net_ops;
1911#endif /* __KERNEL__ */
1912
1913#endif  /* _LINUX_DEV_H */
1914
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.