summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2015-07-06 16:47:55 -0600
committerSimon Glass <sjg@chromium.org>2015-07-21 17:39:41 -0600
commitb86f795a378fdeb873cdc464367660fb3b49c443 (patch)
tree55eb85ffe39700247dc4b31b544d49abf33add96 /net
parentfbc4b8af469459425de72530dbded0ddbe157004 (diff)
downloadu-boot-b86f795a378fdeb873cdc464367660fb3b49c443.tar.gz
u-boot-b86f795a378fdeb873cdc464367660fb3b49c443.tar.xz
u-boot-b86f795a378fdeb873cdc464367660fb3b49c443.zip
net: Allow drivers to return -ENOSYS with the write_hwaddr() method
Some drivers may want to implement this method for some of their devices but not for others. So it is not possible to just leave the operation out of the table. Drivers could get around this by masquerading as two separate drivers but that seems unpleasant. Allow the driver to return an error when it does not want to process the write_hwaddr() method. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'net')
-rw-r--r--net/eth.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/eth.c b/net/eth.c
index 72ce91c9d0..d3ec8d64d5 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -287,7 +287,13 @@ static int eth_write_hwaddr(struct udevice *dev)
return -EINVAL;
}
+ /*
+ * Drivers are allowed to decide not to implement this at
+ * run-time. E.g. Some devices may use it and some may not.
+ */
ret = eth_get_ops(dev)->write_hwaddr(dev);
+ if (ret == -ENOSYS)
+ ret = 0;
if (ret)
printf("\nWarning: %s failed to set MAC address\n",
dev->name);