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