Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Sep 2014 00:19:02 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r271291 - head/sys/netinet
Message-ID:  <201409090019.s890J2E3096441@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Tue Sep  9 00:19:02 2014
New Revision: 271291
URL: http://svnweb.freebsd.org/changeset/base/271291

Log:
  Add a flag to ip_output() - IP_NODEFAULTFLOWID - which prevents it from
  overriding an existing flowid/flowtype field in the outbound mbuf with
  the inp_flowid/inp_flowtype details.
  
  The upcoming RSS UDP support calculates a valid RSS value for outbound
  mbufs and since it may change per send, it doesn't cache it in the inpcb.
  So overriding it here would be wrong.
  
  Differential Revision:	https://reviews.freebsd.org/D527
  Reviewed by:	grehan

Modified:
  head/sys/netinet/ip_output.c
  head/sys/netinet/ip_var.h

Modified: head/sys/netinet/ip_output.c
==============================================================================
--- head/sys/netinet/ip_output.c	Mon Sep  8 21:46:14 2014	(r271290)
+++ head/sys/netinet/ip_output.c	Tue Sep  9 00:19:02 2014	(r271291)
@@ -145,7 +145,8 @@ ip_output(struct mbuf *m, struct mbuf *o
 	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)) {
+		if (((flags & IP_NODEFAULTFLOWID) == 0) &&
+		    inp->inp_flags & (INP_HW_FLOWID|INP_SW_FLOWID)) {
 			m->m_pkthdr.flowid = inp->inp_flowid;
 			M_HASHTYPE_SET(m, inp->inp_flowtype);
 			m->m_flags |= M_FLOWID;

Modified: head/sys/netinet/ip_var.h
==============================================================================
--- head/sys/netinet/ip_var.h	Mon Sep  8 21:46:14 2014	(r271290)
+++ head/sys/netinet/ip_var.h	Tue Sep  9 00:19:02 2014	(r271291)
@@ -161,6 +161,7 @@ void	kmod_ipstat_dec(int statnum);
 #define	IP_SENDTOIF		0x8		/* send on specific ifnet */
 #define IP_ROUTETOIF		SO_DONTROUTE	/* 0x10 bypass routing tables */
 #define IP_ALLOWBROADCAST	SO_BROADCAST	/* 0x20 can send broadcast packets */
+#define	IP_NODEFAULTFLOWID	0x40		/* Don't set the flowid from inp */
 
 #ifdef __NO_STRICT_ALIGNMENT
 #define IP_HDR_ALIGNED_P(ip)	1



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