[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20111223130148.GB27206@electric-eye.fr.zoreil.com>
Date: Fri, 23 Dec 2011 14:01:48 +0100
From: Francois Romieu <romieu@...zoreil.com>
To: Jeff Kirsher <jeffrey.t.kirsher@...el.com>
Cc: davem@...emloft.net, Don Skidmore <donald.c.skidmore@...el.com>,
netdev@...r.kernel.org, gospo@...hat.com, sassmann@...hat.com,
Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@...el.com>
Subject: Re: [net-next 8/9] ixgbe: add interface to export thermal data
Jeff Kirsher <jeffrey.t.kirsher@...el.com> :
> From: Don Skidmore <donald.c.skidmore@...el.com>
>
> Some of our adapters have thermal data available, this patch exports this
> data via a read-only sysfs interface. More patches will follow that will
> contain additional information to be exported.
>
> Signed-off-by: Don Skidmore <donald.c.skidmore@...el.com>
> Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@...el.com>
> Tested-by: Stephen Ko <stephen.s.ko@...el.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@...el.com>
> ---
> drivers/net/ethernet/intel/ixgbe/Makefile | 2 +-
> drivers/net/ethernet/intel/ixgbe/ixgbe.h | 4 +
> drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 2 +
> drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 6 +
> drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.c | 305 ++++++++++++++++++++++++
[...]
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
> index 7720721..1a3810e 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
> @@ -2137,6 +2137,8 @@ static struct ixgbe_mac_operations mac_ops_82599 = {
> .set_vlan_anti_spoofing = &ixgbe_set_vlan_anti_spoofing,
> .acquire_swfw_sync = &ixgbe_acquire_swfw_sync,
> .release_swfw_sync = &ixgbe_release_swfw_sync,
> + .get_thermal_sensor_data = &ixgbe_get_thermal_sensor_data_generic,
> + .init_thermal_sensor_thresh = &ixgbe_init_thermal_sensor_thresh_generic,
.get_thermal_sensor_data and .init_thermal_sensor_thresh do not seem to
be read anywhere.
>
> };
>
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> index e27e4d1..b5cef7e 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> @@ -7717,6 +7717,10 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
>
> e_dev_info("Intel(R) 10 Gigabit Network Connection\n");
> cards_found++;
> +
> + if (ixgbe_sysfs_init(adapter))
> + e_err(probe, "failed to allocate sysfs resources\n");
> +
> return 0;
>
> err_register:
> @@ -7764,6 +7768,8 @@ static void __devexit ixgbe_remove(struct pci_dev *pdev)
> }
>
> #endif
> + ixgbe_sysfs_exit(adapter);
> +
> #ifdef IXGBE_FCOE
> if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED)
> ixgbe_cleanup_fcoe(adapter);
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.c
> new file mode 100644
> index 0000000..db818ae
> --- /dev/null
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.c
[...]
> +static void ixgbe_del_adapter(struct ixgbe_adapter *adapter)
Please name it ixgbe_sysfs_del_adapter or anything better.
> +{
> + int i;
> +
> + if (adapter == NULL)
> + return;
> +
> + for (i = 0; i < IXGBE_MAX_SENSORS; i++) {
> + if (adapter->therm_kobj[i] == NULL)
> + continue;
> + sysfs_remove_group(adapter->therm_kobj[i], &therm_attr_group);
> + kobject_put(adapter->therm_kobj[i]);
> + }
> + if (adapter->info_kobj != NULL)
> + kobject_put(adapter->info_kobj);
> +}
> +
> +/* called from ixgbe_main.c */
> +void ixgbe_sysfs_exit(struct ixgbe_adapter *adapter)
> +{
> + ixgbe_del_adapter(adapter);
> +}
> +
> +/* called from ixgbe_main.c */
> +int ixgbe_sysfs_init(struct ixgbe_adapter *adapter)
> +{
> + struct net_device *netdev;
> + int rc = 0;
> + int i;
> + char buf[16];
> +
> + if (adapter == NULL)
> + goto err;
ixgbe_sysfs_init is only used in ixgbe_probe at a place where adapter can
not be NULL.
> + netdev = adapter->netdev;
> + if (netdev == NULL)
> + goto err;
netdev can not be NULL.
> +
> + adapter->info_kobj = NULL;
> + for (i = 0; i < IXGBE_MAX_SENSORS; i++)
> + adapter->therm_kobj[i] = NULL;
> +
> + /* create info kobj and attribute listings in kobj */
> + adapter->info_kobj = kobject_create_and_add("info",
> + &(netdev->dev.kobj));
Remove comment and parenthesis. Everything can fit in a single line.
> + if (adapter->info_kobj == NULL)
> + goto err;
> +
> + /* Don't create thermal subkobjs if no data present */
> + if (ixgbe_thermal_present(adapter->info_kobj) != true)
> + goto exit;
> +
> + for (i = 0; i < IXGBE_MAX_SENSORS; i++) {
'buf' ought to be declared here.
> +
> + /*
> + * Likewise only create individual kobjs that have
> + * meaningful data.
> + */
> + if (adapter->hw.mac.thermal_sensor_data.sensor[i].location == 0)
> + continue;
> +
> + /* directory named after sensor offset */
> + snprintf(buf, sizeof(buf), "sensor_%d", i);
> + adapter->therm_kobj[i] =
> + kobject_create_and_add(buf, adapter->info_kobj);
> + if (adapter->therm_kobj[i] == NULL)
> + goto err;
> + if (sysfs_create_group(adapter->therm_kobj[i],
> + &therm_attr_group))
> + goto err;
> + }
> +
> + goto exit;
> +
> +err:
> + ixgbe_del_adapter(adapter);
> + rc = -1;
> +exit:
> + return rc;
> +}
> +
> --
> 1.7.7.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists