net: dsa: bcm_sf2: Make UDF slices more configurable
authorFlorian Fainelli <f.fainelli@gmail.com>
Fri, 20 Oct 2017 21:39:45 +0000 (14:39 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 23 Oct 2017 02:06:47 +0000 (03:06 +0100)
commit5d80bcbb631ce035f37bce1924fe73ed0d77b546
treeb193ea4c80ebbf26d0ac22a7cf9f309cc8da3537
parent3306145866b62ff9087b4fde489df4b3ee8755c1
net: dsa: bcm_sf2: Make UDF slices more configurable

In preparation for introducing IPv6 rules support, make the
cfp_udf_layout more flexible and match more accurately how the HW is
designed: we have 3 + 1 slices per protocol, but we may not be using all
of them and we are relative to a particular base offset (slice A for
IPv4 for instance). Also populate the slice number that should be used
(slice 1 for IPv4) based on the lookup function.

Finally, we introduce two helper functions: udf_upper_bits() and
udf_lower_bits() to help setting the UDF_n_* valid bits based on the
number of UDFs valid within a slice. Update the IPv4 rule setting to
make use of it to be more robust wrt. change in number of User Defined
Fields being programmed.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/bcm_sf2_cfp.c
drivers/net/dsa/bcm_sf2_regs.h