Re: [PATCH iwl-net 4/5] ice: Implement VF LLDP RX support on VF
From: Jiri Pirko <jiri@resnulli.us>
Date: 2024-02-29 09:12:37
Also in:
intel-wired-lan, lkml
Wed, Feb 28, 2024 at 04:59:48PM CET, larysa.zaremba@intel.com wrote: [...]
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index 9c2c8637b4a7..af3611055e60 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c@@ -4704,9 +4704,60 @@ void ice_deinit_dev(struct ice_pf *pf)ice_clear_interrupt_scheme(pf); } +static ssize_t rx_lldp_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct ice_pf *pf = dev_get_drvdata(dev); + struct ice_vsi *vsi = ice_get_main_vsi(pf); + + return sysfs_emit(buf, "%u\n", vsi->rx_lldp_ena); +} + +static ssize_t rx_lldp_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + struct ice_pf *pf = dev_get_drvdata(dev); + struct ice_vsi *vsi; + bool ena; + int err; + + if (test_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags)) { + dev_err(dev, "Toggling Rx LLDP for PF is only allowed when FW LLDP Agent is disabled"); + return -EPERM; + } + + err = kstrtobool(buf, &ena); + if (err) + return -EINVAL; + + vsi = ice_get_main_vsi(pf); + + if (ena == vsi->rx_lldp_ena) { + dev_dbg(dev, "Rx LLDP already %sabled", ena ? "en" : "dis"); + return count; + } + + ice_cfg_sw_lldp(vsi, false, ena); + + return count; +} + +static DEVICE_ATTR_RW(rx_lldp); + +static int ice_init_rx_lldp_sysfs(struct ice_pf *pf) +{ + return device_create_file(ice_pf_to_dev(pf), &dev_attr_rx_lldp);
Don't add driver specific sysfs knobs please. pw-bot: reject [...]