diff options
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r-- | include/linux/netdevice.h | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index fcd3dda86322..d8fd2c23a1b9 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -585,15 +585,15 @@ static inline void rps_reset_sock_flow(struct rps_sock_flow_table *table, | |||
585 | table->ents[hash & table->mask] = RPS_NO_CPU; | 585 | table->ents[hash & table->mask] = RPS_NO_CPU; |
586 | } | 586 | } |
587 | 587 | ||
588 | extern struct rps_sock_flow_table *rps_sock_flow_table; | 588 | extern struct rps_sock_flow_table __rcu *rps_sock_flow_table; |
589 | 589 | ||
590 | /* This structure contains an instance of an RX queue. */ | 590 | /* This structure contains an instance of an RX queue. */ |
591 | struct netdev_rx_queue { | 591 | struct netdev_rx_queue { |
592 | struct rps_map *rps_map; | 592 | struct rps_map __rcu *rps_map; |
593 | struct rps_dev_flow_table *rps_flow_table; | 593 | struct rps_dev_flow_table __rcu *rps_flow_table; |
594 | struct kobject kobj; | 594 | struct kobject kobj; |
595 | struct netdev_rx_queue *first; | 595 | struct netdev_rx_queue *first; |
596 | atomic_t count; | 596 | atomic_t count; |
597 | } ____cacheline_aligned_in_smp; | 597 | } ____cacheline_aligned_in_smp; |
598 | #endif /* CONFIG_RPS */ | 598 | #endif /* CONFIG_RPS */ |
599 | 599 | ||
@@ -944,7 +944,7 @@ struct net_device { | |||
944 | /* Protocol specific pointers */ | 944 | /* Protocol specific pointers */ |
945 | 945 | ||
946 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) | 946 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) |
947 | struct vlan_group *vlgrp; /* VLAN group */ | 947 | struct vlan_group __rcu *vlgrp; /* VLAN group */ |
948 | #endif | 948 | #endif |
949 | #ifdef CONFIG_NET_DSA | 949 | #ifdef CONFIG_NET_DSA |
950 | void *dsa_ptr; /* dsa specific data */ | 950 | void *dsa_ptr; /* dsa specific data */ |
@@ -952,7 +952,7 @@ struct net_device { | |||
952 | void *atalk_ptr; /* AppleTalk link */ | 952 | void *atalk_ptr; /* AppleTalk link */ |
953 | struct in_device __rcu *ip_ptr; /* IPv4 specific data */ | 953 | struct in_device __rcu *ip_ptr; /* IPv4 specific data */ |
954 | void *dn_ptr; /* DECnet specific data */ | 954 | void *dn_ptr; /* DECnet specific data */ |
955 | void *ip6_ptr; /* IPv6 specific data */ | 955 | struct inet6_dev __rcu *ip6_ptr; /* IPv6 specific data */ |
956 | void *ec_ptr; /* Econet specific data */ | 956 | void *ec_ptr; /* Econet specific data */ |
957 | void *ax25_ptr; /* AX.25 specific data */ | 957 | void *ax25_ptr; /* AX.25 specific data */ |
958 | struct wireless_dev *ieee80211_ptr; /* IEEE 802.11 specific data, | 958 | struct wireless_dev *ieee80211_ptr; /* IEEE 802.11 specific data, |
@@ -1072,7 +1072,7 @@ struct net_device { | |||
1072 | struct pcpu_dstats __percpu *dstats; /* dummy stats */ | 1072 | struct pcpu_dstats __percpu *dstats; /* dummy stats */ |
1073 | }; | 1073 | }; |
1074 | /* GARP */ | 1074 | /* GARP */ |
1075 | struct garp_port *garp_port; | 1075 | struct garp_port __rcu *garp_port; |
1076 | 1076 | ||
1077 | /* class/net/name entry */ | 1077 | /* class/net/name entry */ |
1078 | struct device dev; | 1078 | struct device dev; |
@@ -1554,6 +1554,11 @@ static inline void netif_tx_wake_all_queues(struct net_device *dev) | |||
1554 | 1554 | ||
1555 | static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue) | 1555 | static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue) |
1556 | { | 1556 | { |
1557 | if (WARN_ON(!dev_queue)) { | ||
1558 | printk(KERN_INFO "netif_stop_queue() cannot be called before " | ||
1559 | "register_netdev()"); | ||
1560 | return; | ||
1561 | } | ||
1557 | set_bit(__QUEUE_STATE_XOFF, &dev_queue->state); | 1562 | set_bit(__QUEUE_STATE_XOFF, &dev_queue->state); |
1558 | } | 1563 | } |
1559 | 1564 | ||