>-----Original Message-----
>From: Love, Robert W
>Sent: Tuesday, April 21, 2009 5:35 PM
>To: Ma, Steve
>Cc: [email protected]
>Subject: Re: [Open-FCoE] [PATCH] libhbalinux: Reading device_id, etc. from
>sysfs instead of libpciaccess
>
>On Tue, 2009-04-21 at 15:20 -0700, Steve Ma wrote:
>> The vendor_id, device_id, subsystem_vendor_id, subsystem_device_id,
>> and device_class can be either obtained from libpciaccess and sysfs
>> for networking HBA. We need only to read these information from
>> the sysfs, and remove code for getting these information from pci.
>> ---
>Won't this cause libhbalinux to report incorrect or at least the default
>values for these fields when using a netdev based device?
>
>I realize that we're a bit hacky in libhbalinux for netdev based HBAs,
>but I'm not in favor of breaking it unless we have kernel code to expose
>the underlying base driver info through the FC class sysfs entries.
>
The values in the sysfs are correct. I think we should use them.
>>
>> lport.c | 4 +---
>> pci.c | 10 +---------
>> 2 files changed, 2 insertions(+), 12 deletions(-)
>>
>> diff --git a/lport.c b/lport.c
>> index 8c1beb7..99629f9 100644
>> --- a/lport.c
>> +++ b/lport.c
>> @@ -181,7 +181,7 @@ sysfs_scan(struct dirent *dp, void *arg)
>> goto skip;
>> buf[i] = '\0';
>>
>> - if (strstr(buf, "devices/pci")) {
>> + if (strstr(buf, "devices/pci") && !strstr(buf, "/net/")) {
>> snprintf(hba_dir, sizeof(hba_dir), "%s/device/..", host_dir);
>> } else {
>> /* assume a net device */
>> @@ -316,7 +316,6 @@ sysfs_scan(struct dirent *dp, void *arg)
>> snprintf(buf, sizeof(buf), "fcoe:%s", ifname);
>> ap->ad_name = strdup(buf);
>>
>> -#if 0
>> /* Get vendor_id */
>> rc = sa_sys_read_u32(hba_dir, "vendor", &hba_info.vendor_id);
>>
>> @@ -334,7 +333,6 @@ sysfs_scan(struct dirent *dp, void *arg)
>> /* Get device_class */
>> rc = sa_sys_read_u32(hba_dir, "class", &hba_info.device_class);
>> hba_info.device_class = hba_info.device_class>>8;
>> -#endif
>>
>> /*
>> * Get Hardware Information via PCI Library
>> diff --git a/pci.c b/pci.c
>> index 0a06d86..813a2e9 100644
>> --- a/pci.c
>> +++ b/pci.c
>> @@ -158,11 +158,6 @@ get_pci_device_info(struct pci_device *dev, struct
>hba_info *hba_info)
>> u_int8_t hdr_type;
>> char *unknown = "Unknown";
>>
>> - hba_info->vendor_id = dev->vendor_id;
>> - hba_info->device_id = dev->device_id;
>> - hba_info->subsystem_vendor_id = dev->subvendor_id;
>> - hba_info->subsystem_device_id = dev->subdevice_id;
>> -
>> name = pci_device_get_vendor_name(dev);
>> if (!name)
>> name = unknown;
>> @@ -178,12 +173,9 @@ get_pci_device_info(struct pci_device *dev, struct
>hba_info *hba_info)
>> name, sizeof(hba_info->ModelDescription));
>>
>> /*
>> - * Reading device class and revision from PCIe
>> + * Reading harware revision from PCIe
>typo here.
>
I will fix the typo and re-submit.
>> * configuration header space.
>> */
>> - pci_device_cfg_read_u16(dev, &class, PCI_CLASS_DEVICE);
>> - hba_info->device_class = class;
>> -
>> pci_device_cfg_read_u8(dev, &revision, PCI_REVISION_ID);
>> snprintf(hba_info->HardwareVersion,
>> sizeof(hba_info->HardwareVersion),
>>
>> _______________________________________________
>> devel mailing list
>> [email protected]
>> http://www.open-fcoe.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel