bd3b5d46 | 12-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: restructure Qdisc handling
In preparation of handling more Qdisc types switch to a different offload strategy. We have now recreated the Qdisc hierarchy in the driver. Every time the hie
nfp: abm: restructure Qdisc handling
In preparation of handling more Qdisc types switch to a different offload strategy. We have now recreated the Qdisc hierarchy in the driver. Every time the hierarchy changes parse it, and update the configuration of the HW accordingly.
While at it drop the support of pretending that we can instantiate a single queue on a multi-queue device in HW/FW. MQ is now required, and each queue will have its own instance of RED.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
52db4eac | 12-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: save RED's parameters
Use the new driver Qdisc structure to keep track of parameters of RED Qdiscs. This way as the Qdisc moves around in the hierarchy we will be able to configure the HW
nfp: abm: save RED's parameters
Use the new driver Qdisc structure to keep track of parameters of RED Qdiscs. This way as the Qdisc moves around in the hierarchy we will be able to configure the HW appropriately.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
6c5dbda0 | 12-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: reset RED's child based on limit
RED qdisc will replace its child Qdisc with a new FIFO queue if it is reconfigured and the limit parameter is not 0.
This means that when it's created wit
nfp: abm: reset RED's child based on limit
RED qdisc will replace its child Qdisc with a new FIFO queue if it is reconfigured and the limit parameter is not 0.
This means that when it's created with limit of 0 it will have no FIFO, and all packets will be dropped. If it's changed and limit is specified it will loose its existing child (implicit graft). Make sure we mark RED Qdisc child as NFP_QDISC_UNTRACKED if its not the expected FIFO.
nfp_abm_qdisc_replace() will return 1 if Qdisc already existed.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
6b8417b7 | 12-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: build full Qdisc hierarchy based on graft notifications
Using graft notifications recreate in the driver the full Qdisc hierarchy. Keep track of how many times each Qdisc is attached to t
nfp: abm: build full Qdisc hierarchy based on graft notifications
Using graft notifications recreate in the driver the full Qdisc hierarchy. Keep track of how many times each Qdisc is attached to the hierarchy to make sure we don't offload Qdiscs which are attached multiple times (device queues can't be shared). For graft events of Qdiscs we don't know exist make the child as invalid/untracked.
Note that MQ Qdisc doesn't send destruction events reliably when device is dismantled, so we need to manually clean out the children otherwise we'd think Qdiscs which are still in use are getting freed.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
aee7539c | 12-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: allocate Qdisc child table
To keep track of Qdisc hierarchy allocate a table for children for each Qdisc. RED Qdisc can only have one child.
Signed-off-by: Jakub Kicinski <jakub.kicinski
nfp: abm: allocate Qdisc child table
To keep track of Qdisc hierarchy allocate a table for children for each Qdisc. RED Qdisc can only have one child.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
18531258 | 12-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: remember which Qdisc is root
Keep track of which Qdisc is currently root. We need to implement TC_SETUP_ROOT_QDISC handling, and for completeness also clear the root Qdisc pointer when it
nfp: abm: remember which Qdisc is root
Keep track of which Qdisc is currently root. We need to implement TC_SETUP_ROOT_QDISC handling, and for completeness also clear the root Qdisc pointer when it's freed. TC_SETUP_ROOT_QDISC isn't always sent when device is dismantled.
Remembering the root Qdisc will allow us to build the entire hierarchy in following patches.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
4f5681d0 | 12-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: track all offload-enabled qdiscs
Allocate an object corresponding to any offloaded qdisc we are informed about by the kernel. Not only the qdiscs we have a chance of offloading.
The coun
nfp: abm: track all offload-enabled qdiscs
Allocate an object corresponding to any offloaded qdisc we are informed about by the kernel. Not only the qdiscs we have a chance of offloading.
The count of created objects will be used to decide whether the ethtool TC offload can be disabled, since otherwise we may miss destroy commands.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
6666f545 | 12-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: keep track of all RED thresholds
Instead of writing the threshold out when Qdisc is configured and not remembering it move to a scheme where we remember all thresholds. When configuration
nfp: abm: keep track of all RED thresholds
Instead of writing the threshold out when Qdisc is configured and not remembering it move to a scheme where we remember all thresholds. When configuration changes parse the offloaded Qdiscs and set thresholds appropriately.
This will help future extensions.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
6e5a716f | 09-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: refuse RED offload with harddrop set
RED Qdisc will now inform the drivers about the state of the harddrop flag. Refuse to offload in case harddrop is set.
Signed-off-by: Jakub Kicinski
nfp: abm: refuse RED offload with harddrop set
RED Qdisc will now inform the drivers about the state of the harddrop flag. Refuse to offload in case harddrop is set.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
cae5f48e | 09-Nov-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: don't set negative threshold
Turns out the threshold value is used in signed compares in the FW, so we should avoid setting the top bit.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netr
nfp: abm: don't set negative threshold
Turns out the threshold value is used in signed compares in the FW, so we should avoid setting the top bit.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley <john.hurley@netronome.com> Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
4152e58c | 28-Aug-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: make RTsym users handle absolute symbols correctly
Make the RTsym users access the size via the helper, which takes care of special handling of absolute symbols.
Signed-off-by: Jakub Kicinski
nfp: make RTsym users handle absolute symbols correctly
Make the RTsym users access the size via the helper, which takes care of special handling of absolute symbols.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Francois H. Theron <francois.theron@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
2440711e | 26-May-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: report correct MQ stats
Report the stat diff to make sure MQ stats add up to child stats.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dir
nfp: abm: report correct MQ stats
Report the stat diff to make sure MQ stats add up to child stats.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
cb89cac8 | 26-May-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: report statistics from RED offload
Report basic and extended RED statistics back to TC.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.
nfp: abm: report statistics from RED offload
Report basic and extended RED statistics back to TC.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
8c8e6406 | 26-May-2018 |
Jakub Kicinski <jakub.kicinski@netronome.com> |
nfp: abm: add simple RED offload
Offload simple RED configurations. For now support only DCTCP like scenarios where min and max are the same.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronom
nfp: abm: add simple RED offload
Offload simple RED configurations. For now support only DCTCP like scenarios where min and max are the same.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|