tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: IFQ_ENQUEUE argument refactor (was Re: RFC: ALTQ caller refactor)
Hi,
Thank you for comments.
On 2016/03/25 23:05, Taylor R Campbell wrote:
> Date: Fri, 25 Mar 2016 17:26:14 +0900
> From: Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost>
>
> I rebase and modify a little(use container_of). Here is the patch.
> http://www.netbsd.org/~knakahara/ifq-enqueue-refactor/ifq-enqueue-refactor.patch
>
> Does anyone have Any comments? Any comments are welcome.
>
> Minor nit in altq_m_tag_get: KNF style is `return foo;', not `return
> (foo);'.
Thanks, I fix it. There are similar issues in altq_subr.c, I will fix
them where I modify around them.
> altq_get_pattr should use container_of too, not pointer arithmetic:
>
> mtag = m_tag_find(m, PACKET_TAG_ALTQ_PATTR, NULL);
> if (mtag != NULL) {
> struct altq_pktattr_tag *apt =
> container_of(mtag, struct altq_pktattr_tag, apt_tag);
> return &apt->apt_pktattr;
> }
>
> Either or altq_get_pattr or IFQ_ENQUEUE should KASSERT(pattr != NULL)
> or similar.
Hmm, I think the functions which are set to ifq->altq_enqueue by
altq_attach() can accept NULL and handle it. The functions are following.
- blue_enqueue()@sys/altq/altq_blue.c
- cbq_enqueue()@sys/altq/altq_cbq.c
- fifoq_enqueue()@sys/altq/altq_fifoq.c
- hfsc_enqueue()@sys/altq/altq_hfsc.c
- jobs_enqueue()@sys/altq/altq_jobs.c
- priq_enqueue()@sys/altq/altq_priq.c
- red_enqueue()@sys/altq/altq_red.c
- rio_enqueue()@sys/altq/altq_rio.c
- wfq_ifenqueue()@sys/altq/altq_wfq.c
So, I think KASSERT may be too strict. Could you comment it?
BTW, it is hard to know whether altq_m_tag_get() succeed or not in
above patch, so I add some logs when altq_m_tag_get() failed.
> Why add struct ifnet::if_altq_classify? Why not just teach
> altq_etherclassify to call altq_set_pattr? From the comments above
> altq_etherclassify, it sounds like it's meant to be a temporary
> workaround for a deficiency in altq. Especially the just-in-time
> assignment of ifp->if_altq_classify in ieee80211_deliver_data seems
> wrong to me.
You are quite right. I revert the modification about
ifnet::if_altq_classify and fix altq_etherclassify() to use
altq_m_tag_get().
Here is the updated patch.
http://www.netbsd.org/~knakahara/ifq-enqueue-refactor/ifq-enqueue-refactor-2.patch
Could you comment it?
And, does anyone have any comments? Any comments are welcome.
Thanks,
--
//////////////////////////////////////////////////////////////////////
Internet Initiative Japan Inc.
Device Engineering Section,
Core Product Development Department,
Product Division,
Technology Unit
Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost>
Home |
Main Index |
Thread Index |
Old Index