diff options
author | Oleksij Rempel <o.rempel@pengutronix.de> | 2022-04-13 10:21:52 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2022-04-14 09:42:09 +0200 |
commit | dec9b064d84ee7a3c7167cb42d1d3e8e09df07f9 (patch) | |
tree | 5408c644dc0ff92928cce84bcfdc04e9a0431b53 /net | |
parent | ec3dd1aea7c178e9d18e385b85392d63c49b4f23 (diff) | |
download | barebox-dec9b064d84ee7a3c7167cb42d1d3e8e09df07f9.tar.gz barebox-dec9b064d84ee7a3c7167cb42d1d3e8e09df07f9.tar.xz |
net: add RX preprocessor support
Add callback for optional rx_preprocessor. This is needed to add DSA
switch support and demultiplex traffic received from different switch ports.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://lore.barebox.org/20220413082205.429509-2-o.rempel@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'net')
-rw-r--r-- | net/net.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -708,6 +708,17 @@ int net_receive(struct eth_device *edev, unsigned char *pkt, int len) goto out; } + if (edev->rx_preprocessor) { + ret = edev->rx_preprocessor(edev, &pkt, &len); + if (ret == -ENOMSG) + return 0; + if (ret) { + pr_debug("%s: rx_preprocessor failed %pe\n", __func__, + ERR_PTR(ret)); + return ret; + } + } + switch (et_protlen) { case PROT_ARP: ret = net_handle_arp(edev, pkt, len); |