mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
linux:nvidia: macsec sysfs nodes only if enabled
Issue: Accessing the macsec sysfs nodes is leading to crash when macsec is disabled in DT Fix: Do not create sysfs nodes if macsec is not enabled in DT. Also update the instance_id reading as part of ether_probe which will be executed even when macsec is disabled Bug 4431523 Bug 4910958 Change-Id: I354ac142b9d49852a0d5c7557a7368e1c36b0f63 Signed-off-by: Sanath Kumar Gampa <sgampa@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/3043469 (cherry picked from commit acf3356b8e9cbd7c0f9e34a0ead3591e83f65b60) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/3081473 Signed-off-by: Revanth Kumar Uppala <ruppala@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3292924 Reviewed-by: Narayana Reddy P <narayanr@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com> Reviewed-by: Bibek Basu <bbasu@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
d641168e9e
commit
00761e184e
@@ -5790,6 +5790,13 @@ static int ether_parse_dt(struct ether_priv_data *pdata)
|
||||
}
|
||||
}
|
||||
|
||||
/* Read MAC instance id */
|
||||
ret = of_property_read_u32(np, "nvidia,instance_id", &osi_core->instance_id);
|
||||
if (ret != 0) {
|
||||
dev_info(dev, "DT instance_id missing\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (osi_dma->num_dma_chans != osi_core->num_mtl_queues) {
|
||||
dev_err(dev, "mismatch in numbers of DMA channel and MTL Q\n");
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2019-2023, NVIDIA CORPORATION. All rights reserved */
|
||||
/* Copyright (c) 2019-2025, NVIDIA CORPORATION. All rights reserved */
|
||||
|
||||
#ifdef MACSEC_SUPPORT
|
||||
#include "ether_linux.h"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2019-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved */
|
||||
/* Copyright (c) 2019-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved */
|
||||
|
||||
#include "ether_linux.h"
|
||||
#include "macsec.h"
|
||||
@@ -2735,6 +2735,33 @@ static struct attribute *ether_sysfs_attrs[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Attributes for nvethernet sysfs without MACSEC
|
||||
*/
|
||||
static struct attribute *ether_sysfs_attrs_without_macsec[] = {
|
||||
#ifndef OSI_STRIPPED_LIB
|
||||
#ifdef OSI_DEBUG
|
||||
&dev_attr_desc_dump_enable.attr,
|
||||
#endif /* OSI_DEBUG */
|
||||
&dev_attr_mac_loopback.attr,
|
||||
&dev_attr_ptp_mode.attr,
|
||||
&dev_attr_ptp_sync.attr,
|
||||
&dev_attr_frp.attr,
|
||||
&dev_attr_uphy_gbe_mode.attr,
|
||||
&dev_attr_phy_iface_mode.attr,
|
||||
#ifdef ETHER_NVGRO
|
||||
&dev_attr_nvgro_pkt_age_msec.attr,
|
||||
&dev_attr_nvgro_timer_interval.attr,
|
||||
&dev_attr_nvgro_stats.attr,
|
||||
&dev_attr_nvgro_dump.attr,
|
||||
#endif
|
||||
#endif /* OSI_STRIPPED_LIB */
|
||||
#ifdef HSI_SUPPORT
|
||||
&dev_attr_hsi_enable.attr,
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Ethernet sysfs attribute group
|
||||
*/
|
||||
@@ -2743,6 +2770,14 @@ static struct attribute_group ether_attribute_group = {
|
||||
.attrs = ether_sysfs_attrs,
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Ethernet sysfs attribute group without macsec
|
||||
*/
|
||||
static struct attribute_group ether_attribute_group_wo_macsec = {
|
||||
.name = "nvethernet",
|
||||
.attrs = ether_sysfs_attrs_without_macsec,
|
||||
};
|
||||
|
||||
#ifndef OSI_STRIPPED_LIB
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
static char *timestamp_system_source(unsigned int source)
|
||||
@@ -3331,7 +3366,10 @@ int ether_sysfs_register(struct ether_priv_data *pdata)
|
||||
#endif /* OSI_STRIPPED_LIB */
|
||||
|
||||
/* Create nvethernet sysfs group under /sys/devices/<ether_device>/ */
|
||||
if (pdata->macsec_pdata)
|
||||
return sysfs_create_group(&dev->kobj, ðer_attribute_group);
|
||||
else
|
||||
return sysfs_create_group(&dev->kobj, ðer_attribute_group_wo_macsec);
|
||||
}
|
||||
|
||||
void ether_sysfs_unregister(struct ether_priv_data *pdata)
|
||||
@@ -3343,5 +3381,8 @@ void ether_sysfs_unregister(struct ether_priv_data *pdata)
|
||||
#endif
|
||||
#endif /* OSI_STRIPPED_LIB */
|
||||
/* Remove nvethernet sysfs group under /sys/devices/<ether_device>/ */
|
||||
if (pdata->macsec_pdata)
|
||||
sysfs_remove_group(&dev->kobj, ðer_attribute_group);
|
||||
else
|
||||
sysfs_remove_group(&dev->kobj, ðer_attribute_group_wo_macsec);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user