switch (event) {
case NETEVENT_NEIGH_UPDATE:
+ /* ignore events for HW with missing L3 offloading implementation */
+ if (!priv->r->l3_setup)
+ return NOTIFY_DONE;
+
if (n->tbl != &arp_tbl)
return NOTIFY_DONE;
dev = n->dev;
priv = container_of(this, struct rtl838x_switch_priv, fib_nb);
+ /* ignore FIB events for HW with missing L3 offloading implementation */
+ if (!priv->r->l3_setup)
+ return NOTIFY_DONE;
+
fib_work = kzalloc(sizeof(*fib_work), GFP_ATOMIC);
if (!fib_work)
return NOTIFY_BAD;
rtl83xx_setup_qos(priv);
- priv->r->l3_setup(priv);
+ if (priv->r->l3_setup)
+ priv->r->l3_setup(priv);
/* Clear all destination ports for mirror groups */
for (int i = 0; i < 4; i++)
}
-static int rtl931x_l3_setup(struct rtl838x_switch_priv *priv)
-{
- return 0;
-}
-
static void rtl931x_vlan_port_keep_tag_set(int port, bool keep_outer, bool keep_inner)
{
sw_w32(FIELD_PREP(RTL931X_VLAN_PORT_TAG_EGR_OTAG_STS_MASK,
.pie_rule_add = rtl931x_pie_rule_add,
.pie_rule_rm = rtl931x_pie_rule_rm,
.l2_learning_setup = rtl931x_l2_learning_setup,
- .l3_setup = rtl931x_l3_setup,
.led_init = rtldsa_931x_led_init,
.enable_learning = rtldsa_931x_enable_learning,
.enable_flood = rtldsa_931x_enable_flood,