Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Nov 2008 02:41:08 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r184704 - in user/kmacy/HEAD_multi_tx/sys: dev/mxge kern net netinet sys
Message-ID:  <200811060241.mA62f8ig043164@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Thu Nov  6 02:41:08 2008
New Revision: 184704
URL: http://svn.freebsd.org/changeset/base/184704

Log:
  rename if_start_mbuf to if_transmit
  rename rss_hash to flowid
  convert spare in inpcb to inp_connid
  set connid on TCP ingress if not set
  set flowid on IP egress if not set

Modified:
  user/kmacy/HEAD_multi_tx/sys/dev/mxge/if_mxge.c
  user/kmacy/HEAD_multi_tx/sys/kern/kern_mbuf.c
  user/kmacy/HEAD_multi_tx/sys/net/flowtable.c
  user/kmacy/HEAD_multi_tx/sys/net/if.c
  user/kmacy/HEAD_multi_tx/sys/net/if_ethersubr.c
  user/kmacy/HEAD_multi_tx/sys/net/if_lagg.c
  user/kmacy/HEAD_multi_tx/sys/net/if_var.h
  user/kmacy/HEAD_multi_tx/sys/net/if_vlan.c
  user/kmacy/HEAD_multi_tx/sys/netinet/in_pcb.h
  user/kmacy/HEAD_multi_tx/sys/netinet/ip_output.c
  user/kmacy/HEAD_multi_tx/sys/netinet/tcp_input.c
  user/kmacy/HEAD_multi_tx/sys/sys/mbuf.h

Modified: user/kmacy/HEAD_multi_tx/sys/dev/mxge/if_mxge.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/dev/mxge/if_mxge.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/dev/mxge/if_mxge.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -2121,15 +2121,19 @@ mxge_start(struct mxge_slice_state *ss)
 }
 
 static int
