ae844e5e68
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: |
||
---|---|---|
app | ||
config | ||
doc | ||
drivers | ||
examples | ||
lib | ||
mk | ||
pkg | ||
scripts | ||
tools | ||
.gitignore | ||
GNUmakefile | ||
LICENSE.GPL | ||
LICENSE.LGPL | ||
MAINTAINERS | ||
Makefile | ||
README |
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