struct net_device { char name[16]; /* 0 16 */ struct hlist_node name_hlist; /* 16 16 */ struct dev_ifalias * ifalias; /* 32 8 */ long unsigned int mem_end; /* 40 8 */ long unsigned int mem_start; /* 48 8 */ long unsigned int base_addr; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ int irq; /* 64 4 */ /* XXX 4 bytes hole, try to pack */ long unsigned int state; /* 72 8 */ struct list_head dev_list; /* 80 16 */ struct list_head napi_list; /* 96 16 */ struct list_head unreg_list; /* 112 16 */ /* --- cacheline 2 boundary (128 bytes) --- */ struct list_head close_list; /* 128 16 */ struct list_head ptype_all; /* 144 16 */ struct list_head ptype_specific; /* 160 16 */ struct { struct list_head upper; /* 176 16 */ struct list_head lower; /* 192 16 */ } adj_list; /* 176 32 */ /* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */ netdev_features_t features; /* 208 8 */ netdev_features_t hw_features; /* 216 8 */ netdev_features_t wanted_features; /* 224 8 */ netdev_features_t vlan_features; /* 232 8 */ netdev_features_t hw_enc_features; /* 240 8 */ netdev_features_t mpls_features; /* 248 8 */ /* --- cacheline 4 boundary (256 bytes) --- */ netdev_features_t gso_partial_features; /* 256 8 */ int ifindex; /* 264 4 */ int group; /* 268 4 */ struct net_device_stats stats; /* 272 184 */ /* --- cacheline 7 boundary (448 bytes) was 8 bytes ago --- */ atomic_long_t rx_dropped; /* 456 8 */ atomic_long_t tx_dropped; /* 464 8 */ atomic_long_t rx_nohandler; /* 472 8 */ atomic_t carrier_up_count; /* 480 4 */ atomic_t carrier_down_count; /* 484 4 */ const struct net_device_ops * netdev_ops; /* 488 8 */ const struct ethtool_ops * ethtool_ops; /* 496 8 */ const struct ndisc_ops * ndisc_ops; /* 504 8 */ /* --- cacheline 8 boundary (512 bytes) --- */ const struct header_ops * header_ops; /* 512 8 */ unsigned int flags; /* 520 4 */ unsigned int priv_flags; /* 524 4 */ short unsigned int gflags; /* 528 2 */ short unsigned int padded; /* 530 2 */ unsigned char operstate; /* 532 1 */ unsigned char link_mode; /* 533 1 */ unsigned char if_port; /* 534 1 */ unsigned char dma; /* 535 1 */ unsigned int mtu; /* 536 4 */ unsigned int min_mtu; /* 540 4 */ unsigned int max_mtu; /* 544 4 */ short unsigned int type; /* 548 2 */ short unsigned int hard_header_len; /* 550 2 */ unsigned char min_header_len; /* 552 1 */ /* XXX 1 byte hole, try to pack */ short unsigned int needed_headroom; /* 554 2 */ short unsigned int needed_tailroom; /* 556 2 */ unsigned char perm_addr[32]; /* 558 32 */ /* --- cacheline 9 boundary (576 bytes) was 14 bytes ago --- */ unsigned char addr_assign_type; /* 590 1 */ unsigned char addr_len; /* 591 1 */ unsigned char vid_len; /* 592 1 */ /* XXX 1 byte hole, try to pack */ short unsigned int neigh_priv_len; /* 594 2 */ short unsigned int dev_id; /* 596 2 */ short unsigned int dev_port; /* 598 2 */ spinlock_t addr_list_lock; /* 600 4 */ unsigned char name_assign_type; /* 604 1 */ bool uc_promisc; /* 605 1 */ /* XXX 2 bytes hole, try to pack */ struct netdev_hw_addr_list uc; /* 608 24 */ struct netdev_hw_addr_list mc; /* 632 24 */ /* --- cacheline 10 boundary (640 bytes) was 16 bytes ago --- */ struct netdev_hw_addr_list dev_addrs; /* 656 24 */ struct kset * queues_kset; /* 680 8 */ unsigned int promiscuity; /* 688 4 */ unsigned int allmulti; /* 692 4 */ struct vlan_info * vlan_info; /* 696 8 */ /* --- cacheline 11 boundary (704 bytes) --- */ struct in_device * ip_ptr; /* 704 8 */ struct inet6_dev * ip6_ptr; /* 712 8 */ struct wireless_dev * ieee80211_ptr; /* 720 8 */ struct wpan_dev * ieee802154_ptr; /* 728 8 */ unsigned char * dev_addr; /* 736 8 */ struct netdev_rx_queue * _rx; /* 744 8 */ unsigned int num_rx_queues; /* 752 4 */ unsigned int real_num_rx_queues; /* 756 4 */ struct bpf_prog * xdp_prog; /* 760 8 */ /* --- cacheline 12 boundary (768 bytes) --- */ long unsigned int gro_flush_timeout; /* 768 8 */ rx_handler_func_t * rx_handler; /* 776 8 */ void * rx_handler_data; /* 784 8 */ struct netdev_queue * ingress_queue; /* 792 8 */ struct nf_hook_entries * nf_hooks_ingress; /* 800 8 */ unsigned char broadcast[32]; /* 808 32 */ /* --- cacheline 13 boundary (832 bytes) was 8 bytes ago --- */ struct cpu_rmap * rx_cpu_rmap; /* 840 8 */ struct hlist_node index_hlist; /* 848 16 */ /* XXX 32 bytes hole, try to pack */ /* --- cacheline 14 boundary (896 bytes) --- */ struct netdev_queue * _tx; /* 896 8 */ unsigned int num_tx_queues; /* 904 4 */ unsigned int real_num_tx_queues; /* 908 4 */ struct Qdisc * qdisc; /* 912 8 */ unsigned int tx_queue_len; /* 920 4 */ spinlock_t tx_global_lock; /* 924 4 */ int watchdog_timeo; /* 928 4 */ /* XXX 4 bytes hole, try to pack */ struct xps_dev_maps * xps_cpus_map; /* 936 8 */ struct xps_dev_maps * xps_rxqs_map; /* 944 8 */ struct timer_list watchdog_timer; /* 952 40 */ /* --- cacheline 15 boundary (960 bytes) was 32 bytes ago --- */ int * pcpu_refcnt; /* 992 8 */ struct list_head todo_list; /* 1000 16 */ struct list_head link_watch_list; /* 1016 16 */ /* --- cacheline 16 boundary (1024 bytes) was 8 bytes ago --- */ enum { NETREG_UNINITIALIZED = 0, NETREG_REGISTERED = 1, NETREG_UNREGISTERING = 2, NETREG_UNREGISTERED = 3, NETREG_RELEASED = 4, NETREG_DUMMY = 5, } reg_state:8; /* 1032 4 */ /* Bitfield combined with next fields */ bool dismantle; /* 1033 1 */ /* Bitfield combined with previous fields */ enum { RTNL_LINK_INITIALIZED = 0, RTNL_LINK_INITIALIZING = 1, } rtnl_link_state:16; /* 1032 4 */ bool needs_free_netdev; /* 1036 1 */ /* XXX 3 bytes hole, try to pack */ void (*priv_destructor)(struct net_device *); /* 1040 8 */ possible_net_t nd_net; /* 1048 8 */ union { void * ml_priv; /* 8 */ struct pcpu_lstats * lstats; /* 8 */ struct pcpu_sw_netstats * tstats; /* 8 */ struct pcpu_dstats * dstats; /* 8 */ }; /* 1056 8 */ struct garp_port * garp_port; /* 1064 8 */ struct mrp_port * mrp_port; /* 1072 8 */ struct device dev; /* 1080 768 */ /* --- cacheline 28 boundary (1792 bytes) was 56 bytes ago --- */ const struct attribute_group * sysfs_groups[4]; /* 1848 32 */ /* --- cacheline 29 boundary (1856 bytes) was 24 bytes ago --- */ const struct attribute_group * sysfs_rx_queue_group; /* 1880 8 */ const struct rtnl_link_ops * rtnl_link_ops; /* 1888 8 */ unsigned int gso_max_size; /* 1896 4 */ u16 gso_max_segs; /* 1900 2 */ s16 num_tc; /* 1902 2 */ struct netdev_tc_txq tc_to_txq[16]; /* 1904 64 */ /* --- cacheline 30 boundary (1920 bytes) was 48 bytes ago --- */ u8 prio_tc_map[16]; /* 1968 16 */ /* --- cacheline 31 boundary (1984 bytes) --- */ struct phy_device * phydev; /* 1984 8 */ struct sfp_bus * sfp_bus; /* 1992 8 */ struct lock_class_key * qdisc_tx_busylock; /* 2000 8 */ struct lock_class_key * qdisc_running_key; /* 2008 8 */ bool proto_down; /* 2016 1 */ /* Bitfield combined with previous fields */ unsigned int wol_enabled:1; /* 2016:23 4 */ /* size: 2048, cachelines: 32, members: 121 */ /* sum members: 1973, holes: 7, sum holes: 47 */ /* padding: 28 */ /* bit_padding: 31 bits */ };