-mxge_start_mbuf(struct ifnet *ifp, struct mbuf *m)
+mxge_transmit(struct ifnet *ifp, struct mbuf *m)
 {
 	struct ifaltq *ifq;
 	mxge_softc_t *sc = ifp->if_softc;
 	struct mxge_slice_state *ss;
 	int slice, error, len;
 	short mflags;
-
-	slice = m->m_pkthdr.rss_hash & (sc->num_slices - 1);
+	
+	/*
+	 * XXX Andrew - this will only DTRT if num_slices is 
+	 * a power of 2
+	 */
+	slice = m->m_pkthdr.flowid & (sc->num_slices - 1);
 /*	printf("%d & %d = %d\n", m->m_pkthdr.rss_hash, (sc->num_slices - 1), slice);*/
 	ss = &sc->ss[slice];
 	ifq = &ss->tx.ifq;
@@ -2383,7 +2387,7 @@ mxge_rx_done_big(struct mxge_slice_state
 	m->m_data += MXGEFW_PAD;
 
 	m->m_pkthdr.rcvif = ifp;
-	m->m_pkthdr.rss_hash = ss - sc->ss;
+	m->m_pkthdr.flowid = ss - sc->ss;
 	m->m_len = m->m_pkthdr.len = len;
 	ss->ipackets++;
 	eh = mtod(m, struct ether_header *);
@@ -2445,7 +2449,7 @@ mxge_rx_done_small(struct mxge_slice_sta
 
 	m->m_pkthdr.rcvif = ifp;
 	m->m_len = m->m_pkthdr.len = len;
-	m->m_pkthdr.rss_hash = ss - sc->ss;
+	m->m_pkthdr.flowid = ss - sc->ss;
 	ss->ipackets++;
 	eh = mtod(m, struct ether_header *);
 	if (eh->ether_type == htons(ETHERTYPE_VLAN)) {
@@ -4316,7 +4320,7 @@ mxge_attach(device_t dev)
 	/* ether_ifattach sets mtu to 1500 */
 	if (ifp->if_capabilities & IFCAP_JUMBO_MTU)
 		ifp->if_mtu = 9000;
-	ifp->if_start_mbuf = mxge_start_mbuf;
+	ifp->if_transmit = mxge_transmit;
 
 	mxge_add_sysctls(sc);
 	return 0;

Modified: user/kmacy/HEAD_multi_tx/sys/kern/kern_mbuf.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/kern/kern_mbuf.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/kern/kern_mbuf.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -417,7 +417,7 @@ mb_ctor_mbuf(void *mem, int size, void *
 		m->m_pkthdr.tso_segsz = 0;
 		m->m_pkthdr.ether_vtag = 0;
 		SLIST_INIT(&m->m_pkthdr.tags);
-		m->m_pkthdr.rss_hash = 0;
+		m->m_pkthdr.flowid = 0;
 #ifdef MAC
 		/* If the label init fails, fail the alloc */
 		error = mac_mbuf_init(m, how);

Modified: user/kmacy/HEAD_multi_tx/sys/net/flowtable.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/net/flowtable.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/net/flowtable.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -600,8 +600,8 @@ flowtable_lookup(struct flowtable *ft, s
 	hash = ipv4_flow_lookup_hash_internal(m, &ro, key,
 	    &flags, &proto);
 
-	if (m->m_pkthdr.rss_hash == 0)
-		m->m_pkthdr.rss_hash = hash;
+	if (m->m_pkthdr.flowid == 0)
+		m->m_pkthdr.flowid = hash;
 	/*
 	 * Ports are zero and this isn't a transmit cache
 	 * - thus not a protocol for which we need to keep 

Modified: user/kmacy/HEAD_multi_tx/sys/net/if.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/net/if.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/net/if.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -125,7 +125,7 @@ static void	if_start_deferred(void *cont
 static void	do_link_state_change(void *, int);
 static int	if_getgroup(struct ifgroupreq *, struct ifnet *);
 static int	if_getgroupmembers(struct ifgroupreq *);
-static int	if_start_mbuf(struct ifnet *ifp, struct mbuf *m);
+static int	if_transmit(struct ifnet *ifp, struct mbuf *m);
 
 #ifdef INET6
 /*
@@ -520,7 +520,7 @@ if_attach(struct ifnet *ifp)
 	getmicrotime(&ifp->if_lastchange);
 	ifp->if_data.ifi_epoch = time_uptime;
 	ifp->if_data.ifi_datalen = sizeof(struct if_data);
-	ifp->if_start_mbuf = if_start_mbuf;
+	ifp->if_transmit = if_transmit;
 #ifdef MAC
 	mac_ifnet_init(ifp);
 	mac_ifnet_create(ifp);
@@ -2804,7 +2804,7 @@ if_start_deferred(void *context, int pen
  * that have not implemented it
  */
 static int
-if_start_mbuf(struct ifnet *ifp, struct mbuf *m)
+if_transmit(struct ifnet *ifp, struct mbuf *m)
 {
 	int error;
 

Modified: user/kmacy/HEAD_multi_tx/sys/net/if_ethersubr.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/net/if_ethersubr.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/net/if_ethersubr.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -427,7 +427,7 @@ ether_output_frame(struct ifnet *ifp, st
 	 * Queue message on interface, update output statistics if
 	 * successful, and start output if interface not yet active.
 	 */
-	return ((ifp->if_start_mbuf)(ifp, m));
+	return ((ifp->if_transmit)(ifp, m));
 }
 
 #if defined(INET) || defined(INET6)

Modified: user/kmacy/HEAD_multi_tx/sys/net/if_lagg.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/net/if_lagg.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/net/if_lagg.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -1371,7 +1371,7 @@ int
 lagg_enqueue(struct ifnet *ifp, struct mbuf *m)
 {
 
-	return ((ifp->if_start_mbuf)(ifp, m));
+	return ((ifp->if_transmit)(ifp, m));
 }
 
 /*

Modified: user/kmacy/HEAD_multi_tx/sys/net/if_var.h
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/net/if_var.h	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/net/if_var.h	Thu Nov  6 02:41:08 2008	(r184704)
@@ -187,7 +187,7 @@ struct ifnet {
 	void	*if_pf_kif;
 	void	*if_lagg;		/* lagg glue */
 	void	*if_pspare[9];		/* multiq/TOE 3; vimage 3; general use 4 */
-	int	(*if_start_mbuf)	/* initiate output routine */
+	int	(*if_transmit)	/* initiate output routine */
 		(struct ifnet *, struct mbuf *);
 	int	if_ispare[2];		/* general use 2 */
 };

Modified: user/kmacy/HEAD_multi_tx/sys/net/if_vlan.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/net/if_vlan.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/net/if_vlan.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -868,7 +868,7 @@ vlan_start(struct ifnet *ifp)
 		 * Send it, precisely as ether_output() would have.
 		 * We are already running at splimp.
 		 */
-		error = (ifp->if_start_mbuf)(p, m);
+		error = (ifp->if_transmit)(p, m);
 		if (!error)
 			ifp->if_opackets++;
 		else

Modified: user/kmacy/HEAD_multi_tx/sys/netinet/in_pcb.h
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/netinet/in_pcb.h	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/netinet/in_pcb.h	Thu Nov  6 02:41:08 2008	(r184704)
@@ -169,7 +169,7 @@ struct inpcb {
 	u_char	inp_ip_ttl;		/* (i) time to live proto */
 	u_char	inp_ip_p;		/* (c) protocol proto */
 	u_char	inp_ip_minttl;		/* (i) minimum TTL or drop */
-	uint32_t inp_ispare1;		/* (x) connection id / queue id */
+	uint32_t inp_connid;		/* (x) connection id / queue id */
 	void	*inp_pspare[2];		/* (x) rtentry / general use */
 
 	/* Local and foreign ports, local and foreign addr. */

Modified: user/kmacy/HEAD_multi_tx/sys/netinet/ip_output.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/netinet/ip_output.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/netinet/ip_output.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -133,6 +133,7 @@ ip_output(struct mbuf *m, struct mbuf *o
 	if (inp != NULL) {
 		INP_LOCK_ASSERT(inp);
 		M_SETFIB(m, inp->inp_inc.inc_fibnum);
+		m->m_pkthdr.flowid = inp->inp_connid;
 	}
 
 	if (flags & IP_RTINFO) {/* ugly interface overload */

Modified: user/kmacy/HEAD_multi_tx/sys/netinet/tcp_input.c
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/netinet/tcp_input.c	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/netinet/tcp_input.c	Thu Nov  6 02:41:08 2008	(r184704)
@@ -581,7 +581,9 @@ findpcb:
 		goto dropwithreset;
 	}
 	INP_WLOCK(inp);
-
+	if (inp->inp_connid == 0)
+		inp->inp_connid = m->m_pkthdr.flowid;
+	
 #ifdef IPSEC
 #ifdef INET6
 	if (isipv6 && ipsec6_in_reject(m, inp)) {

Modified: user/kmacy/HEAD_multi_tx/sys/sys/mbuf.h
==============================================================================
--- user/kmacy/HEAD_multi_tx/sys/sys/mbuf.h	Wed Nov  5 23:58:40 2008	(r184703)
+++ user/kmacy/HEAD_multi_tx/sys/sys/mbuf.h	Thu Nov  6 02:41:08 2008	(r184704)
@@ -118,10 +118,10 @@ struct pkthdr {
 	/* variables for hardware checksum */
 	int		 csum_flags;	/* flags regarding checksum */
 	int		 csum_data;	/* data field used by csum routines */
+	uint32_t	 flowid;	/*  flow identifier (not IPv6) */
 	u_int16_t	 tso_segsz;	/* TSO segment size */
 	u_int16_t	 ether_vtag;	/* Ethernet 802.1p+q vlan tag */
 	SLIST_HEAD(packet_tags, m_tag) tags; /* list of packet tags */
-        uint32_t	rss_hash;	/* hash identifying the flow */
 };
 
 /*



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