Lines Matching refs:bp

165 	struct blue *bp;
169 bp = zalloc(blue_zone);
170 if (bp == NULL)
173 bzero(bp, blue_size);
174 bp->blue_idle = 1;
175 bp->blue_flags = (flags & BLUEF_USERFLAGS);
176 bp->blue_ifp = ifp;
179 bp->blue_max_pmark = 1000;
181 bp->blue_max_pmark = max_pmark;
184 bp->blue_hold_time = 50000;
186 bp->blue_hold_time = hold_time;
188 microuptime(&bp->blue_last);
190 return (bp);
194 blue_destroy(struct blue *bp)
196 zfree(blue_zone, bp);
200 blue_getstats(struct blue *bp, struct blue_stats *sp)
202 sp->q_pmark = bp->blue_pmark;
203 sp->drop_forced = bp->blue_stats.drop_forced;
204 sp->drop_unforced = bp->blue_stats.drop_unforced;
205 sp->marked_packets = bp->blue_stats.marked_packets;
213 blue_addq(struct blue *bp, class_queue_t *q, struct mbuf *m,
222 if (bp->blue_idle) {
226 bp->blue_idle = 0;
228 t = (now.tv_sec - bp->blue_last.tv_sec);
230 bp->blue_pmark = 1;
231 microuptime(&bp->blue_last);
233 t = t * 1000000 + (now.tv_usec - bp->blue_last.tv_usec);
234 if (t > bp->blue_hold_time) {
235 bp->blue_pmark--;
236 if (bp->blue_pmark < 0)
237 bp->blue_pmark = 0;
238 microuptime(&bp->blue_last);
245 if (blue_drop_early(bp) && qlen(q) > 1) {
247 if ((bp->blue_flags & BLUEF_ECN) &&
249 mark_ecn(m, tag, bp->blue_flags)) {
251 bp->blue_stats.marked_packets++;
269 bp->blue_stats.drop_unforced++;
276 t = (now.tv_sec - bp->blue_last.tv_sec);
277 t = t * 1000000 + (now.tv_usec - bp->blue_last.tv_usec);
278 if (t > bp->blue_hold_time) {
279 bp->blue_pmark += bp->blue_max_pmark >> 3;
280 if (bp->blue_pmark > bp->blue_max_pmark)
281 bp->blue_pmark = bp->blue_max_pmark;
282 microuptime(&bp->blue_last);
284 bp->blue_stats.drop_forced++;
286 IFCQ_CONVERT_LOCK(&bp->blue_ifp->if_snd);
295 blue_getq_flow(struct blue *bp, class_queue_t *q, u_int32_t flow,
303 if (bp->blue_idle == 0) {
304 bp->blue_idle = 1;
305 microuptime(&bp->blue_last);
310 bp->blue_idle = 0;
315 blue_getq(struct blue *bp, class_queue_t *q)
317 return (blue_getq_flow(bp, q, 0, FALSE));
321 blue_purgeq(struct blue *bp, class_queue_t *q, u_int32_t flow,
327 IFCQ_CONVERT_LOCK(&bp->blue_ifp->if_snd);
329 while ((m = blue_getq_flow(bp, q, flow, TRUE)) != NULL) {
345 blue_drop_early(struct blue *bp)
347 if ((random() % (unsigned)bp->blue_max_pmark) <
348 (unsigned)bp->blue_pmark) {
357 blue_updateq(struct blue *bp, cqev_t ev)
359 #pragma unused(bp, ev)
364 blue_suspendq(struct blue *bp, class_queue_t *q, boolean_t on)
366 #pragma unused(bp, q, on)