net/sched: remove block pointer from common offload structure
Based on feedback from Jiri avoid carrying a pointer to the tcf_block structure in the tc_cls_common_offload structure. Instead store a flag in driver private data which indicates if offloads apply to a shared block at block binding time. Suggested-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
2e7ae67b5f
commit
d6787147e1
@@ -215,6 +215,7 @@ struct nfp_fl_qos {
|
||||
* @lag_port_flags: Extended port flags to record lag state of repr
|
||||
* @mac_offloaded: Flag indicating a MAC address is offloaded for repr
|
||||
* @offloaded_mac_addr: MAC address that has been offloaded for repr
|
||||
* @block_shared: Flag indicating if offload applies to shared blocks
|
||||
* @mac_list: List entry of reprs that share the same offloaded MAC
|
||||
* @qos_table: Stored info on filters implementing qos
|
||||
*/
|
||||
@@ -223,6 +224,7 @@ struct nfp_flower_repr_priv {
|
||||
unsigned long lag_port_flags;
|
||||
bool mac_offloaded;
|
||||
u8 offloaded_mac_addr[ETH_ALEN];
|
||||
bool block_shared;
|
||||
struct list_head mac_list;
|
||||
struct nfp_fl_qos qos_table;
|
||||
};
|
||||
|
@@ -1197,10 +1197,14 @@ static int nfp_flower_setup_tc_block(struct net_device *netdev,
|
||||
struct tc_block_offload *f)
|
||||
{
|
||||
struct nfp_repr *repr = netdev_priv(netdev);
|
||||
struct nfp_flower_repr_priv *repr_priv;
|
||||
|
||||
if (f->binder_type != TCF_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
repr_priv = repr->app_priv;
|
||||
repr_priv->block_shared = tcf_block_shared(f->block);
|
||||
|
||||
switch (f->command) {
|
||||
case TC_BLOCK_BIND:
|
||||
return tcf_block_cb_register(f->block,
|
||||
|
@@ -76,8 +76,9 @@ nfp_flower_install_rate_limiter(struct nfp_app *app, struct net_device *netdev,
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
repr = netdev_priv(netdev);
|
||||
repr_priv = repr->app_priv;
|
||||
|
||||
if (tcf_block_shared(flow->common.block)) {
|
||||
if (repr_priv->block_shared) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "unsupported offload: qos rate limit offload not supported on shared blocks");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@@ -123,7 +124,6 @@ nfp_flower_install_rate_limiter(struct nfp_app *app, struct net_device *netdev,
|
||||
config->cir = cpu_to_be32(rate);
|
||||
nfp_ctrl_tx(repr->app->ctrl, skb);
|
||||
|
||||
repr_priv = repr->app_priv;
|
||||
repr_priv->qos_table.netdev_port_id = netdev_port_id;
|
||||
fl_priv->qos_rate_limiters++;
|
||||
if (fl_priv->qos_rate_limiters == 1)
|
||||
|
Reference in New Issue
Block a user