Thread (44 messages) 44 messages, 6 authors, 2015-05-09

Re: [PATCH net-next v5 05/21] switchdev: convert STP update to switchdev attr set

From: Scott Feldman <hidden>
Date: 2015-05-06 05:32:10

On Tue, May 5, 2015 at 8:22 PM, Jiri Pirko [off-list ref] wrote:
Tue, May 05, 2015 at 07:34:41PM CEST, sfeldma@gmail.com wrote:
quoted
From: Scott Feldman <redacted>

STP update is just a settable port attribute, so convert
switchdev_port_stp_update to an attr set.

For rocker, support prepare-commit transaction model for setting STP state.
This requires rocker to preallocate memory needed for the commit up front
in the prepare phase.  Since rtnl_lock is held between prepare-commit,
store the allocated memory on a queue hanging off of the rocker_port.
Also, in prepare phase, do everything right up to calling into HW.  The
same code paths are tranversed in the driver for both prepare and commit
phases.  In some cases, any state modified in the prepare phase must be
reverted before returning so the commit phase makes the same decisions.

For rocker, as a consequence of holding rtnl_lock in process context for
all attr sets (and obj adds), all memory is GFP_KERNEL allocated and we
don't need to busy spin waiting for the device to complete the command.  So
the bulk of this patch is simplifying the memory allocations to only use
GFP_KERNEL and to remove the nowait flag and busy spin loop.

For DSA, the prepare phase is skipped and STP updates are only done in the
commit phase.  This is because currently the DSA drivers don't need to
allocate any memory for STP updates and the STP update will not fail to HW
(unless something horrible goes wrong on the MDIO bus, in which case the
prepare phase wouldn't have been able to predict anyway).

Signed-off-by: Scott Feldman <redacted>
Hmm. This patch looks like a squash of two independent patches. It would
be better to push alloc change and stp update change as separate
patches.
I'll split it in v6.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help