powerpc/85xx: fix rev.2 job queue LIODN error storm

pumping line-rate traffic though a p4080 rev.2, which
is configured to encrypt packets prior to forwarding through
an IPsec tunnel, gets this error:

of_platform ffe302000.jq: DECO: desc idx 22: LIODN error. DECO was trying
to share from itself or from another DECO but the two Non-SEQ LIODN
values didn't match or the "shared from" DECO's Descriptor required that
the SEQ LIODNs be the same and they aren't.

Since high traffic rates cause DECOs to begin to start sharing
shared descriptors amongst themselves, and DECOs inherit job queue
LIODNs when accessing shared descriptors, and a recently discovered
rev.2 h/w erratum requires all sharing job queues in a partition
have same liodn assignment, reassign the first job queue's liodn
assignment to the rest.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
Kim Phillips 2010-09-03 10:57:31 -05:00 committed by Kumar Gala
parent 3c6a22b962
commit e95a0611f2
1 changed files with 10 additions and 4 deletions

View File

@ -81,10 +81,16 @@ struct liodn_id_table fman2_liodn_tbl[] = {
#endif
struct liodn_id_table sec_liodn_tbl[] = {
SET_SEC_JR_LIODN_ENTRY(0, 146, 154),
SET_SEC_JR_LIODN_ENTRY(1, 147, 155),
SET_SEC_JR_LIODN_ENTRY(2, 178, 186),
SET_SEC_JR_LIODN_ENTRY(3, 179, 187),
/*
* We assume currently that all JR are in the same partition
* and as such they need to represent the same LIODN due to
* a 4080 rev.2 h/w requirement that DECOs sharing from themselves
* or from another DECO have the two Non-SEQ LIODN values equal
*/
SET_SEC_JR_LIODN_ENTRY(0, 146, 154), /* (0, 146, 154), */
SET_SEC_JR_LIODN_ENTRY(1, 146, 154), /* (1, 147, 155), */
SET_SEC_JR_LIODN_ENTRY(2, 146, 154), /* (2, 178, 186), */
SET_SEC_JR_LIODN_ENTRY(3, 146, 154), /* (3, 179, 187), */
SET_SEC_RTIC_LIODN_ENTRY(a, 144),
SET_SEC_RTIC_LIODN_ENTRY(b, 145),
SET_SEC_RTIC_LIODN_ENTRY(c, 176),