From owner-svn-src-user@FreeBSD.ORG Thu Nov 6 02:41:09 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D7DBF1065670; Thu, 6 Nov 2008 02:41:09 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C4F158FC08; Thu, 6 Nov 2008 02:41:09 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA62f9di043176; Thu, 6 Nov 2008 02:41:09 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA62f8ig043164; Thu, 6 Nov 2008 02:41:08 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200811060241.mA62f8ig043164@svn.freebsd.org> From: Kip Macy Date: Thu, 6 Nov 2008 02:41:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184704 - in user/kmacy/HEAD_multi_tx/sys: dev/mxge kern net netinet sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Nov 2008 02:41:09 -0000 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 */ }; /*