Add an option to enable or disable the small RX packet copying that

is done to improve performance of small frames.

When doing RX packing, the RX copying isn't necessarily required.

Reviewed by:	np
This commit is contained in:
Adrian Chadd 2014-01-02 23:23:33 +00:00
parent d9168b014f
commit 3af0f449ae
3 changed files with 8 additions and 2 deletions

View File

@ -646,6 +646,8 @@ struct adapter {
const char *last_op;
const void *last_op_thr;
#endif
int sc_do_rxcopy;
};
#define ADAPTER_LOCK(sc) mtx_lock(&(sc)->sc_lock)

View File

@ -4239,6 +4239,10 @@ t4_sysctls(struct adapter *sc)
oid = device_get_sysctl_tree(sc->dev);
c0 = children = SYSCTL_CHILDREN(oid);
sc->sc_do_rxcopy = 1;
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "do_rx_copy", CTLFLAG_RW,
&sc->sc_do_rxcopy, 1, "Do RX copy of small frames");
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "nports", CTLFLAG_RD, NULL,
sc->params.nports, "# of ports");

View File

@ -1447,7 +1447,7 @@ get_fl_payload1(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf,
bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map,
BUS_DMASYNC_POSTREAD);
if (len < RX_COPY_THRESHOLD) {
if (sc->sc_do_rxcopy && (len < RX_COPY_THRESHOLD)) {
#ifdef T4_PKT_TIMESTAMP
/* Leave room for a timestamp */
m0->m_data += 8;
@ -1598,7 +1598,7 @@ get_fl_payload2(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf,
bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD);
if (len < RX_COPY_THRESHOLD) {
if (sc->sc_do_rxcopy && (len < RX_COPY_THRESHOLD)) {
#ifdef T4_PKT_TIMESTAMP
/* Leave room for a timestamp */
m0->m_data += 8;