From: "Bryan O'Sullivan" <bos@pathscale.com>
To: rdreier@cisco.com
Cc: openib-general@openib.org, linux-kernel@vger.kernel.org
Subject: [PATCH 2 of 53] ipath - purge sps_lid and sps_mlid arrays, and /sys entries
Date: Fri, 12 May 2006 16:42:47 -0700 [thread overview]
Message-ID: <3ab7a7b10bf2ec62ee0e.1147477367@eng-12.pathscale.com> (raw)
In-Reply-To: <patchbomb.1147477365@eng-12.pathscale.com>
The two arrays only had space for 4 units, so didn't work for larger
numbers of units. I thought I'd eliminated these before submitting the
original driver patches.
Also fixed error return on ipath_sysfs_unit_write to not set an error
code if the sysfs code reports consuming more chars than we wrote (since
that can include the nul, and the user doesn't have to include the nul
in the write).
Also changed from ipath_set_sps_lid() to ipath_set_lid(); the sps
was a leftover piece of naming.
Signed-off-by: Bryan O'Sullivan <bos@pathscale.com>
diff -r 9b9f24aab350 -r 3ab7a7b10bf2 drivers/infiniband/hw/ipath/ipath_common.h
--- a/drivers/infiniband/hw/ipath/ipath_common.h Fri May 12 15:55:27 2006 -0700
+++ b/drivers/infiniband/hw/ipath/ipath_common.h Fri May 12 15:55:27 2006 -0700
@@ -121,8 +121,7 @@ struct infinipath_stats {
__u64 sps_ports;
/* list of pkeys (other than default) accepted (0 means not set) */
__u16 sps_pkeys[4];
- /* lids for up to 4 infinipaths, indexed by infinipath # */
- __u16 sps_lid[4];
+ __u16 sps_unused16[4]; /* available; maintaining compatible layout */
/* number of user ports per chip (not IB ports) */
__u32 sps_nports;
/* not our interrupt, or already handled */
@@ -140,10 +139,8 @@ struct infinipath_stats {
* packets if ipath not configured, sma/mad, etc.)
*/
__u64 sps_krdrops;
- /* mlids for up to 4 infinipaths, indexed by infinipath # */
- __u16 sps_mlid[4];
/* pad for future growth */
- __u64 __sps_pad[45];
+ __u64 __sps_pad[46];
};
/*
diff -r 9b9f24aab350 -r 3ab7a7b10bf2 drivers/infiniband/hw/ipath/ipath_init_chip.c
--- a/drivers/infiniband/hw/ipath/ipath_init_chip.c Fri May 12 15:55:27 2006 -0700
+++ b/drivers/infiniband/hw/ipath/ipath_init_chip.c Fri May 12 15:55:27 2006 -0700
@@ -836,8 +836,6 @@ int ipath_init_chip(struct ipath_devdata
/* clear any interrups up to this point (ints still not enabled) */
ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, -1LL);
- ipath_stats.sps_lid[dd->ipath_unit] = dd->ipath_lid;
-
/*
* Set up the port 0 (kernel) rcvhdr q and egr TIDs. If doing
* re-init, the simplest way to handle this is to free
diff -r 9b9f24aab350 -r 3ab7a7b10bf2 drivers/infiniband/hw/ipath/ipath_layer.c
--- a/drivers/infiniband/hw/ipath/ipath_layer.c Fri May 12 15:55:27 2006 -0700
+++ b/drivers/infiniband/hw/ipath/ipath_layer.c Fri May 12 15:55:27 2006 -0700
@@ -299,9 +299,8 @@ bail:
EXPORT_SYMBOL_GPL(ipath_layer_set_mtu);
-int ipath_set_sps_lid(struct ipath_devdata *dd, u32 arg, u8 lmc)
-{
- ipath_stats.sps_lid[dd->ipath_unit] = arg;
+int ipath_set_lid(struct ipath_devdata *dd, u32 arg, u8 lmc)
+{
dd->ipath_lid = arg;
dd->ipath_lmc = lmc;
@@ -315,7 +314,7 @@ int ipath_set_sps_lid(struct ipath_devda
return 0;
}
-EXPORT_SYMBOL_GPL(ipath_set_sps_lid);
+EXPORT_SYMBOL_GPL(ipath_set_lid);
int ipath_layer_set_guid(struct ipath_devdata *dd, __be64 guid)
{
@@ -616,9 +615,9 @@ int ipath_layer_open(struct ipath_devdat
if (*dd->ipath_statusp & IPATH_STATUS_IB_READY)
intval |= IPATH_LAYER_INT_IF_UP;
- if (ipath_stats.sps_lid[dd->ipath_unit])
+ if (dd->ipath_lid)
intval |= IPATH_LAYER_INT_LID;
- if (ipath_stats.sps_mlid[dd->ipath_unit])
+ if (dd->ipath_mlid)
intval |= IPATH_LAYER_INT_BCAST;
/*
* do this on open, in case low level is already up and
diff -r 9b9f24aab350 -r 3ab7a7b10bf2 drivers/infiniband/hw/ipath/ipath_layer.h
--- a/drivers/infiniband/hw/ipath/ipath_layer.h Fri May 12 15:55:27 2006 -0700
+++ b/drivers/infiniband/hw/ipath/ipath_layer.h Fri May 12 15:55:27 2006 -0700
@@ -126,7 +126,7 @@ u32 ipath_layer_get_cr_errpkey(struct ip
u32 ipath_layer_get_cr_errpkey(struct ipath_devdata *dd);
int ipath_layer_set_linkstate(struct ipath_devdata *dd, u8 state);
int ipath_layer_set_mtu(struct ipath_devdata *, u16);
-int ipath_set_sps_lid(struct ipath_devdata *, u32, u8);
+int ipath_set_lid(struct ipath_devdata *, u32, u8);
int ipath_layer_send_hdr(struct ipath_devdata *dd,
struct ether_header *hdr);
int ipath_verbs_send(struct ipath_devdata *dd, u32 hdrwords,
diff -r 9b9f24aab350 -r 3ab7a7b10bf2 drivers/infiniband/hw/ipath/ipath_mad.c
--- a/drivers/infiniband/hw/ipath/ipath_mad.c Fri May 12 15:55:27 2006 -0700
+++ b/drivers/infiniband/hw/ipath/ipath_mad.c Fri May 12 15:55:27 2006 -0700
@@ -341,7 +341,7 @@ static int recv_subn_set_portinfo(struct
/* Must be a valid unicast LID address. */
if (lid == 0 || lid >= IPS_MULTICAST_LID_BASE)
goto err;
- ipath_set_sps_lid(dev->dd, lid, pip->mkeyprot_resv_lmc & 7);
+ ipath_set_lid(dev->dd, lid, pip->mkeyprot_resv_lmc & 7);
event.event = IB_EVENT_LID_CHANGE;
ib_dispatch_event(&event);
}
diff -r 9b9f24aab350 -r 3ab7a7b10bf2 drivers/infiniband/hw/ipath/ipath_sysfs.c
--- a/drivers/infiniband/hw/ipath/ipath_sysfs.c Fri May 12 15:55:27 2006 -0700
+++ b/drivers/infiniband/hw/ipath/ipath_sysfs.c Fri May 12 15:55:27 2006 -0700
@@ -84,98 +84,6 @@ static ssize_t show_num_units(struct dev
ipath_count_units(NULL, NULL, NULL));
}
-#define DRIVER_STAT(name, attr) \
- static ssize_t show_stat_##name(struct device_driver *dev, \
- char *buf) \
- { \
- return scnprintf( \
- buf, PAGE_SIZE, "%llu\n", \
- (unsigned long long) ipath_stats.sps_ ##attr); \
- } \
- static DRIVER_ATTR(name, S_IRUGO, show_stat_##name, NULL)
-
-DRIVER_STAT(intrs, ints);
-DRIVER_STAT(err_intrs, errints);
-DRIVER_STAT(errs, errs);
-DRIVER_STAT(pkt_errs, pkterrs);
-DRIVER_STAT(crc_errs, crcerrs);
-DRIVER_STAT(hw_errs, hwerrs);
-DRIVER_STAT(ib_link, iblink);
-DRIVER_STAT(port0_pkts, port0pkts);
-DRIVER_STAT(ether_spkts, ether_spkts);
-DRIVER_STAT(ether_rpkts, ether_rpkts);
-DRIVER_STAT(sma_spkts, sma_spkts);
-DRIVER_STAT(sma_rpkts, sma_rpkts);
-DRIVER_STAT(hdrq_full, hdrqfull);
-DRIVER_STAT(etid_full, etidfull);
-DRIVER_STAT(no_piobufs, nopiobufs);
-DRIVER_STAT(ports, ports);
-DRIVER_STAT(pkey0, pkeys[0]);
-DRIVER_STAT(pkey1, pkeys[1]);
-DRIVER_STAT(pkey2, pkeys[2]);
-DRIVER_STAT(pkey3, pkeys[3]);
-/* XXX fix the following when dynamic table of devices used */
-DRIVER_STAT(lid0, lid[0]);
-DRIVER_STAT(lid1, lid[1]);
-DRIVER_STAT(lid2, lid[2]);
-DRIVER_STAT(lid3, lid[3]);
-
-DRIVER_STAT(nports, nports);
-DRIVER_STAT(null_intr, nullintr);
-DRIVER_STAT(max_pkts_call, maxpkts_call);
-DRIVER_STAT(avg_pkts_call, avgpkts_call);
-DRIVER_STAT(page_locks, pagelocks);
-DRIVER_STAT(page_unlocks, pageunlocks);
-DRIVER_STAT(krdrops, krdrops);
-/* XXX fix the following when dynamic table of devices used */
-DRIVER_STAT(mlid0, mlid[0]);
-DRIVER_STAT(mlid1, mlid[1]);
-DRIVER_STAT(mlid2, mlid[2]);
-DRIVER_STAT(mlid3, mlid[3]);
-
-static struct attribute *driver_stat_attributes[] = {
- &driver_attr_intrs.attr,
- &driver_attr_err_intrs.attr,
- &driver_attr_errs.attr,
- &driver_attr_pkt_errs.attr,
- &driver_attr_crc_errs.attr,
- &driver_attr_hw_errs.attr,
- &driver_attr_ib_link.attr,
- &driver_attr_port0_pkts.attr,
- &driver_attr_ether_spkts.attr,
- &driver_attr_ether_rpkts.attr,
- &driver_attr_sma_spkts.attr,
- &driver_attr_sma_rpkts.attr,
- &driver_attr_hdrq_full.attr,
- &driver_attr_etid_full.attr,
- &driver_attr_no_piobufs.attr,
- &driver_attr_ports.attr,
- &driver_attr_pkey0.attr,
- &driver_attr_pkey1.attr,
- &driver_attr_pkey2.attr,
- &driver_attr_pkey3.attr,
- &driver_attr_lid0.attr,
- &driver_attr_lid1.attr,
- &driver_attr_lid2.attr,
- &driver_attr_lid3.attr,
- &driver_attr_nports.attr,
- &driver_attr_null_intr.attr,
- &driver_attr_max_pkts_call.attr,
- &driver_attr_avg_pkts_call.attr,
- &driver_attr_page_locks.attr,
- &driver_attr_page_unlocks.attr,
- &driver_attr_krdrops.attr,
- &driver_attr_mlid0.attr,
- &driver_attr_mlid1.attr,
- &driver_attr_mlid2.attr,
- &driver_attr_mlid3.attr,
- NULL
-};
-
-static struct attribute_group driver_stat_attr_group = {
- .name = "stats",
- .attrs = driver_stat_attributes
-};
static ssize_t show_status(struct device *dev,
struct device_attribute *attr,
@@ -272,7 +180,7 @@ static ssize_t store_lid(struct device *
size_t count)
{
struct ipath_devdata *dd = dev_get_drvdata(dev);
- u16 lid;
+ u16 lid = 0; /* gcc thinks might be un-initialized */
int ret;
ret = ipath_parse_ushort(buf, &lid);
@@ -284,11 +192,11 @@ static ssize_t store_lid(struct device *
goto invalid;
}
- ipath_set_sps_lid(dd, lid, 0);
+ ipath_set_lid(dd, lid, 0);
goto bail;
invalid:
- ipath_dev_err(dd, "attempt to set invalid LID\n");
+ ipath_dev_err(dd, "attempt to set invalid LID 0x%x\n", lid);
bail:
return ret;
}
@@ -319,7 +227,6 @@ static ssize_t store_mlid(struct device
unit = dd->ipath_unit;
dd->ipath_mlid = mlid;
- ipath_stats.sps_mlid[unit] = mlid;
ipath_layer_intr(dd, IPATH_LAYER_INT_BCAST);
goto bail;
@@ -737,17 +644,12 @@ int ipath_driver_create_group(struct dev
if (ret)
goto bail;
- ret = sysfs_create_group(&drv->kobj, &driver_stat_attr_group);
- if (ret)
- sysfs_remove_group(&drv->kobj, &driver_attr_group);
-
bail:
return ret;
}
void ipath_driver_remove_group(struct device_driver *drv)
{
- sysfs_remove_group(&drv->kobj, &driver_stat_attr_group);
sysfs_remove_group(&drv->kobj, &driver_attr_group);
}
next prev parent reply other threads:[~2006-05-12 23:45 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-12 23:42 [PATCH 0 of 53] ipath driver updates for 2.6.17-rc4 Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 1 of 53] ipath - fix spinlock recursion bug Bryan O'Sullivan
2006-05-13 1:01 ` Joshua Hudson
2006-05-12 23:42 ` Bryan O'Sullivan [this message]
2006-05-12 23:42 ` [PATCH 3 of 53] ipath - report max MR and QP sizes based on table sizes Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 4 of 53] ipath - cap number of PDs that can be allocated Bryan O'Sullivan
2006-05-15 15:45 ` Roland Dreier
2006-05-15 21:06 ` Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 5 of 53] ipath - forbid creation of AHs with illegal ports Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 6 of 53] ipath - forbid creation of AH with DLID of 0 Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 7 of 53] ipath - cap maximum number of AHs Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 8 of 53] ipath - cap number of CQEs Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 9 of 53] ipath - cap number of CQs Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 10 of 53] ipath - require capabilities when creating a QP Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 11 of 53] ipath - don't modify QP if changes fail Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 12 of 53] ipath - reduce overhead of receive interrupts Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 13 of 53] ipath - limit number of SGEs and WRs per QP Bryan O'Sullivan
2006-05-12 23:42 ` [PATCH 14 of 53] ipath - forbid empty MRs Bryan O'Sullivan
2006-05-15 15:46 ` Roland Dreier
2006-05-15 21:17 ` Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 15 of 53] ipath - make some maximum values more sane Bryan O'Sullivan
2006-05-15 15:48 ` Roland Dreier
2006-05-16 22:44 ` [openib-general] " Arlin Davis
2006-05-12 23:43 ` [PATCH 16 of 53] ipath - fix reporting of driver version to userspace Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 17 of 53] ipath - fail properly if GID missing Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 18 of 53] ipath - make max mcast sizes configurable Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 19 of 53] ipath - replace uses of LIST_POISON Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 20 of 53] ipath - more sharing between RC and UC code Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 21 of 53] ipath - use phys_to_virt instead of bus_to_virt Bryan O'Sullivan
2006-05-15 15:50 ` Roland Dreier
2006-05-15 21:21 ` Bryan O'Sullivan
2006-05-15 21:28 ` Roland Dreier
2006-05-15 23:13 ` [openib-general] " Grant Grundler
2006-05-15 23:16 ` Roland Dreier
2006-05-15 23:30 ` Grant Grundler
2006-05-15 23:34 ` Roland Dreier
2006-05-16 20:05 ` Christoph Hellwig
2006-05-12 23:43 ` [PATCH 22 of 53] ipath - fix "many lost ticks" warning Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 23 of 53] ipath - [TRIVIAL] typo fixes Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 24 of 53] ipath - count dropped VL15 packets Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 25 of 53] ipath - remove some duplicated lines of code Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 26 of 53] ipath - treat PE800 rev1 and rev2 as similar Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 27 of 53] ipath - fix accounting of data packets with bad VLs Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 28 of 53] ipath - forbid setting of invalid MLID Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 29 of 53] ipath - remove redundant register read Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 30 of 53] ipath - count VL15 packet drops due to bad VL or lack of buffers Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 31 of 53] ipath - forbid sending of bad packet sizes Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 32 of 53] ipath - fix NULL dereference during cleanup Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 33 of 53] ipath - clean up some comments Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 34 of 53] ipath - fix occasional hangs in SDP Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 35 of 53] ipath - some interrelated stability and cleanliness fixes Bryan O'Sullivan
2006-05-15 15:53 ` Roland Dreier
2006-05-12 23:43 ` [PATCH 36 of 53] ipath - count local link integrity errors Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 37 of 53] ipath - name zero counter offsets consistently Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 38 of 53] ipath - SRQ compliance checks Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 39 of 53] ipath - count PE800 receive interrupts on user ports Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 40 of 53] ipath - remember to drop spinlock Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 41 of 53] ipath - disable interrupts while holding spinlock in RWQE get Bryan O'Sullivan
2006-05-15 15:55 ` Roland Dreier
2006-05-12 23:43 ` [PATCH 42 of 53] ipath - increment pointer properly when doing a diag read Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 43 of 53] ipath - fix memory leak when creating a QP fails Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 44 of 53] ipath - allow diags on any unit Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 45 of 53] ipath - fix memory leak when create of QP fails Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 46 of 53] ipath - enable GPIO interrupt on HT-460 Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 47 of 53] ipath - fix problem with lost interrupts on HT-400 Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 48 of 53] ipath - QP should ignore receive queue size if SRQ specified Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 49 of 53] ipath - NULL-terminate pci_device_id table Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 50 of 53] ipath - reduce maximum table sizes Bryan O'Sullivan
2006-05-15 16:00 ` Roland Dreier
2006-05-12 23:43 ` [PATCH 51 of 53] ipath - fix reporting of vendor ID and a few other trivial bits Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 52 of 53] ipath - register as IB device owner Bryan O'Sullivan
2006-05-12 23:43 ` [PATCH 53 of 53] ipath - add memory barrier when waiting for writes Bryan O'Sullivan
2006-05-15 15:57 ` Roland Dreier
2006-05-15 21:10 ` Bryan O'Sullivan
2006-05-15 23:01 ` ralphc
2006-05-15 23:08 ` Roland Dreier
2006-05-15 23:25 ` ralphc
2006-05-15 23:28 ` [openib-general] " Roland Dreier
2006-05-15 23:38 ` ralphc
2006-05-15 23:47 ` Roland Dreier
2006-05-15 15:02 ` [openib-general] [PATCH 0 of 53] ipath driver updates for 2.6.17-rc4 Roger Heflin
2006-05-15 15:44 ` Roland Dreier
2006-05-15 16:00 ` [openib-general] " Roger Heflin
2006-05-15 16:04 ` Roland Dreier
2006-05-15 20:11 ` Roger Heflin
2006-05-15 21:09 ` Bryan O'Sullivan
2006-05-15 21:07 ` Bryan O'Sullivan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3ab7a7b10bf2ec62ee0e.1147477367@eng-12.pathscale.com \
--to=bos@pathscale.com \
--cc=linux-kernel@vger.kernel.org \
--cc=openib-general@openib.org \
--cc=rdreier@cisco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox