/* PORT_ISO_RESTRICT_ROUTE_CTRL? */
/* Do not use prefix route 0 because of HW limitations */
- set_bit(0, priv->route_use_bm);
+ set_bit(0, ctrl->route_use_bm);
return 0;
}
static void otto_l3_route_remove(struct otto_l3_ctrl *ctrl, struct otto_l3_route *r)
{
- struct rtl838x_switch_priv *priv = ctrl->priv;
int id;
if (rhltable_remove(&ctrl->routes, &r->linkage, otto_l3_route_ht_params))
r->attr.valid = false;
ctrl->cfg->route_write(ctrl, id, r);
}
- clear_bit(r->id, priv->route_use_bm);
+ clear_bit(r->id, ctrl->route_use_bm);
}
kfree(r);
mutex_lock(&priv->reg_mutex);
- idx = find_first_zero_bit(priv->route_use_bm, MAX_ROUTES);
+ idx = find_first_zero_bit(ctrl->route_use_bm, MAX_ROUTES);
dev_dbg(ctrl->dev, "id: %d, ip %pI4\n", idx, &ip);
r = kzalloc(sizeof(*r), GFP_KERNEL);
goto out_free;
}
- set_bit(idx, priv->route_use_bm);
+ set_bit(idx, ctrl->route_use_bm);
mutex_unlock(&priv->reg_mutex);
#include "rtl-otto.h"
#define MAX_HOST_ROUTES 1536
+#define MAX_ROUTES 512
#define MAX_INTERFACES 100
#define HASH_PICK(val, lsb, len) ((val & (((1 << len) - 1) << lsb)) >> lsb)
struct notifier_block fib_nb;
struct notifier_block ne_nb;
struct rhltable routes;
+ unsigned long route_use_bm[MAX_ROUTES / 32];
unsigned long host_route_use_bm[MAX_HOST_ROUTES / 32];
struct otto_l3_intf *interfaces[MAX_INTERFACES];
};
#define N_FIXED_FIELDS 12
#define N_FIXED_FIELDS_RTL931X 14
#define MAX_COUNTERS 2048
-#define MAX_ROUTES 512
#define MAX_INTF_MTUS 8
#define DEFAULT_MTU 1536
#define MAX_ROUTER_MACS 64
unsigned long pie_use_bm[MAX_PIE_ENTRIES >> 5];
unsigned long octet_cntr_use_bm[MAX_COUNTERS >> 5];
unsigned long packet_cntr_use_bm[MAX_COUNTERS >> 4];
- unsigned long route_use_bm[MAX_ROUTES >> 5];
u16 intf_mtus[MAX_INTF_MTUS];
int intf_mtu_count[MAX_INTF_MTUS];