diff options
Diffstat (limited to 'include/net/snmp.h')
-rw-r--r-- | include/net/snmp.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/include/net/snmp.h b/include/net/snmp.h index 0147b901e79c..71596261fa99 100644 --- a/include/net/snmp.h +++ b/include/net/snmp.h | |||
@@ -154,13 +154,15 @@ struct linux_xfrm_mib { | |||
154 | */ | 154 | */ |
155 | #define SNMP_UPD_PO_STATS(mib, basefield, addend) \ | 155 | #define SNMP_UPD_PO_STATS(mib, basefield, addend) \ |
156 | do { \ | 156 | do { \ |
157 | this_cpu_inc(mib[0]->mibs[basefield##PKTS]); \ | 157 | __typeof__(*mib[0]->mibs) *ptr = mib[0]->mibs; \ |
158 | this_cpu_add(mib[0]->mibs[basefield##OCTETS], addend); \ | 158 | this_cpu_inc(ptr[basefield##PKTS]); \ |
159 | this_cpu_add(ptr[basefield##OCTETS], addend); \ | ||
159 | } while (0) | 160 | } while (0) |
160 | #define SNMP_UPD_PO_STATS_BH(mib, basefield, addend) \ | 161 | #define SNMP_UPD_PO_STATS_BH(mib, basefield, addend) \ |
161 | do { \ | 162 | do { \ |
162 | __this_cpu_inc(mib[0]->mibs[basefield##PKTS]); \ | 163 | __typeof__(*mib[0]->mibs) *ptr = mib[0]->mibs; \ |
163 | __this_cpu_add(mib[0]->mibs[basefield##OCTETS], addend); \ | 164 | __this_cpu_inc(ptr[basefield##PKTS]); \ |
165 | __this_cpu_add(ptr[basefield##OCTETS], addend); \ | ||
164 | } while (0) | 166 | } while (0) |
165 | 167 | ||
166 | 168 | ||