|
@@ -2068,20 +2068,23 @@ struct pcpu_sw_netstats {
|
|
|
struct u64_stats_sync syncp;
|
|
|
};
|
|
|
|
|
|
-#define netdev_alloc_pcpu_stats(type) \
|
|
|
-({ \
|
|
|
- typeof(type) __percpu *pcpu_stats = alloc_percpu(type); \
|
|
|
- if (pcpu_stats) { \
|
|
|
- int __cpu; \
|
|
|
- for_each_possible_cpu(__cpu) { \
|
|
|
- typeof(type) *stat; \
|
|
|
- stat = per_cpu_ptr(pcpu_stats, __cpu); \
|
|
|
- u64_stats_init(&stat->syncp); \
|
|
|
- } \
|
|
|
- } \
|
|
|
- pcpu_stats; \
|
|
|
+#define __netdev_alloc_pcpu_stats(type, gfp) \
|
|
|
+({ \
|
|
|
+ typeof(type) __percpu *pcpu_stats = alloc_percpu_gfp(type, gfp);\
|
|
|
+ if (pcpu_stats) { \
|
|
|
+ int __cpu; \
|
|
|
+ for_each_possible_cpu(__cpu) { \
|
|
|
+ typeof(type) *stat; \
|
|
|
+ stat = per_cpu_ptr(pcpu_stats, __cpu); \
|
|
|
+ u64_stats_init(&stat->syncp); \
|
|
|
+ } \
|
|
|
+ } \
|
|
|
+ pcpu_stats; \
|
|
|
})
|
|
|
|
|
|
+#define netdev_alloc_pcpu_stats(type) \
|
|
|
+ __netdev_alloc_pcpu_stats(type, GFP_KERNEL);
|
|
|
+
|
|
|
#include <linux/notifier.h>
|
|
|
|
|
|
/* netdevice notifier chain. Please remember to update the rtnetlink
|