Lines Matching refs:rs

69 	struct rs_control *rs;  in rs_init()  local
73 rs = kmalloc(sizeof (struct rs_control), GFP_KERNEL); in rs_init()
74 if (rs == NULL) in rs_init()
77 INIT_LIST_HEAD(&rs->list); in rs_init()
79 rs->mm = symsize; in rs_init()
80 rs->nn = (1 << symsize) - 1; in rs_init()
81 rs->fcr = fcr; in rs_init()
82 rs->prim = prim; in rs_init()
83 rs->nroots = nroots; in rs_init()
84 rs->gfpoly = gfpoly; in rs_init()
85 rs->gffunc = gffunc; in rs_init()
88 rs->alpha_to = kmalloc(sizeof(uint16_t) * (rs->nn + 1), GFP_KERNEL); in rs_init()
89 if (rs->alpha_to == NULL) in rs_init()
92 rs->index_of = kmalloc(sizeof(uint16_t) * (rs->nn + 1), GFP_KERNEL); in rs_init()
93 if (rs->index_of == NULL) in rs_init()
96 rs->genpoly = kmalloc(sizeof(uint16_t) * (rs->nroots + 1), GFP_KERNEL); in rs_init()
97 if(rs->genpoly == NULL) in rs_init()
101 rs->index_of[0] = rs->nn; /* log(zero) = -inf */ in rs_init()
102 rs->alpha_to[rs->nn] = 0; /* alpha**-inf = 0 */ in rs_init()
105 for (i = 0; i < rs->nn; i++) { in rs_init()
106 rs->index_of[sr] = i; in rs_init()
107 rs->alpha_to[i] = sr; in rs_init()
111 sr &= rs->nn; in rs_init()
115 for (i = 0; i < rs->nn; i++) { in rs_init()
116 rs->index_of[sr] = i; in rs_init()
117 rs->alpha_to[i] = sr; in rs_init()
122 if(sr != rs->alpha_to[0]) in rs_init()
126 for(iprim = 1; (iprim % prim) != 0; iprim += rs->nn); in rs_init()
128 rs->iprim = iprim / prim; in rs_init()
131 rs->genpoly[0] = 1; in rs_init()
133 rs->genpoly[i + 1] = 1; in rs_init()
136 if (rs->genpoly[j] != 0) { in rs_init()
137 rs->genpoly[j] = rs->genpoly[j -1] ^ in rs_init()
138 rs->alpha_to[rs_modnn(rs, in rs_init()
139 rs->index_of[rs->genpoly[j]] + root)]; in rs_init()
141 rs->genpoly[j] = rs->genpoly[j - 1]; in rs_init()
144 rs->genpoly[0] = in rs_init()
145 rs->alpha_to[rs_modnn(rs, in rs_init()
146 rs->index_of[rs->genpoly[0]] + root)]; in rs_init()
150 rs->genpoly[i] = rs->index_of[rs->genpoly[i]]; in rs_init()
151 return rs; in rs_init()
155 kfree(rs->genpoly); in rs_init()
157 kfree(rs->index_of); in rs_init()
159 kfree(rs->alpha_to); in rs_init()
161 kfree(rs); in rs_init()
171 void free_rs(struct rs_control *rs) in free_rs() argument
174 rs->users--; in free_rs()
175 if(!rs->users) { in free_rs()
176 list_del(&rs->list); in free_rs()
177 kfree(rs->alpha_to); in free_rs()
178 kfree(rs->index_of); in free_rs()
179 kfree(rs->genpoly); in free_rs()
180 kfree(rs); in free_rs()
204 struct rs_control *rs; in init_rs_internal() local
220 rs = list_entry(tmp, struct rs_control, list); in init_rs_internal()
221 if (symsize != rs->mm) in init_rs_internal()
223 if (gfpoly != rs->gfpoly) in init_rs_internal()
225 if (gffunc != rs->gffunc) in init_rs_internal()
227 if (fcr != rs->fcr) in init_rs_internal()
229 if (prim != rs->prim) in init_rs_internal()
231 if (nroots != rs->nroots) in init_rs_internal()
234 rs->users++; in init_rs_internal()
239 rs = rs_init(symsize, gfpoly, gffunc, fcr, prim, nroots); in init_rs_internal()
240 if (rs) { in init_rs_internal()
241 rs->users = 1; in init_rs_internal()
242 list_add(&rs->list, &rslist); in init_rs_internal()
246 return rs; in init_rs_internal()
298 int encode_rs8(struct rs_control *rs, uint8_t *data, int len, uint16_t *par, in encode_rs8() argument
324 int decode_rs8(struct rs_control *rs, uint8_t *data, uint16_t *par, int len, in decode_rs8() argument
344 int encode_rs16(struct rs_control *rs, uint16_t *data, int len, uint16_t *par, in encode_rs16() argument
368 int decode_rs16(struct rs_control *rs, uint16_t *data, uint16_t *par, int len, in decode_rs16() argument