Hello,

diff looks good to me, I've just found one cosmetic nit.

</snip>
> @@ -683,21 +685,17 @@ arpcache(struct ifnet *ifp, struct ether
> 
>       la->la_asked = 0;
>       la->la_refreshed = 0;
> -     while ((m = mq_dequeue(&la->la_mq)) != NULL) {
> -             unsigned int len;
> -
> -             atomic_dec_int(&la_hold_total);
> -             len = mq_len(&la->la_mq);
> -
> +     mq_delist(&la->la_mq, &ml);
> +     len = ml_len(&ml);
> +     while ((m = ml_dequeue(&ml)) != NULL) {
>               ifp->if_output(ifp, m, rt_key(rt), rt);
> -
> -             /* XXXSMP we discard if other CPU enqueues */
> -             if (mq_len(&la->la_mq) > len) {
> -                     /* mbuf is back in queue. Discard. */
> -                     atomic_sub_int(&la_hold_total, mq_purge(&la->la_mq));
> -                     break;
> -             }
>       }

    do we want to keep curly brackets for while() loop?
    the loop body is a one-liner now. 

> +     /* XXXSMP we discard if other CPU enqueues */
> +     if (mq_len(&la->la_mq) > 0) {
> +             /* mbuf is back in queue. Discard. */
> +             atomic_sub_int(&la_hold_total, len + mq_purge(&la->la_mq));
> +     } else
> +             atomic_sub_int(&la_hold_total, len);
> 
>       return (0);
>  }


otherwise looks OK to me.

thanks and
regards
sashan

Reply via email to