// SPDX-License-Identifier: GPL-2.0 /* * Generic Reed Solomon encoder / decoder library * * Copyright (C) 2004 Thomas Gleixner (tglx@linutronix.de) * * RS code lifted from reed solomon library written by Phil Karn * Copyright 2002 Phil Karn, KA9Q */ #ifndef _RSLIB_H_ #define _RSLIB_H_ #include #include /* for gfp_t */ #include /* for GFP_KERNEL */ /** * struct rs_codec - rs codec data * * @mm: Bits per symbol * @nn: Symbols per block (= (1<mm = number of bits per symbol * rs->nn = (2^rs->mm) - 1 * * Simple arithmetic modulo would return a wrong result for values * >= 3 * rs->nn */ static inline int rs_modnn(struct rs_codec *rs, int x) { while (x >= rs->nn) { x -= rs->nn; x = (x >> rs->mm) + (x & rs->nn); } return x; } #endif