svn commit: r184704 - in user/kmacy/HEAD_multi_tx/sys: dev/mxge
kern net netinet sys
Kip Macy
kmacy at FreeBSD.org
Wed Nov 5 18:41:09 PST 2008
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 */
};
/*
More information about the svn-src-user
mailing list