svn commit: r243379 - in user/andre/tcp_workqueue/sys: dev/bxe dev/cxgb dev/cxgbe dev/e1000 dev/ixgbe dev/mxge dev/oce dev/sfxge dev/vxge kern net netinet netinet6 sys
Andre Oppermann
andre at FreeBSD.org
Wed Nov 21 21:03:15 UTC 2012
Author: andre
Date: Wed Nov 21 21:03:14 2012
New Revision: 243379
URL: http://svnweb.freebsd.org/changeset/base/243379
Log:
Move the RSS hash type definition from m_flags to
m_pkthdr.csum_flags and change the names accordingly.
The csum and offload section is a much more appropriate
place for the RSS hash information.
Modified:
user/andre/tcp_workqueue/sys/dev/bxe/if_bxe.c
user/andre/tcp_workqueue/sys/dev/cxgb/cxgb_sge.c
user/andre/tcp_workqueue/sys/dev/cxgbe/t4_main.c
user/andre/tcp_workqueue/sys/dev/cxgbe/t4_sge.c
user/andre/tcp_workqueue/sys/dev/e1000/if_igb.c
user/andre/tcp_workqueue/sys/dev/ixgbe/ixgbe.c
user/andre/tcp_workqueue/sys/dev/ixgbe/ixv.c
user/andre/tcp_workqueue/sys/dev/mxge/if_mxge.c
user/andre/tcp_workqueue/sys/dev/oce/oce_if.c
user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_rx.c
user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_tx.c
user/andre/tcp_workqueue/sys/dev/vxge/vxge.c
user/andre/tcp_workqueue/sys/kern/uipc_mbuf.c
user/andre/tcp_workqueue/sys/net/ieee8023ad_lacp.c
user/andre/tcp_workqueue/sys/net/if_lagg.c
user/andre/tcp_workqueue/sys/net/netisr.c
user/andre/tcp_workqueue/sys/netinet/ip_output.c
user/andre/tcp_workqueue/sys/netinet/sctp_input.c
user/andre/tcp_workqueue/sys/netinet/sctp_output.c
user/andre/tcp_workqueue/sys/netinet/tcp_input.c
user/andre/tcp_workqueue/sys/netinet6/sctp6_usrreq.c
user/andre/tcp_workqueue/sys/sys/mbuf.h
Modified: user/andre/tcp_workqueue/sys/dev/bxe/if_bxe.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/bxe/if_bxe.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/bxe/if_bxe.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -9455,7 +9455,7 @@ bxe_tx_mq_start(struct ifnet *ifp, struc
fp_index = 0;
/* If using flow ID, assign the TX queue based on the flow ID. */
- if ((m->m_flags & M_FLOWID) != 0)
+ if (CSUM_HASH_GET(m) != 0)
fp_index = m->m_pkthdr.flowid % sc->num_queues;
/* Select the fastpath TX queue for the frame. */
@@ -15047,7 +15047,7 @@ bxe_rxeof(struct bxe_fastpath *fp)
#if __FreeBSD_version >= 800000
/* Tell OS what RSS queue was used for this flow. */
m->m_pkthdr.flowid = fp->index;
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
#endif
/* Last chance to check for problems. */
Modified: user/andre/tcp_workqueue/sys/dev/cxgb/cxgb_sge.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/cxgb/cxgb_sge.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/cxgb/cxgb_sge.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -1739,7 +1739,7 @@ cxgb_transmit(struct ifnet *ifp, struct
return (0);
}
- if (m->m_flags & M_FLOWID)
+ if (CSUM_HASH_GET(m))
qidx = (m->m_pkthdr.flowid % pi->nqsets) + pi->first_qset;
qs = &pi->adapter->sge.qs[qidx];
@@ -2906,7 +2906,7 @@ process_responses(adapter_t *adap, struc
eop = get_packet(adap, drop_thresh, qs, mh, r);
if (eop) {
if (r->rss_hdr.hash_type && !adap->timestamp)
- mh->mh_head->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(mh->mh_head, CSUM_HASH_OPAQUE);
mh->mh_head->m_pkthdr.flowid = rss_hash;
}
Modified: user/andre/tcp_workqueue/sys/dev/cxgbe/t4_main.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/cxgbe/t4_main.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/cxgbe/t4_main.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -1171,7 +1171,7 @@ cxgbe_transmit(struct ifnet *ifp, struct
return (ENETDOWN);
}
- if (m->m_flags & M_FLOWID)
+ if (CSUM_HASH_GET(m))
txq += (m->m_pkthdr.flowid % pi->ntxq);
br = txq->br;
Modified: user/andre/tcp_workqueue/sys/dev/cxgbe/t4_sge.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/cxgbe/t4_sge.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/cxgbe/t4_sge.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -1122,7 +1122,7 @@ t4_eth_rx(struct sge_iq *iq, const struc
m0->m_data += fl_pktshift;
m0->m_pkthdr.rcvif = ifp;
- m0->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m0, CSUM_HASH_OPAQUE);
m0->m_pkthdr.flowid = rss->hash_val;
if (cpl->csum_calc && !cpl->err_vec) {
Modified: user/andre/tcp_workqueue/sys/dev/e1000/if_igb.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/e1000/if_igb.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/e1000/if_igb.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -952,7 +952,7 @@ igb_mq_start(struct ifnet *ifp, struct m
int i, err = 0;
/* Which queue to use */
- if ((m->m_flags & M_FLOWID) != 0)
+ if (CSUM_HASH_GET(m) != 0)
i = m->m_pkthdr.flowid % adapter->num_queues;
else
i = curcpu % adapter->num_queues;
@@ -4855,7 +4855,7 @@ igb_rxeof(struct igb_queue *que, int cou
}
#if __FreeBSD_version >= 800000
rxr->fmp->m_pkthdr.flowid = que->msix;
- rxr->fmp->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(rxr->fmp, CSUM_HASH_OPAQUE);
#endif
sendmp = rxr->fmp;
/* Make sure to set M_PKTHDR. */
Modified: user/andre/tcp_workqueue/sys/dev/ixgbe/ixgbe.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/ixgbe/ixgbe.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/ixgbe/ixgbe.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -812,7 +812,7 @@ ixgbe_mq_start(struct ifnet *ifp, struct
int i = 0, err = 0;
/* Which queue to use */
- if ((m->m_flags & M_FLOWID) != 0)
+ if (CSUM_HASH_GET(m) != 0)
i = m->m_pkthdr.flowid % adapter->num_queues;
else
i = curcpu % adapter->num_queues;
@@ -4640,7 +4640,7 @@ ixgbe_rxeof(struct ix_queue *que, int co
ixgbe_rx_checksum(staterr, sendmp, ptype);
#if __FreeBSD_version >= 800000
sendmp->m_pkthdr.flowid = que->msix;
- sendmp->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(sendmp, CSUM_HASH_OPAQUE);
#endif
}
next_desc:
Modified: user/andre/tcp_workqueue/sys/dev/ixgbe/ixv.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/ixgbe/ixv.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/ixgbe/ixv.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -583,7 +583,7 @@ ixv_mq_start(struct ifnet *ifp, struct m
int i = 0, err = 0;
/* Which queue to use */
- if ((m->m_flags & M_FLOWID) != 0)
+ if (CSUM_HASH_GET(m) != 0)
i = m->m_pkthdr.flowid % adapter->num_queues;
txr = &adapter->tx_rings[i];
@@ -3475,7 +3475,7 @@ ixv_rxeof(struct ix_queue *que, int coun
ixv_rx_checksum(staterr, sendmp, ptype);
#if __FreeBSD_version >= 800000
sendmp->m_pkthdr.flowid = que->msix;
- sendmp->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(sendmp, CSUM_HASH_OPAQUE);
#endif
}
next_desc:
Modified: user/andre/tcp_workqueue/sys/dev/mxge/if_mxge.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/mxge/if_mxge.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/mxge/if_mxge.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -2593,7 +2593,7 @@ mxge_rx_done_big(struct mxge_slice_state
/* flowid only valid if RSS hashing is enabled */
if (sc->num_slices > 1) {
m->m_pkthdr.flowid = (ss - sc->ss);
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
}
/* pass the frame up the stack */
(*ifp->if_input)(ifp, m);
@@ -2658,7 +2658,7 @@ mxge_rx_done_small(struct mxge_slice_sta
/* flowid only valid if RSS hashing is enabled */
if (sc->num_slices > 1) {
m->m_pkthdr.flowid = (ss - sc->ss);
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
}
/* pass the frame up the stack */
(*ifp->if_input)(ifp, m);
Modified: user/andre/tcp_workqueue/sys/dev/oce/oce_if.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/oce/oce_if.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/oce/oce_if.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -485,7 +485,7 @@ oce_multiq_start(struct ifnet *ifp, stru
int queue_index = 0;
int status = 0;
- if ((m->m_flags & M_FLOWID) != 0)
+ if (CSUM_HASH_GET(m) != 0)
queue_index = m->m_pkthdr.flowid % sc->nwqs;
wq = sc->wq[queue_index];
@@ -1280,7 +1280,7 @@ oce_rx(struct oce_rq *rq, uint32_t rqe_i
m->m_pkthdr.rcvif = sc->ifp;
#if __FreeBSD_version >= 800000
m->m_pkthdr.flowid = rq->queue_index;
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
#endif
/* This deternies if vlan tag is Valid */
if (oce_cqe_vtp_valid(sc, cqe)) {
Modified: user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_rx.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_rx.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_rx.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -304,7 +304,7 @@ sfxge_rx_deliver(struct sfxge_softc *sc,
if (rx_desc->flags & EFX_PKT_TCP) {
m->m_pkthdr.flowid = EFX_RX_HASH_VALUE(EFX_RX_HASHALG_TOEPLITZ,
mtod(m, uint8_t *));
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
}
#endif
m->m_data += sc->rx_prefix_size;
@@ -355,7 +355,7 @@ sfxge_lro_deliver(struct sfxge_lro_state
#ifdef SFXGE_HAVE_MQ
m->m_pkthdr.flowid = c->conn_hash;
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
#endif
m->m_pkthdr.csum_flags = csum_flags;
__sfxge_rx_deliver(sc, m);
Modified: user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_tx.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_tx.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_tx.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -595,7 +595,7 @@ sfxge_if_transmit(struct ifnet *ifp, str
if (m->m_pkthdr.csum_flags & (CSUM_IP_UDP|CSUM_IP_TCP|CSUM_TSO)) {
int index = 0;
- if (m->m_flags & M_FLOWID) {
+ if (CSUM_HASH_GET(m)) {
uint32_t hash = m->m_pkthdr.flowid;
index = sc->rx_indir_table[hash % SFXGE_RX_SCALE_MAX];
Modified: user/andre/tcp_workqueue/sys/dev/vxge/vxge.c
==============================================================================
--- user/andre/tcp_workqueue/sys/dev/vxge/vxge.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/dev/vxge/vxge.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -660,7 +660,7 @@ vxge_mq_send(ifnet_t ifp, mbuf_t m_head)
if (vdev->config.tx_steering) {
i = vxge_vpath_get(vdev, m_head);
- } else if ((m_head->m_flags & M_FLOWID) != 0) {
+ } else if (CSUM_HASH_GET(m_head) != 0) {
i = m_head->m_pkthdr.flowid % vdev->no_of_vpath;
}
@@ -1070,7 +1070,7 @@ vxge_rx_compl(vxge_hal_vpath_h vpath_han
vxge_rx_checksum(ext_info, mbuf_up);
#if __FreeBSD_version >= 800000
- mbuf_up->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(mbuf_up, CSUM_HASH_OPAQUE);
mbuf_up->m_pkthdr.flowid = vpath->vp_index;
#endif
/* Post-Read sync for buffers */
Modified: user/andre/tcp_workqueue/sys/kern/uipc_mbuf.c
==============================================================================
--- user/andre/tcp_workqueue/sys/kern/uipc_mbuf.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/kern/uipc_mbuf.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -1695,7 +1695,7 @@ m_print(const struct mbuf *m, int maxlen
m2->m_pkthdr.csum_flags, M_CSUM_FLAG_BITS,
m2->m_pkthdr.csum_l2hlen, m2->m_pkthdr.csum_l3hlen,
m2->m_pkthdr.csum_l4hlen, m2->m_pkthdr.tso_segsz,
- m2->m_pkthdr.ether_vtag, M_HASHTYPE_GET(m2));
+ m2->m_pkthdr.ether_vtag, CSUM_HASH_GET(m2));
for (mt = SLIST_FIRST(&m2->m_pkthdr.tags); mt != NULL;
mt = SLIST_NEXT(mt, m_tag_link)) {
Modified: user/andre/tcp_workqueue/sys/net/ieee8023ad_lacp.c
==============================================================================
--- user/andre/tcp_workqueue/sys/net/ieee8023ad_lacp.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/net/ieee8023ad_lacp.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -815,7 +815,7 @@ lacp_select_tx_port(struct lagg_softc *s
return (NULL);
}
- if (sc->use_flowid && (m->m_flags & M_FLOWID))
+ if (sc->use_flowid && CSUM_HASH_GET(m))
hash = m->m_pkthdr.flowid;
else
hash = lagg_hashmbuf(sc, m, lsc->lsc_hashkey);
Modified: user/andre/tcp_workqueue/sys/net/if_lagg.c
==============================================================================
--- user/andre/tcp_workqueue/sys/net/if_lagg.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/net/if_lagg.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -174,7 +174,7 @@ static int lagg_failover_rx_all = 0; /*
SYSCTL_INT(_net_link_lagg, OID_AUTO, failover_rx_all, CTLFLAG_RW,
&lagg_failover_rx_all, 0,
"Accept input from any interface in a failover lagg");
-static int def_use_flowid = 1; /* Default value for using M_FLOWID */
+static int def_use_flowid = 1; /* Default value for using flowid */
TUNABLE_INT("net.link.lagg.default_use_flowid", &def_use_flowid);
SYSCTL_INT(_net_link_lagg, OID_AUTO, default_use_flowid, CTLFLAG_RW,
&def_use_flowid, 0,
@@ -1760,7 +1760,7 @@ lagg_lb_start(struct lagg_softc *sc, str
struct lagg_port *lp = NULL;
uint32_t p = 0;
- if (sc->use_flowid && (m->m_flags & M_FLOWID))
+ if (sc->use_flowid && CSUM_HASH_GET(m))
p = m->m_pkthdr.flowid;
else
p = lagg_hashmbuf(sc, m, lb->lb_key);
Modified: user/andre/tcp_workqueue/sys/net/netisr.c
==============================================================================
--- user/andre/tcp_workqueue/sys/net/netisr.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/net/netisr.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -727,12 +727,12 @@ netisr_select_cpuid(struct netisr_proto
}
if (policy == NETISR_POLICY_FLOW) {
- if (!(m->m_flags & M_FLOWID) && npp->np_m2flow != NULL) {
+ if (!CSUM_HASH_GET(m) && npp->np_m2flow != NULL) {
m = npp->np_m2flow(m, source);
if (m == NULL)
return (NULL);
}
- if (m->m_flags & M_FLOWID) {
+ if (CSUM_HASH_GET(m)) {
*cpuidp =
netisr_default_flow2cpu(m->m_pkthdr.flowid);
return (m);
Modified: user/andre/tcp_workqueue/sys/netinet/ip_output.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/ip_output.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/netinet/ip_output.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -140,7 +140,7 @@ ip_output(struct mbuf *m, struct mbuf *o
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;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
}
}
Modified: user/andre/tcp_workqueue/sys/netinet/sctp_input.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/sctp_input.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/netinet/sctp_input.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -6015,7 +6015,7 @@ sctp_input_with_port(struct mbuf *i_pak,
m->m_pkthdr.len,
if_name(m->m_pkthdr.rcvif),
m->m_pkthdr.csum_flags);
- if (m->m_flags & M_FLOWID) {
+ if (CSUM_HASH_GET(m)) {
mflowid = m->m_pkthdr.flowid;
use_mflowid = 1;
} else {
@@ -6112,7 +6112,7 @@ sctp_input(struct mbuf *m, int off)
uint32_t flowid, tag;
if (mp_ncpus > 1) {
- if (m->m_flags & M_FLOWID) {
+ if (CSUM_HASH_GET(m)) {
flowid = m->m_pkthdr.flowid;
} else {
/*
@@ -6131,7 +6131,7 @@ sctp_input(struct mbuf *m, int off)
tag = htonl(sh->v_tag);
flowid = tag ^ ntohs(sh->dest_port) ^ ntohs(sh->src_port);
m->m_pkthdr.flowid = flowid;
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
}
cpu_to_use = sctp_cpuarry[flowid % mp_ncpus];
sctp_queue_to_mcore(m, off, cpu_to_use);
Modified: user/andre/tcp_workqueue/sys/netinet/sctp_output.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/sctp_output.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/netinet/sctp_output.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -3957,11 +3957,11 @@ sctp_lowlevel_chunk_output(struct sctp_i
}
#endif
m->m_pkthdr.flowid = net->flowid;
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
} else {
if (use_mflowid != 0) {
m->m_pkthdr.flowid = mflowid;
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
}
}
packet_length = sctp_calculate_len(m);
@@ -4246,11 +4246,11 @@ sctp_lowlevel_chunk_output(struct sctp_i
}
#endif
m->m_pkthdr.flowid = net->flowid;
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
} else {
if (use_mflowid != 0) {
m->m_pkthdr.flowid = mflowid;
- m->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(m, CSUM_HASH_OPAQUE);
}
}
packet_length = sctp_calculate_len(m);
@@ -10881,7 +10881,7 @@ sctp_send_resp_msg(struct sockaddr *src,
SCTP_BUF_NEXT(mout) = cause;
if (use_mflowid != 0) {
mout->m_pkthdr.flowid = mflowid;
- mout->m_flags |= M_FLOWID;
+ CSUM_HASH_SET(mout, CSUM_HASH_OPAQUE);
}
#ifdef INET
ip = NULL;
Modified: user/andre/tcp_workqueue/sys/netinet/tcp_input.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/tcp_input.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/netinet/tcp_input.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -876,7 +876,7 @@ findpcb:
}
INP_WLOCK_ASSERT(inp);
if (!(inp->inp_flags & INP_HW_FLOWID)
- && (m->m_flags & M_FLOWID)
+ && (CSUM_HASH_GET(m))
&& ((inp->inp_socket == NULL)
|| !(inp->inp_socket->so_options & SO_ACCEPTCONN))) {
inp->inp_flags |= INP_HW_FLOWID;
Modified: user/andre/tcp_workqueue/sys/netinet6/sctp6_usrreq.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet6/sctp6_usrreq.c Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/netinet6/sctp6_usrreq.c Wed Nov 21 21:03:14 2012 (r243379)
@@ -113,7 +113,7 @@ sctp6_input_with_port(struct mbuf **i_pa
m->m_pkthdr.len,
if_name(m->m_pkthdr.rcvif),
m->m_pkthdr.csum_flags);
- if (m->m_flags & M_FLOWID) {
+ if (CSUM_HASH_GET(m)) {
mflowid = m->m_pkthdr.flowid;
use_mflowid = 1;
} else {
Modified: user/andre/tcp_workqueue/sys/sys/mbuf.h
==============================================================================
--- user/andre/tcp_workqueue/sys/sys/mbuf.h Wed Nov 21 20:29:27 2012 (r243378)
+++ user/andre/tcp_workqueue/sys/sys/mbuf.h Wed Nov 21 21:03:14 2012 (r243379)
@@ -213,8 +213,6 @@ struct mbuf {
#define M_PROTO6 0x00080000 /* protocol-specific */
#define M_PROTO7 0x00100000 /* protocol-specific */
#define M_PROTO8 0x00200000 /* protocol-specific */
-#define M_FLOWID 0x00400000 /* deprecated: flowid is valid */
-#define M_HASHTYPEBITS 0x0F000000 /* mask of bits holding flowid hash type */
#define M_FLAG_BITS \
"\20\27FLOWID\26PROTO8\25PROTO7\24PROTO6\23NOFREE\22PROMISC" \
@@ -240,40 +238,39 @@ struct mbuf {
* can then be used to maintain ordering while delivering packets to the OS
* via parallel input queues, as well as to provide a stateless affinity
* model. NIC drivers can pass up the hash via m->m_pkthdr.flowid, and set
- * m_flag fields to indicate how the hash should be interpreted by the
+ * csum_flags fields to indicate how the hash should be interpreted by the
* network stack.
*
* Most NICs support RSS, which provides ordering and explicit affinity, and
* use the hash m_flag bits to indicate what header fields were covered by
- * the hash. M_HASHTYPE_OPAQUE can be set by non-RSS cards or configurations
+ * the hash. CSUM_HASH_OPAQUE can be set by non-RSS cards or configurations
* that provide an opaque flow identifier, allowing for ordering and
* distribution without explicit affinity.
*/
-#define M_HASHTYPE_SHIFT 24
-#define M_HASHTYPE_NONE 0x0
-#define M_HASHTYPE_RSS_IPV4 0x1 /* IPv4 2-tuple */
-#define M_HASHTYPE_RSS_TCP_IPV4 0x2 /* TCPv4 4-tuple */
-#define M_HASHTYPE_RSS_IPV6 0x3 /* IPv6 2-tuple */
-#define M_HASHTYPE_RSS_TCP_IPV6 0x4 /* TCPv6 4-tuple */
-#define M_HASHTYPE_RSS_IPV6_EX 0x5 /* IPv6 2-tuple + ext hdrs */
-#define M_HASHTYPE_RSS_TCP_IPV6_EX 0x6 /* TCPv6 4-tiple + ext hdrs */
-#define M_HASHTYPE_OPAQUE 0xf /* ordering, not affinity */
-
-#define M_HASHTYPE_CLEAR(m) (m)->m_flags &= ~(M_HASHTYPEBITS)
-#define M_HASHTYPE_GET(m) (((m)->m_flags & M_HASHTYPEBITS) >> \
- M_HASHTYPE_SHIFT)
-#define M_HASHTYPE_SET(m, v) do { \
- (m)->m_flags &= ~M_HASHTYPEBITS; \
- (m)->m_flags |= ((v) << M_HASHTYPE_SHIFT); \
+#define CSUM_HASH_NONE 0x0 /* no RSS hash computed */
+#define CSUM_HASH_IPV4 0x1 /* IPv4 2-tuple */
+#define CSUM_HASH_TCP_IPV4 0x2 /* TCPv4 4-tuple */
+#define CSUM_HASH_IPV6 0x3 /* IPv6 2-tuple */
+#define CSUM_HASH_TCP_IPV6 0x4 /* TCPv6 4-tuple */
+#define CSUM_HASH_IPV6_EX 0x5 /* IPv6 2-tuple + ext hdrs */
+#define CSUM_HASH_TCP_IPV6_EX 0x6 /* TCPv6 4-tiple + ext hdrs */
+#define CSUM_HASH_OPAQUE 0xf /* ordering, not affinity */
+
+#define CSUM_HASH_MASK 0x0000000F
+#define CSUM_HASH_CLEAR(m) ((m)->m_pkthdr.csum_flags &= ~CSUM_HASH_MASK)
+#define CSUM_HASH_GET(m) ((m)->m_pkthdr.csum_flags & CSUM_HASH_MASK)
+#define CSUM_HASH_SET(m, v) do { \
+ (m)->m_pkthdr.csum_flags &= ~CSUM_HASH_MASK; \
+ (m)->m_pkthdr.csum_flags |= (v); \
} while (0)
-#define M_HASHTYPE_TEST(m, v) (M_HASHTYPE_GET(m) == (v))
+#define CSUM_HASH_TEST(m, v) (CSUM_HASH_GET(m) == (v))
/*
* Flags preserved when copying m_pkthdr.
*/
#define M_COPYFLAGS \
(M_PKTHDR|M_EOR|M_RDONLY|M_PROTOFLAGS|M_SKIP_FIREWALL|M_BCAST|M_MCAST|\
- M_FRAG|M_FIRSTFRAG|M_LASTFRAG|M_VLANTAG|M_PROMISC|M_FIB|M_HASHTYPEBITS)
+ M_FRAG|M_FIRSTFRAG|M_LASTFRAG|M_VLANTAG|M_PROMISC|M_FIB)
/*
* External buffer types: identify ext_buf type.
More information about the svn-src-user
mailing list