summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRavi Gunasekaran <r-gunasekaran@ti.com>2024-03-12 15:56:58 +0530
committerPraneeth Bajjuri <praneeth@ti.com>2024-03-12 15:51:03 -0500
commit0553610ace3e1b55eda28ca15863146c90080d83 (patch)
tree00e88a1fcf054f69536767886ecac585c4853604
parentc6abd1410cce11168822ad71f9c344108aa3c6d0 (diff)
net: ethernet: ti: icssg_prueth: Fix processing NETDEV_CHANGEUPPER event
In HSR mode, the netdev notifier does not take care of the unlinking event of the upper net device. Fix this. Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
-rw-r--r--drivers/net/ethernet/ti/icssg_prueth.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/drivers/net/ethernet/ti/icssg_prueth.c b/drivers/net/ethernet/ti/icssg_prueth.c
index b6b075bf64d0..56a2f6c622b3 100644
--- a/drivers/net/ethernet/ti/icssg_prueth.c
+++ b/drivers/net/ethernet/ti/icssg_prueth.c
@@ -2702,16 +2702,20 @@ static int prueth_netdevice_event(struct notifier_block *unused,
if ((ndev->features & NETIF_PRUETH_HSR_OFFLOAD) &&
is_hsr_master(info->upper_dev)) {
- if (!prueth->hsr_dev) {
- prueth->hsr_dev = info->upper_dev;
-
- icssg_class_set_host_mac_addr(prueth->miig_rt,
- prueth->hsr_dev->dev_addr);
- } else {
- if (prueth->hsr_dev != info->upper_dev) {
- dev_err(prueth->dev, "Both interfaces must be linked to same upper device\n");
- return -EOPNOTSUPP;
+ if (info->linking) {
+ if (!prueth->hsr_dev) {
+ prueth->hsr_dev = info->upper_dev;
+
+ icssg_class_set_host_mac_addr(prueth->miig_rt,
+ prueth->hsr_dev->dev_addr);
+ } else {
+ if (prueth->hsr_dev != info->upper_dev) {
+ dev_err(prueth->dev, "Both interfaces must be linked to same upper device\n");
+ return -EOPNOTSUPP;
+ }
}
+ } else {
+ prueth->hsr_dev = NULL;
}
}