Scroll to navigation

STRUCT NET_DEVICE(9) Network device support STRUCT NET_DEVICE(9)

NAME

struct_net_device - The DEVICE structure. Actually, this whole structure is a big mistake. It mixes I/O data with strictly “high-level” data, and it has to know about almost every data structure used in the INET module.

SYNOPSIS

struct net_device {

char name[IFNAMSIZ];
struct hlist_node name_hlist;
char * ifalias;
unsigned long mem_end;
unsigned long mem_start;
unsigned long base_addr;
int irq;
atomic_t carrier_changes;
unsigned long state;
struct list_head dev_list;
struct list_head napi_list;
struct list_head unreg_list;
struct list_head close_list;
struct list_head ptype_all;
struct list_head ptype_specific;
struct {unnamed_struct}; #if IS_ENABLED(CONFIG_GARP)
struct garp_port __rcu * garp_port; #endif #if IS_ENABLED(CONFIG_MRP)
struct mrp_port __rcu * mrp_port; #endif
struct device dev;
const struct attribute_group * sysfs_groups[4];
const struct attribute_group * sysfs_rx_queue_group;
const struct rtnl_link_ops * rtnl_link_ops; #define GSO_MAX_SIZE 65536
unsigned int gso_max_size; #define GSO_MAX_SEGS 65535
u16 gso_max_segs; #ifdef CONFIG_DCB
const struct dcbnl_rtnl_ops * dcbnl_ops; #endif
u8 num_tc;
struct netdev_tc_txq tc_to_txq[TC_MAX_QUEUE];
u8 prio_tc_map[TC_BITMASK + 1]; #if IS_ENABLED(CONFIG_FCOE)
unsigned int fcoe_ddp_xid; #endif #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO)
struct netprio_map __rcu * priomap; #endif
struct phy_device * phydev;
struct lock_class_key * qdisc_tx_busylock;
struct lock_class_key * qdisc_running_key;
bool proto_down; };

MEMBERS

char name[IFNAMSIZ]

This is the first field of the “visible” part of this structure (i.e. as seen by users in the “Space.c” file). It is the name of the interface.

struct hlist_node name_hlist

Device name hash chain, please keep it close to name[]

char * ifalias

SNMP alias

unsigned long mem_end

Shared memory end

unsigned long mem_start

Shared memory start

unsigned long base_addr

Device I/O address

int irq

Device IRQ number

atomic_t carrier_changes

Stats to monitor carrier on<->off transitions

unsigned long state

Generic network queuing layer state, see netdev_state_t

struct list_head dev_list

The global list of network devices

struct list_head napi_list

List entry used for polling NAPI devices

struct list_head unreg_list

List entry when we are unregistering the device; see the function unregister_netdev

struct list_head close_list

List entry used when we are closing the device

struct list_head ptype_all

Device-specific packet handlers for all protocols

struct list_head ptype_specific

Device-specific, protocol-specific packet handlers

struct {unnamed_struct}

anonymous

struct garp_port __rcu * garp_port

GARP

struct mrp_port __rcu * mrp_port

MRP

struct device dev

Class/net/name entry

const struct attribute_group * sysfs_groups[4]

Space for optional device, statistics and wireless sysfs groups

const struct attribute_group * sysfs_rx_queue_group

Space for optional per-rx queue attributes

const struct rtnl_link_ops * rtnl_link_ops

Rtnl_link_ops

unsigned int gso_max_size

Maximum size of generic segmentation offload

u16 gso_max_segs

Maximum number of segments that can be passed to the NIC for GSO

const struct dcbnl_rtnl_ops * dcbnl_ops

Data Center Bridging netlink ops

u8 num_tc

Number of traffic classes in the net device

struct netdev_tc_txq tc_to_txq[TC_MAX_QUEUE]

XXX: need comments on this one

u8 prio_tc_map[TC_BITMASK + 1]

XXX: need comments on this one

unsigned int fcoe_ddp_xid

Max exchange id for FCoE LRO by ddp

struct netprio_map __rcu * priomap

XXX: need comments on this one

struct phy_device * phydev

Physical device may attach itself for hardware timestamping

struct lock_class_key * qdisc_tx_busylock

lockdep class annotating Qdisc->busylock spinlock

struct lock_class_key * qdisc_running_key

lockdep class annotating Qdisc->running seqcount

bool proto_down

protocol port state information can be sent to the switch driver and used to set the phys state of the switch port.

DESCRIPTION

interface address info:

FIXME: cleanup struct net_device such that network protocol info moves out.

COPYRIGHT

June 2017 Kernel Hackers Manual 4.11