Patch "cxgb4vf: Fix SGE FL buffer initialization logic for 64K pages" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
cxgb4vf: Fix SGE FL buffer initialization logic for 64K pages
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
cxgb4vf-fix-sge-fl-buffer-initialization-logic-for-64k-pages.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Mon Apr 9 13:58:16 CEST 2018
From: Arjun Vynipadath <[email protected]>
Date: Wed, 10 Jan 2018 12:02:13 +0530
Subject: cxgb4vf: Fix SGE FL buffer initialization logic for 64K pages
From: Arjun Vynipadath <[email protected]>
[ Upstream commit ea0a42109aee7b92e631c4eb3f2219fadf58acdd ]
We'd come in with SGE_FL_BUFFER_SIZE[0] and [1] both equal to 64KB and the extant logic would flag that as an error. This was already fixed in cxgb4 driver with "92ddcc7 cxgb4: Fix some small bugs in t4_sge_init_soft() when our Page Size is 64KB".
Original Work by: Casey Leedom <[email protected]>
--- drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)
drivers/net/ethernet/chelsio/cxgb4vf/sge.c +17 -6
@@ -2619,8 +2619,8 @@ void t4vf_sge_stop(struct adapter *adaptint t4vf_sge_init (struct adapter *adapter) {struct sge_params *sge_params = &adapter->params.sge; -u32 fl0 = sge_params->sge_fl_buffer_size[0 ]; -u32 fl1 = sge_params->sge_fl_buffer_size[1 ]; +u32 fl_small_pg = sge_params->sge_fl_buffer_size[0 ]; +u32 fl_large_pg = sge_params->sge_fl_buffer_size[1 ];struct sge *s = &adapter->sge;/*
@@ -2628,9 +2628,20 @@ int t4vf_sge_init(struct adapter *adapte* the Physical Function Driver. Ideally we should be able to deal * with _any_ configuration. Practice is different ... */ -if (fl0 !=PAGE_SIZE || (fl1 !=0 && fl1 <= fl0)) { + +/* We only bother using the Large Page logic if the Large Page Buffer +* is larger than our Page Size Buffer. +*/ +if (fl_large_pg <= fl_small_pg) + fl_large_pg =0 ; + +/* The Page Size Buffer must be exactly equal to our Page Size and the +* Large Page Size Buffer should be 0 (per above) or a power of 2. +*/ +if (fl_small_pg !=PAGE_SIZE || + (fl_large_pg & (fl_large_pg -1 )) !=0 ) {dev_err (adapter->pdev_dev,"bad SGE FL buffer sizes [%d, %d]\n" , - fl0, fl1); + fl_small_pg, fl_large_pg);return -EINVAL ; } if ((sge_params->sge_control & RXPKTCPLMODE_F) !=
@@ -2642,8 +2653,8 @@ int t4vf_sge_init(struct adapter *adapte/* * Now translate the adapter parameters into our internal forms. */ -if (fl1) - s->fl_pg_order =ilog2 (fl1) -PAGE_SHIFT ; +if (fl_large_pg) + s->fl_pg_order =ilog2 (fl_large_pg) -PAGE_SHIFT ; s->stat_len = ((sge_params->sge_control &EGRSTATUSPAGESIZE_F ) ?128 :64 ); s->pktshift =PKTSHIFT_G (sge_params->sge_control);
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/cxgb4vf-fix-sge-fl-buffer-initialization-logic-for-64k-pages.patch