Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Sep 2012 07:18:10 GMT
From:      Venkat Duvvuru <venkatduvvuru.ml@gmail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   misc/171840: IPv6 packets transmitting only on queue 0
Message-ID:  <201209210718.q8L7IA1E058863@red.freebsd.org>
Resent-Message-ID: <201209210720.q8L7K3qC020142@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         171840
>Category:       misc
>Synopsis:       IPv6 packets transmitting only on queue 0
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Sep 21 07:20:02 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Venkat Duvvuru
>Release:        9.0-RELEASE
>Organization:
Emulex
>Environment:
FreeBSD root@xxx FreeBsd 9.0-RELEASE FreeBSD 9.0-RELEASE #12: Thu Aug 23 23:42:39 IST 2012     root@root@xxx FreeBsd:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
1. The below code is absent for ip6_output? This is causing the ipv6 traffic to always flow in just one queue. Flowid is filled by the driver in the receive path and the same flowid will be used to transmit packets. I think this logic is missing for ipv6 packets.

"netinet/ip_output.c" Function: ip_output
if (inp != NULL) {
                INP_LOCK_ASSERT(inp);
                M_SETFIB(m, inp->inp_inc.inc_fibnum);
                if (inp->inp_flags & (INP_HW_FLOWID|INP_SW_FLOWID)) {
                        m->m_pkthdr.flowid = inp->inp_flowid;
                        m->m_flags |= M_FLOWID;
                }
        }
2. "fle" is NULL after enabling FLOWTABLE for IPv6
 
"net/flowtable.c"
        if (af == AF_INET6)
        {
                fle = flowtable_lookup_mbuf6(ft, m);
                if (fle != NULL && m != NULL && (m->m_flags & M_FLOWID) == 0) {
                        m->m_flags |= M_FLOWID;
                        m->m_pkthdr.flowid = fle->f_fhash;
                }
        }
>How-To-Repeat:
Run ipv6 traffic with any tool and check the number of packets transmitted on all the created transmit queues. Only num packets on queue0 increases.
>Fix:
For the first problem I think we should populate inp->inp_flowid in the mbuf packet header. For the second problem, I'm not sure why flowtable_lookup_mbuf6 is returning NULL after enabling FLOWTABLE.

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209210718.q8L7IA1E058863>