From: Luis R. Rodriguez Date: Sat, 5 Apr 2014 23:21:15 +0000 (+0000) Subject: backports: backport u64_stats_fetch_begin_irq() and u64_stats_fetch_retry_irq() X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=ce0c44e73cff47b160c69c123e79c99922e08ada;p=openwrt%2Fstaging%2Fblogic.git backports: backport u64_stats_fetch_begin_irq() and u64_stats_fetch_retry_irq() The bh version u64_stats_fetch_begin_bh() and u64_stats_fetch_retry_bh() got dropped in favor for an IRQ safe variant. We can now remove u64_stats_fetch_begin_bh() and u64_stats_fetch_retry_bh() as we work carrying over what is upstream and no drivers upstream use this anymore. Cc: Eric W. Biederman Signed-off-by: Luis R. Rodriguez --- diff --git a/backport/backport-include/linux/u64_stats_sync.h b/backport/backport-include/linux/u64_stats_sync.h index 4fefb3c56af4..03023225b53b 100644 --- a/backport/backport-include/linux/u64_stats_sync.h +++ b/backport/backport-include/linux/u64_stats_sync.h @@ -32,8 +32,8 @@ * (On UP, there is no seqcount_t protection, a reader allowing interrupts could * read partial values) * - * 7) For softirq uses, readers can use u64_stats_fetch_begin_bh() and - * u64_stats_fetch_retry_bh() helpers + * 7) For softirq uses, readers can use u64_stats_fetch_begin_irq() and + * u64_stats_fetch_retry_irq() helpers * * Usage : * @@ -111,38 +111,35 @@ static inline bool u64_stats_fetch_retry(const struct u64_stats_sync *syncp, #endif } -/* - * In case softirq handlers can update u64 counters, readers can use following helpers - * - SMP 32bit arches use seqcount protection, irq safe. - * - UP 32bit must disable BH. - * - 64bit have no problem atomically reading u64 values, irq safe. - */ -static inline unsigned int u64_stats_fetch_begin_bh(const struct u64_stats_sync *syncp) +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0) +static inline unsigned int u64_stats_fetch_begin_irq(const struct u64_stats_sync *syncp) { #if BITS_PER_LONG==32 && defined(CONFIG_SMP) return read_seqcount_begin(&syncp->seq); #else #if BITS_PER_LONG==32 - local_bh_disable(); + local_irq_disable(); #endif return 0; #endif } -static inline bool u64_stats_fetch_retry_bh(const struct u64_stats_sync *syncp, +static inline bool u64_stats_fetch_retry_irq(const struct u64_stats_sync *syncp, unsigned int start) { #if BITS_PER_LONG==32 && defined(CONFIG_SMP) return read_seqcount_retry(&syncp->seq, start); #else #if BITS_PER_LONG==32 - local_bh_enable(); + local_irq_enable(); #endif return false; #endif } -#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) */ +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) */ #if LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0) #if BITS_PER_LONG == 32 && defined(CONFIG_SMP)