Lines Matching full:db
173 static int bsd_init (void *db, unsigned char *options,
222 bsd_clear(struct bsd_db *db) in bsd_clear() argument
224 db->clear_count++; in bsd_clear()
225 db->max_ent = FIRST-1; in bsd_clear()
226 db->n_bits = BSD_INIT_BITS; in bsd_clear()
227 db->bytes_out = 0; in bsd_clear()
228 db->in_count = 0; in bsd_clear()
229 db->ratio = 0; in bsd_clear()
230 db->checkpoint = CHECK_GAP; in bsd_clear()
247 static int bsd_check (struct bsd_db *db) /* 1=output CLEAR */ in bsd_check() argument
251 if (db->in_count >= db->checkpoint) in bsd_check()
254 if (db->in_count >= RATIO_MAX || db->bytes_out >= RATIO_MAX) in bsd_check()
256 db->in_count -= (db->in_count >> 2); in bsd_check()
257 db->bytes_out -= (db->bytes_out >> 2); in bsd_check()
260 db->checkpoint = db->in_count + CHECK_GAP; in bsd_check()
262 if (db->max_ent >= db->maxmaxcode) in bsd_check()
269 * db->in_count <= RATIO_MAX. in bsd_check()
272 new_ratio = db->in_count << RATIO_SCALE_LOG; in bsd_check()
273 if (db->bytes_out != 0) in bsd_check()
275 new_ratio /= db->bytes_out; in bsd_check()
278 if (new_ratio < db->ratio || new_ratio < 1 * RATIO_SCALE) in bsd_check()
280 bsd_clear (db); in bsd_check()
283 db->ratio = new_ratio; in bsd_check()
295 struct bsd_db *db = (struct bsd_db *) state; in bsd_comp_stats() local
297 stats->unc_bytes = db->uncomp_bytes; in bsd_comp_stats()
298 stats->unc_packets = db->uncomp_count; in bsd_comp_stats()
299 stats->comp_bytes = db->comp_bytes; in bsd_comp_stats()
300 stats->comp_packets = db->comp_count; in bsd_comp_stats()
301 stats->inc_bytes = db->incomp_bytes; in bsd_comp_stats()
302 stats->inc_packets = db->incomp_count; in bsd_comp_stats()
303 stats->in_count = db->in_count; in bsd_comp_stats()
304 stats->bytes_out = db->bytes_out; in bsd_comp_stats()
313 struct bsd_db *db = (struct bsd_db *) state; in bsd_reset() local
315 bsd_clear(db); in bsd_reset()
317 db->seqno = 0; in bsd_reset()
318 db->clear_count = 0; in bsd_reset()
327 struct bsd_db *db = state; in bsd_free() local
329 if (!db) in bsd_free()
335 vfree(db->dict); in bsd_free()
336 db->dict = NULL; in bsd_free()
340 vfree(db->lens); in bsd_free()
341 db->lens = NULL; in bsd_free()
345 kfree(db); in bsd_free()
356 struct bsd_db *db; in bsd_alloc() local
398 db = kzalloc_obj(struct bsd_db); in bsd_alloc()
399 if (!db) in bsd_alloc()
408 db->dict = vmalloc_array(hsize, sizeof(struct bsd_dict)); in bsd_alloc()
409 if (!db->dict) in bsd_alloc()
411 bsd_free (db); in bsd_alloc()
420 db->lens = NULL; in bsd_alloc()
427 db->lens = vmalloc_array(maxmaxcode + 1, sizeof(db->lens[0])); in bsd_alloc()
428 if (!db->lens) in bsd_alloc()
430 bsd_free (db); in bsd_alloc()
437 db->totlen = sizeof (struct bsd_db) + in bsd_alloc()
440 db->hsize = hsize; in bsd_alloc()
441 db->hshift = hshift; in bsd_alloc()
442 db->maxmaxcode = maxmaxcode; in bsd_alloc()
443 db->maxbits = bits; in bsd_alloc()
445 return (void *) db; in bsd_alloc()
465 struct bsd_db *db = state; in bsd_init() local
470 || (BSD_NBITS(options[2]) != db->maxbits) in bsd_init()
471 || (decomp && db->lens == NULL)) in bsd_init()
481 db->lens[indx] = 1; in bsd_init()
486 indx = db->hsize; in bsd_init()
489 db->dict[indx].codem1 = BADCODEM1; in bsd_init()
490 db->dict[indx].cptr = 0; in bsd_init()
493 db->unit = unit; in bsd_init()
494 db->mru = 0; in bsd_init()
498 db->debug = 1; in bsd_init()
500 bsd_reset(db); in bsd_init()
526 static unsigned short *lens_ptr(struct bsd_db *db, int idx) in lens_ptr() argument
528 if ((unsigned int) idx > (unsigned int) db->maxmaxcode) in lens_ptr()
533 return lens_ptrx (db, idx); in lens_ptr()
536 static struct bsd_dict *dict_ptr(struct bsd_db *db, int idx) in dict_ptr() argument
538 if ((unsigned int) idx >= (unsigned int) db->hsize) in dict_ptr()
543 return dict_ptrx (db, idx); in dict_ptr()
547 #define lens_ptr(db,idx) lens_ptrx(db,idx) argument
548 #define dict_ptr(db,idx) dict_ptrx(db,idx) argument
565 struct bsd_db *db; in bsd_compress() local
620 db = (struct bsd_db *) state; in bsd_compress()
621 hshift = db->hshift; in bsd_compress()
622 max_ent = db->max_ent; in bsd_compress()
623 n_bits = db->n_bits; in bsd_compress()
644 *wptr++ = db->seqno >> 8; in bsd_compress()
645 *wptr++ = db->seqno; in bsd_compress()
658 dictp = dict_ptr (db, hval); in bsd_compress()
678 if (hval >= db->hsize) in bsd_compress()
680 hval -= db->hsize; in bsd_compress()
682 dictp = dict_ptr (db, hval); in bsd_compress()
697 if (max_ent < db->maxmaxcode) in bsd_compress()
706 db->n_bits = ++n_bits; in bsd_compress()
714 dictp2 = dict_ptr (db, max_ent + 1); in bsd_compress()
716 dictp3 = dict_ptr (db, indx); in bsd_compress()
726 db->max_ent = ++max_ent; in bsd_compress()
728 if (db->lens) in bsd_compress()
730 unsigned short *len1 = lens_ptr (db, max_ent); in bsd_compress()
731 unsigned short *len2 = lens_ptr (db, ent); in bsd_compress()
740 db->bytes_out += olen - PPP_HDRLEN - BSD_OVHD; in bsd_compress()
741 db->uncomp_bytes += isize; in bsd_compress()
742 db->in_count += isize; in bsd_compress()
743 ++db->uncomp_count; in bsd_compress()
744 ++db->seqno; in bsd_compress()
748 ++db->bytes_out; /* must be set before calling bsd_check */ in bsd_compress()
755 if (bsd_check(db)) in bsd_compress()
775 if (max_ent >= mxcode && max_ent < db->maxmaxcode) in bsd_compress()
777 db->n_bits++; in bsd_compress()
783 ++db->incomp_count; in bsd_compress()
784 db->incomp_bytes += isize; in bsd_compress()
789 ++db->comp_count; in bsd_compress()
790 db->comp_bytes += olen; in bsd_compress()
829 struct bsd_db *db; in bsd_decompress() local
849 db = (struct bsd_db *) state; in bsd_decompress()
850 max_ent = db->max_ent; in bsd_decompress()
853 n_bits = db->n_bits; in bsd_decompress()
874 if (seq != db->seqno) in bsd_decompress()
876 if (db->debug) in bsd_decompress()
879 db->unit, seq, db->seqno - 1); in bsd_decompress()
884 ++db->seqno; in bsd_decompress()
885 db->bytes_out += ilen; in bsd_decompress()
909 db->in_count += (explen - 3); /* don't count the header */ in bsd_decompress()
938 if (db->debug) in bsd_decompress()
940 printk("bsd_decomp%d: bad CLEAR\n", db->unit); in bsd_decompress()
945 bsd_clear(db); in bsd_decompress()
949 if ((incode > max_ent + 2) || (incode > db->maxmaxcode) in bsd_decompress()
952 if (db->debug) in bsd_decompress()
955 db->unit, incode, oldcode); in bsd_decompress()
957 max_ent, explen, db->seqno); in bsd_decompress()
974 codelen = *(lens_ptr (db, finchar)); in bsd_decompress()
978 if (db->debug) in bsd_decompress()
980 printk("bsd_decomp%d: ran out of mru\n", db->unit); in bsd_decompress()
997 struct bsd_dict *dictp2 = dict_ptr (db, finchar); in bsd_decompress()
999 dictp = dict_ptr (db, dictp2->cptr); in bsd_decompress()
1005 printk("bsd_decomp%d: fell off end of chain ", db->unit); in bsd_decompress()
1015 db->unit, incode, finchar); in bsd_decompress()
1033 db->unit, codelen, incode, max_ent); in bsd_decompress()
1050 if (oldcode != CLEAR && max_ent < db->maxmaxcode) in bsd_decompress()
1058 hval = BSD_HASH(oldcode,finchar,db->hshift); in bsd_decompress()
1059 dictp = dict_ptr (db, hval); in bsd_decompress()
1068 if (hval >= db->hsize) in bsd_decompress()
1070 hval -= db->hsize; in bsd_decompress()
1072 dictp = dict_ptr (db, hval); in bsd_decompress()
1082 dictp2 = dict_ptr (db, max_ent + 1); in bsd_decompress()
1084 dictp3 = dict_ptr (db, indx); in bsd_decompress()
1094 db->max_ent = ++max_ent; in bsd_decompress()
1097 lens1 = lens_ptr (db, max_ent); in bsd_decompress()
1098 lens2 = lens_ptr (db, oldcode); in bsd_decompress()
1102 if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode) in bsd_decompress()
1104 db->n_bits = ++n_bits; in bsd_decompress()
1111 ++db->comp_count; in bsd_decompress()
1112 ++db->uncomp_count; in bsd_decompress()
1113 db->comp_bytes += isize - BSD_OVHD - PPP_HDRLEN; in bsd_decompress()
1114 db->uncomp_bytes += explen; in bsd_decompress()
1116 if (bsd_check(db)) in bsd_decompress()
1118 if (db->debug) in bsd_decompress()
1121 db->unit, db->seqno - 1); in bsd_decompress()