Go to file
Olivier Matz ae844e5e68 igb: fix crash with offload on 82575
On the 82575 chipset, there is a pool of global TX contexts instead of 2
per queues on 82576. See Table A-1 "Changes in Programming Interface
Relative to 82575" of Intel® 82576EB GbE Controller datasheet (*).

In the driver, the contexts are attributed to a TX queue: 0-1 for txq0,
2-3 for txq1, and so on.

In igbe_set_xmit_ctx(), the variable ctx_curr contains the index of the
per-queue context (0 or 1), and ctx_idx contains the index to be given
to the hardware (0 to 7). The size of txq->ctx_cache[] is 2, and must
be indexed with ctx_curr to avoid an out-of-bound access.

Also, the index returned by what_advctx_update() is the per-queue
index (0 or 1), so we need to add txq->ctx_start before sending it
to the hardware.

(*) The datasheets says 16 global contexts, however the IDX fields in TX
    descriptors are 3 bits, which gives a total of 8 contexts. The
    driver assumes there are 8 contexts on 82575: 2 per queues, 4 txqs.

Fixes: 4c8db5f09a ("igb: enable TSO support")
Fixes: af75078fec ("first public release")

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2016-03-25 19:03:48 +01:00
app app/testpmd: add VLAN in flow director input set 2016-03-25 19:01:38 +01:00
config vhost: add driver on top of the library 2016-03-25 18:56:44 +01:00
doc ixgbe: fix dropping packets from unsupported Tx queues 2016-03-25 19:03:48 +01:00
drivers igb: fix crash with offload on 82575 2016-03-25 19:03:48 +01:00
examples examples/l2fwd-crypto: add NULL algorithms 2016-03-24 20:53:40 +01:00
lib ethdev: fix possibly incorrect maximum queues 2016-03-25 19:03:48 +01:00
mk vhost: add driver on top of the library 2016-03-25 18:56:44 +01:00
pkg version: 2.2.0 2015-12-15 18:06:58 +01:00
scripts scripts: improve quiet checkpatch 2016-03-24 22:16:01 +01:00
tools tools: fix setup with built-in kernel modules 2016-03-24 22:04:10 +01:00
.gitignore init DPDK repository 2013-03-07 10:57:42 +01:00
GNUmakefile drivers: create new directory 2015-05-22 15:51:38 +02:00
LICENSE.GPL doc: GPL/LGPL licenses 2013-07-25 14:43:06 +02:00
LICENSE.LGPL doc: fix file format (dos to unix) 2013-09-06 11:43:07 +02:00
MAINTAINERS enic: update maintainers 2016-03-25 19:01:37 +01:00
Makefile remove trailing whitespaces 2014-06-11 00:29:34 +02:00
README doc: add readme file 2015-12-13 22:06:58 +01:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD license for the core libraries and
drivers. The kernel components are GPLv2 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org