Lines Matching refs: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()
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(sizeof (struct bsd_db), in bsd_alloc()
400 if (!db) in bsd_alloc()
409 db->dict = vmalloc(array_size(hsize, sizeof(struct bsd_dict))); in bsd_alloc()
410 if (!db->dict) in bsd_alloc()
412 bsd_free (db); in bsd_alloc()
421 db->lens = NULL; in bsd_alloc()
428 db->lens = vmalloc(array_size(sizeof(db->lens[0]), (maxmaxcode + 1))); in bsd_alloc()
429 if (!db->lens) in bsd_alloc()
431 bsd_free (db); in bsd_alloc()
438 db->totlen = sizeof (struct bsd_db) + in bsd_alloc()
441 db->hsize = hsize; in bsd_alloc()
442 db->hshift = hshift; in bsd_alloc()
443 db->maxmaxcode = maxmaxcode; in bsd_alloc()
444 db->maxbits = bits; in bsd_alloc()
446 return (void *) db; in bsd_alloc()
466 struct bsd_db *db = state; in bsd_init() local
471 || (BSD_NBITS(options[2]) != db->maxbits) in bsd_init()
472 || (decomp && db->lens == NULL)) in bsd_init()
482 db->lens[indx] = 1; in bsd_init()
487 indx = db->hsize; in bsd_init()
490 db->dict[indx].codem1 = BADCODEM1; in bsd_init()
491 db->dict[indx].cptr = 0; in bsd_init()
494 db->unit = unit; in bsd_init()
495 db->mru = 0; in bsd_init()
499 db->debug = 1; in bsd_init()
501 bsd_reset(db); in bsd_init()
527 static unsigned short *lens_ptr(struct bsd_db *db, int idx) in lens_ptr() argument
529 if ((unsigned int) idx > (unsigned int) db->maxmaxcode) in lens_ptr()
534 return lens_ptrx (db, idx); in lens_ptr()
537 static struct bsd_dict *dict_ptr(struct bsd_db *db, int idx) in dict_ptr() argument
539 if ((unsigned int) idx >= (unsigned int) db->hsize) in dict_ptr()
544 return dict_ptrx (db, idx); in dict_ptr()
548 #define lens_ptr(db,idx) lens_ptrx(db,idx) argument
549 #define dict_ptr(db,idx) dict_ptrx(db,idx) argument
566 struct bsd_db *db; in bsd_compress() local
621 db = (struct bsd_db *) state; in bsd_compress()
622 hshift = db->hshift; in bsd_compress()
623 max_ent = db->max_ent; in bsd_compress()
624 n_bits = db->n_bits; in bsd_compress()
645 *wptr++ = db->seqno >> 8; in bsd_compress()
646 *wptr++ = db->seqno; in bsd_compress()
659 dictp = dict_ptr (db, hval); in bsd_compress()
679 if (hval >= db->hsize) in bsd_compress()
681 hval -= db->hsize; in bsd_compress()
683 dictp = dict_ptr (db, hval); in bsd_compress()
698 if (max_ent < db->maxmaxcode) in bsd_compress()
707 db->n_bits = ++n_bits; in bsd_compress()
715 dictp2 = dict_ptr (db, max_ent + 1); in bsd_compress()
717 dictp3 = dict_ptr (db, indx); in bsd_compress()
727 db->max_ent = ++max_ent; in bsd_compress()
729 if (db->lens) in bsd_compress()
731 unsigned short *len1 = lens_ptr (db, max_ent); in bsd_compress()
732 unsigned short *len2 = lens_ptr (db, ent); in bsd_compress()
741 db->bytes_out += olen - PPP_HDRLEN - BSD_OVHD; in bsd_compress()
742 db->uncomp_bytes += isize; in bsd_compress()
743 db->in_count += isize; in bsd_compress()
744 ++db->uncomp_count; in bsd_compress()
745 ++db->seqno; in bsd_compress()
749 ++db->bytes_out; /* must be set before calling bsd_check */ in bsd_compress()
756 if (bsd_check(db)) in bsd_compress()
776 if (max_ent >= mxcode && max_ent < db->maxmaxcode) in bsd_compress()
778 db->n_bits++; in bsd_compress()
784 ++db->incomp_count; in bsd_compress()
785 db->incomp_bytes += isize; in bsd_compress()
790 ++db->comp_count; in bsd_compress()
791 db->comp_bytes += olen; in bsd_compress()
830 struct bsd_db *db; in bsd_decompress() local
850 db = (struct bsd_db *) state; in bsd_decompress()
851 max_ent = db->max_ent; in bsd_decompress()
854 n_bits = db->n_bits; in bsd_decompress()
875 if (seq != db->seqno) in bsd_decompress()
877 if (db->debug) in bsd_decompress()
880 db->unit, seq, db->seqno - 1); in bsd_decompress()
885 ++db->seqno; in bsd_decompress()
886 db->bytes_out += ilen; in bsd_decompress()
910 db->in_count += (explen - 3); /* don't count the header */ in bsd_decompress()
939 if (db->debug) in bsd_decompress()
941 printk("bsd_decomp%d: bad CLEAR\n", db->unit); in bsd_decompress()
946 bsd_clear(db); in bsd_decompress()
950 if ((incode > max_ent + 2) || (incode > db->maxmaxcode) in bsd_decompress()
953 if (db->debug) in bsd_decompress()
956 db->unit, incode, oldcode); in bsd_decompress()
958 max_ent, explen, db->seqno); in bsd_decompress()
975 codelen = *(lens_ptr (db, finchar)); in bsd_decompress()
979 if (db->debug) in bsd_decompress()
981 printk("bsd_decomp%d: ran out of mru\n", db->unit); in bsd_decompress()
998 struct bsd_dict *dictp2 = dict_ptr (db, finchar); in bsd_decompress()
1000 dictp = dict_ptr (db, dictp2->cptr); in bsd_decompress()
1006 printk("bsd_decomp%d: fell off end of chain ", db->unit); in bsd_decompress()
1016 db->unit, incode, finchar); in bsd_decompress()
1034 db->unit, codelen, incode, max_ent); in bsd_decompress()
1051 if (oldcode != CLEAR && max_ent < db->maxmaxcode) in bsd_decompress()
1059 hval = BSD_HASH(oldcode,finchar,db->hshift); in bsd_decompress()
1060 dictp = dict_ptr (db, hval); in bsd_decompress()
1069 if (hval >= db->hsize) in bsd_decompress()
1071 hval -= db->hsize; in bsd_decompress()
1073 dictp = dict_ptr (db, hval); in bsd_decompress()
1083 dictp2 = dict_ptr (db, max_ent + 1); in bsd_decompress()
1085 dictp3 = dict_ptr (db, indx); in bsd_decompress()
1095 db->max_ent = ++max_ent; in bsd_decompress()
1098 lens1 = lens_ptr (db, max_ent); in bsd_decompress()
1099 lens2 = lens_ptr (db, oldcode); in bsd_decompress()
1103 if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode) in bsd_decompress()
1105 db->n_bits = ++n_bits; in bsd_decompress()
1112 ++db->comp_count; in bsd_decompress()
1113 ++db->uncomp_count; in bsd_decompress()
1114 db->comp_bytes += isize - BSD_OVHD - PPP_HDRLEN; in bsd_decompress()
1115 db->uncomp_bytes += explen; in bsd_decompress()
1117 if (bsd_check(db)) in bsd_decompress()
1119 if (db->debug) in bsd_decompress()
1122 db->unit, db->seqno - 1); in bsd_decompress()