[openib-general] Re: [PATCH] ipoib: count dropped multicast patckets

2006-01-10 Thread Michael S. Tsirkin
Quoting r. Michael S. Tsirkin [EMAIL PROTECTED]:
 Subject: Re: [PATCH] ipoib: count dropped multicast patckets
 
 Quoting r. Michael S. Tsirkin [EMAIL PROTECTED]:
  Subject: [PATCH] ipoib: count dropped multicast patckets
  
  Count dropped multicast packets.
  
  Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]
 
 And here's a patch that actually works :).

And here's a verson that really actually works :).

Count dropped multicast packets.

Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]

Index: openib/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
===
--- openib.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c  2006-01-08 
22:42:58.0 +0200
+++ openib/drivers/infiniband/ulp/ipoib/ipoib_multicast.c   2006-01-10 
10:17:41.0 +0200
@@ -122,8 +122,12 @@ static void ipoib_mcast_free(struct ipoi
if (mcast-ah)
ipoib_put_ah(mcast-ah);
 
-   while (!skb_queue_empty(mcast-pkt_queue))
+   while (!skb_queue_empty(mcast-pkt_queue)) {
+   spin_lock_irqsave(priv-tx_lock, flags);
+   ++priv-stats.tx_dropped;
+   spin_unlock_irqrestore(priv-tx_lock, flags);
dev_kfree_skb_any(skb_dequeue(mcast-pkt_queue));
+   }
 
kfree(mcast);
 }
@@ -299,6 +303,8 @@ ipoib_mcast_sendonly_join_complete(int s
 {
struct ipoib_mcast *mcast = mcast_ptr;
struct net_device *dev = mcast-dev;
+   struct ipoib_dev_priv *priv = netdev_priv(dev);
+   unsigned long flags;
 
if (!status)
ipoib_mcast_join_finish(mcast, mcmember);
@@ -309,8 +315,12 @@ ipoib_mcast_sendonly_join_complete(int s
IPOIB_GID_ARG(mcast-mcmember.mgid), 
status);
 
/* Flush out any queued packets */
-   while (!skb_queue_empty(mcast-pkt_queue))
+   while (!skb_queue_empty(mcast-pkt_queue)) {
+   spin_lock_irqsave(priv-tx_lock, flags);
+   ++priv-stats.tx_dropped;
+   spin_unlock_irqrestore(priv-tx_lock, flags);
dev_kfree_skb_any(skb_dequeue(mcast-pkt_queue));
+   }
 
/* Clear the busy flag so we try again */
clear_bit(IPOIB_MCAST_FLAG_BUSY, mcast-flags);
@@ -686,6 +696,7 @@ void ipoib_mcast_send(struct net_device 
if (!mcast) {
ipoib_warn(priv, unable to allocate memory for 
   multicast structure\n);
+   ++priv-stats.tx_dropped;
dev_kfree_skb_any(skb);
goto out;
}
@@ -699,8 +710,10 @@ void ipoib_mcast_send(struct net_device 
if (!mcast-ah) {
if (skb_queue_len(mcast-pkt_queue)  IPOIB_MAX_MCAST_QUEUE)
skb_queue_tail(mcast-pkt_queue, skb);
-   else
+   else {
+   ++priv-stats.tx_dropped;
dev_kfree_skb_any(skb);
+   }
 
if (mcast-query)
ipoib_dbg_mcast(priv, no address vector, 

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] mthca: eq doorbell coalescing + prevent even queque overrun

2006-01-10 Thread Michael S. Tsirkin
Quoting Or Gerlitz [EMAIL PROTECTED]:
  I am seeing EQ overruns in SDP stress tests: if CQ completion
  handler arms a CQ, this could generate more EQEs, so that
  EQ will never get empty and consumer index will never get updated.
 
 There's something re CQ arming which i'd like to bring up.
 
 I see that the mad, ipoib and srp CQ handlers work as follows: first - 
 arm the CQ, second - poll the CQ in a loop till it is emtpy. What is the 
 reasoning behind this approach?

Thats what IB spec says.

 does it means that completions occurring 
 while the handler is running cause interrupts which could be saved?

Handlers are running out of the interrupt context, so
an interrupt would have to be generated in the window while
CQ is being armed. Profiling I've done on ipoib shows that
this is quite unlikely.

 is there any problem with first empty-ing the CQ and only then arming it?
 
 The latter approach is taken by iser code. As far as i understand it can 
 not cause the ib consumer to miss interrupts, am i wrong?

On Mellanox hardware you wont miss interrupts in this case if you always poll
CQ and then arm it as a result of an interrupt.

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [PATCH] osm: Add TODO light sweep through LID

2006-01-10 Thread Eitan Zahavi
Hi Hal

One TODO we have found is that in order to guarantee traps can 
be delievered to the SM - it would have been nice if light sweep
will use LID routing and not direct routing. This way the LFTs could
be verified or else a heavy sweep conducted.

This patch only changes the TODO file so we do not forget...

(I also fixed a typo: issuesi - issues)

Eitan

Signed-off-by:  Eitan Zahavi [EMAIL PROTECTED]

Index: doc/todo
===
--- doc/todo(revision 4876)
+++ doc/todo(working copy)
@@ -1,4 +1,4 @@
-# OSM List of todo, open issuesi, and futures:
+# OSM List of todo, open issues, and futures:
 
 1  041228 - Handle local events (local lid change, port state change, etc.)
 2  041228 - Port fail over to next port upon request
@@ -12,6 +12,9 @@
 7   051207 - Add dumping of SA records to supported SA records
 which do not currently do this (SMInfo, VLArb, SLVL,
 PKey, LFT)
+8   060109 - Use LID routing for light sweep to guarantee trap 
+ delivery path to the SM.
+  
 
 
 Futures

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] Re: [PATCH] osm: Add TODO light sweep through LID

2006-01-10 Thread Hal Rosenstock
On Tue, 2006-01-10 at 06:08, Eitan Zahavi wrote:
 Hi Hal
 
 One TODO we have found is that in order to guarantee traps can 
 be delievered to the SM - it would have been nice if light sweep
 will use LID routing and not direct routing. This way the LFTs could
 be verified or else a heavy sweep conducted.
 
 This patch only changes the TODO file so we do not forget...

Thanks. Applied.

 (I also fixed a typo: issuesi - issues)
 
 Eitan


___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] bad free() in libibumad

2006-01-10 Thread Hal Rosenstock
On Mon, 2006-01-09 at 18:40, Hal Rosenstock wrote:
 Hi Ralph,
 
 On Mon, 2006-01-09 at 16:46, Ralph Campbell wrote:
  Here is a patch to fix the following backtrace:
  
  (gdb) bt
  #0  0x00355642f280 in raise () from /lib64/libc.so.6
  #1  0x003556430750 in abort () from /lib64/libc.so.6
  #2  0x003556464a7f in __libc_message () from /lib64/libc.so.6
  #3  0x00355646a71e in _int_free () from /lib64/libc.so.6
  #4  0x00355646ac4e in free () from /lib64/libc.so.6
  #5  0x003d98f01568 in get_port (ca_name=Variable ca_name is not
  available.) at src/umad.c:191
  #6  0x003d98f025f5 in umad_get_port (
  ca_name=0x7f9d3e70 /sys/class/infiniband/mthca0/ports,
  portnum=1,
  port=0x7f9d44f0) at src/umad.c:617
  #7  0x003d9910249a in osm_vendor_get_all_port_attr (p_vend=0x658220,
  p_attr_array=0x7f9d4580, p_num_ports=0x7f9d6a08)
  at osm_vendor_ibumad.c:624
  #8  0x004044e9 in get_port_guid (p_osm=Variable p_osm is not
  available.
  ) at main.c:274
  
  
  Signed-off-by: Ralph Campbell [EMAIL PROTECTED]
  
  Index: libibumad/src/umad.c
  ===
  --- libibumad/src/umad.c(revision 4808)
  +++ libibumad/src/umad.c(working copy)
  @@ -188,7 +188,6 @@
  return 0;
   
   clean:
  -   free(port);
  return -EIO;
   }
 
 I think there is more to it than this but thanks for pointing this out.

Thanks. I applied your better version of this patch.

-- Hal 

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] mthca: eq doorbell coalescing + prevent even queque overrun

2006-01-10 Thread Or Gerlitz

Michael  I am seeing EQ overruns in SDP stress tests: if CQ completion
Michael  handler arms a CQ, this could generate more EQEs,

Or  I see that the mad, ipoib and srp CQ handlers work as follows: 
first -

Or  arm the CQ, second - poll the CQ in a loop till it is emtpy.
Or  does it means that completions occurring while the handler is 
running cause

Or  interrupts which could be saved?

Michael  Handlers are running out of the interrupt context, so
Michael  an interrupt would have to be generated in the window while
Michael  CQ is being armed. Profiling I've done on ipoib shows that
Michael  this is quite unlikely.

Sorry, i dont follow. If you arm the CQ when there is one WC in it and 
then start polling, and during your polling a second WC is generated 
by the HCA, wouldn't an interrupt related to the 2nd completion be 
generated - why the case you are mentioning is the arming window?



___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] mthca: eq doorbell coalescing + prevent even queque overrun

2006-01-10 Thread Michael S. Tsirkin
Quoting Or Gerlitz [EMAIL PROTECTED]:
 Sorry, i dont follow. If you arm the CQ when there is one WC in it and 
 then start polling, and during your polling a second WC is generated 
 by the HCA, wouldn't an interrupt related to the 2nd completion be 
 generated - why the case you are mentioning is the arming window?

I'm polling in the interrupt handler, so interrupts from the same IRQ are
disabled. No? What am I missing?

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] mthca: eq doorbell coalescing + prevent even queque overrun

2006-01-10 Thread Or Gerlitz

Michael S. Tsirkin wrote:
Sorry, i dont follow. If you arm the CQ when there is one WC in it and 
then start polling, and during your polling a second WC is generated 
by the HCA, wouldn't an interrupt related to the 2nd completion be 
generated - why the case you are mentioning is the arming window?



I'm polling in the interrupt handler, so interrupts from the same IRQ are
disabled. No? What am I missing?


OK, i might be somehow newbee around this (working in hard irq context) 
land. Does disabling the HCA IRQ means no interrupt would be generated 
later when the handler is done? i was think it would be just deffered.


iSER hard irq CQ handler just does a context jump to soft irq handler 
(tasklet) so the rule you mention does not apply to it.



___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] mthca: eq doorbell coalescing + prevent even queque overrun

2006-01-10 Thread Michael S. Tsirkin
Quoting Or Gerlitz [EMAIL PROTECTED]:
 Subject: Re: [openib-general] [PATCH] mthca: eq doorbell coalescing + prevent 
 even queque overrun
 
 Michael S. Tsirkin wrote:
  Sorry, i dont follow. If you arm the CQ when there is one WC in it and 
  then start polling, and during your polling a second WC is generated 
  by the HCA, wouldn't an interrupt related to the 2nd completion be 
  generated - why the case you are mentioning is the arming window?
 
  I'm polling in the interrupt handler, so interrupts from the same IRQ are
  disabled. No? What am I missing?
 
 OK, i might be somehow newbee around this (working in hard irq context) 
 land. Does disabling the HCA IRQ means no interrupt would be generated 
 later when the handler is done? i was think it would be just deffered.

AFAIK, you get another interrupt only if hardware continues asserting
the interrupt.

 iSER hard irq CQ handler just does a context jump to soft irq handler 
 (tasklet) so the rule you mention does not apply to it.
 

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [PATCH applied] perftest: fix device lookup by name

2006-01-10 Thread Michael S. Tsirkin
The following is already applied on trunk.

---

Fix device lookup by name.

Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]

Index: openib/src/userspace/perftest/rdma_bw.c
===
--- openib.orig/src/userspace/perftest/rdma_bw.c2006-01-10 
15:02:10.0 +0200
+++ openib/src/userspace/perftest/rdma_bw.c 2006-01-10 15:15:49.0 
+0200
@@ -594,7 +594,7 @@ int main(int argc, char *argv[])
return 1;
}
} else {
-   for (ib_dev = *dev_list; ib_dev; ++dev_list)
+   for (; (ib_dev = *dev_list); ++dev_list)
if (!strcmp(ibv_get_device_name(ib_dev), ib_devname))
break;
if (!ib_dev) {
Index: openib/src/userspace/perftest/read_bw.c
===
--- openib.orig/src/userspace/perftest/read_bw.c2006-01-10 
15:02:10.0 +0200
+++ openib/src/userspace/perftest/read_bw.c 2006-01-10 15:17:02.0 
+0200
@@ -688,7 +688,7 @@ int main(int argc, char *argv[])
return 1;
}
} else {
-   for (ib_dev = *dev_list; ib_dev; ++dev_list)
+   for (; (ib_dev = *dev_list); ++dev_list)
if (!strcmp(ibv_get_device_name(ib_dev), ib_devname))
break;
if (!ib_dev) {
Index: openib/src/userspace/perftest/read_lat.c
===
--- openib.orig/src/userspace/perftest/read_lat.c   2006-01-10 
15:02:10.0 +0200
+++ openib/src/userspace/perftest/read_lat.c2006-01-10 15:16:16.0 
+0200
@@ -124,7 +124,7 @@ static struct ibv_device *pp_find_dev(co
if (!ib_dev)
fprintf(stderr, No IB devices found\n);
} else {
-   for (ib_dev = *dev_list; ib_dev; ++dev_list)
+   for (; (ib_dev = *dev_list); ++dev_list)
if (!strcmp(ibv_get_device_name(ib_dev), ib_devname))
break;
if (!ib_dev)
Index: openib/src/userspace/perftest/send_bw.c
===
--- openib.orig/src/userspace/perftest/send_bw.c2006-01-10 
15:02:10.0 +0200
+++ openib/src/userspace/perftest/send_bw.c 2006-01-10 15:16:21.0 
+0200
@@ -965,7 +965,7 @@ int main(int argc, char *argv[])
return 1;
}
} else {
-   for (ib_dev = *dev_list; ib_dev; ++dev_list)
+   for (; (ib_dev = *dev_list); ++dev_list)
if (!strcmp(ibv_get_device_name(ib_dev), ib_devname))
break;
if (!ib_dev) {
Index: openib/src/userspace/perftest/send_lat.c
===
--- openib.orig/src/userspace/perftest/send_lat.c   2006-01-10 
15:02:10.0 +0200
+++ openib/src/userspace/perftest/send_lat.c2006-01-10 15:16:30.0 
+0200
@@ -132,7 +132,7 @@ static struct ibv_device *pp_find_dev(co
if (!ib_dev)
fprintf(stderr, No IB devices found\n);
} else {
-   for (ib_dev = *dev_list; ib_dev; ++dev_list)
+   for (; (ib_dev = *dev_list); ++dev_list)
if (!strcmp(ibv_get_device_name(ib_dev), ib_devname))
break;
if (!ib_dev)
Index: openib/src/userspace/perftest/write_bw.c
===
--- openib.orig/src/userspace/perftest/write_bw.c   2006-01-10 
15:02:10.0 +0200
+++ openib/src/userspace/perftest/write_bw.c2006-01-10 15:17:02.0 
+0200
@@ -740,7 +740,7 @@ int main(int argc, char *argv[])
return 1;
}
} else {
-   for (ib_dev = *dev_list; ib_dev; ++dev_list)
+   for (; (ib_dev = *dev_list); ++dev_list)
if (!strcmp(ibv_get_device_name(ib_dev), ib_devname))
break;
if (!ib_dev) {
Index: openib/src/userspace/perftest/write_lat.c
===
--- openib.orig/src/userspace/perftest/write_lat.c  2006-01-10 
15:02:10.0 +0200
+++ openib/src/userspace/perftest/write_lat.c   2006-01-10 15:17:02.0 
+0200
@@ -122,7 +122,7 @@ static struct ibv_device *pp_find_dev(co
if (!ib_dev)
fprintf(stderr, No IB devices found\n);
} else {
-   for (ib_dev = *dev_list; ib_dev; ++dev_list)
+   for (; (ib_dev = *dev_list); ++dev_list)
if (!strcmp(ibv_get_device_name(ib_dev), ib_devname))

[openib-general] Re: We are ready with a Gen2 version of MVAPICH2

2006-01-10 Thread Dhabaleswar Panda
Hi Woody, 

 DK wrote,
 We plan to upload a stripped down version of this new release to the
 OpenIB SVN at the following location:
 
 https://openib.org/svn/gen2/trunk/src/userspace/mpi/
 
 Sounds good to me.

Thanks a lot for your feedback. We are working on putting the new
version at the above location.

Thanks, 

DK

 woody
 
 

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] Error when loading ib_umad

2006-01-10 Thread Ian Jiang
I am using the linux kernel 2.6.14 and the latest IB driver in OpenIB.
Is this caused by SMP?

Any suggestion is appreciated!
Here are the error details:


dell-162:~ # lsmod | grep ib
ib_mthca 120096 0
ib_mad 38820 1 ib_mthca
ib_core 51200 2 ib_mthca,ib_mad
libata 54032 1 ata_piix

dell-162:~ # modprobe ib_umad
Killed
dell-162:~ #
Message from [EMAIL PROTECTED] at Wed Jan 11 06:08:42 2006 ...
dell-162 kernel: Oops:  [1] SMP

Message from [EMAIL PROTECTED] at Wed Jan 11 06:08:42 2006 ...
dell-162 kernel: CR2: 0e70010c
dell-162:~# tail /var/log/messages

Jan 11 05:25:13 dell-162 kernel: Unable to handle kernel paging request at 0e70010c RIP:
Jan 11 05:25:13 dell-162 kernel: 80215e41{kref_get+1}
Jan 11 05:25:13 dell-162 kernel: PGD 1316a067 PUD 1f81e067 PMD 0
Jan 11 05:25:13 dell-162 kernel: Oops:  [1] SMP
Jan 11 05:25:13 dell-162 kernel: CPU 1
Jan 11 05:25:13 dell-162 kernel: Modules linked in: ib_umad evdev
joydev sg sr_mod floppy thermal processor fan button battery ac
ib_mthca ib_mad ib_core ehci_hcd uhci_hcd ipv6 i2c_i801 i2c_core
hw_random e1000 usbcore dm_mod ext3 jbd ata_piix libata
Jan 11 05:25:13 dell-162 kernel: Pid: 12113, comm: modprobe Not tainted 2.6.14 #1
Jan 11 05:25:13 dell-162 kernel: RIP: 0010:[80215e41] 80215e41{kref_get+1}
Jan 11 05:25:13 dell-162 kernel: RSP: :81001ad53b68 EFLAGS: 00010206
Jan 11 05:25:13 dell-162 kernel: RAX: 810010503aa0 RBX: 0e7000f0 RCX: 
Jan 11 05:25:13 dell-162 kernel: RDX: 810010503aa0 RSI: 8039d0db RDI: 0e70010c
Jan 11 05:25:13 dell-162 kernel: RBP: 8039d0d4 R08: 8100017f1d50 R09: 
Jan 11 05:25:13 dell-162 kernel: R10: 810013f69300 R11: 0048 R12: 81000bcbc318
Jan 11 05:25:13 dell-162 kernel: R13: fff4 R14: 810013f69300 R15: 0e7000f0
Jan 11 05:25:13 dell-162 kernel: FS: 2ade36e0() GS:804eb880() knlGS:
Jan 11 05:25:13 dell-162 kernel: CS: 0010 DS:  ES:  CR0: 8005003b
Jan 11 05:25:13 dell-162 kernel: CR2: 0e70010c CR3: 1c6e6000 CR4: 06e0
Jan 11 05:25:13 dell-162 kernel: Process modprobe (pid: 12113, threadinfo 81001ad52000, task 81001aaf5040)
Jan 11 05:25:13 dell-162 kernel: Stack: 0e7000f0 80214f62 810010503ac0 801c5a11
Jan 11 05:25:13 dell-162
kernel: 81001c49c190
81001c49c180 81001c49c180 8100193f1200
Jan 11 05:25:13 dell-162 kernel:  8100193f1200
Jan 11 05:25:13 dell-162 kernel: Call
Trace:80214f62{kobject_get+18}
801c5a11{sysfs_create_link+193}
Jan 11 05:25:13 dell-162
kernel:
8027e524{class_device_add+436}
8027e754{class_device_create+276}
Jan 11 05:25:13 dell-162
kernel:
80199ba8{d_instantiate+136}
8019a8f1{dput+33}
Jan 11 05:25:13 dell-162
kernel:
801c5155{create_dir+405}
8027f396{kobj_map+102}
Jan 11 05:25:13 dell-162
kernel:
8018a590{exact_lock+0}
80189fe0{exact_match+0}
Jan 11 05:25:13 dell-162
kernel:
88189a20{:ib_umad:ib_umad_add_one+432}
881095cc{:ib_core:ib_register_client+124}
Jan 11 05:25:13 dell-162
kernel:
880f9090{:ib_umad:ib_umad_init+144}
80152ae9{sys_init_module+6553}
Jan 11 05:25:13 dell-162
kernel:
880f9000{:ib_umad:ib_umad_init+0}
80217751{__up_write+49}
Jan 11 05:25:13 dell-162 kernel: 8010dc5e{system_call+126}
Jan 11 05:25:13 dell-162 kernel:
Jan 11 05:25:13 dell-162 kernel: Code: 8b 07 48 89 fb 85 c0 75 26 b9 20 00 00 00 48 c7 c2 bb c9 39
Jan 11 05:25:13 dell-162 kernel: RIP 80215e41{kref_get+1} RSP 81001ad53b68
Jan 11 05:25:13 dell-162 kernel: CR2: 0e70010c
Jan 11 05:34:19 dell-162 sshd[12947]: Accepted keyboard-interactive/pam for root from :::192.168.1.61 port 3821 ssh2

-- Ian Jiang[EMAIL PROTECTED]Laboratory of Spatial Information Technology
Division of System ArchitectureInstitute of Computing Technology
Chinese Academy of Sciences

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

[openib-general] [PATCH] osm: support for trivial PKey manager

2006-01-10 Thread Ofer Gigi
Hi Hal,

Removing redundant error in the log.
If the physical port is not valid, nothing is needed to be the done here.

Thanks

Ofer G.

Signed-off-by:  Ofer Gigi [EMAIL PROTECTED]
Index: osm_pkey_mgr.c
===
--- osm_pkey_mgr.c  (revision 4867)
+++ osm_pkey_mgr.c  (working copy)
@@ -171,7 +171,7 @@ __osm_pkey_mgr_process_physical_port(
   {
  osm_log( p_mgr-p_log, OSM_LOG_ERROR,
   __osm_pkey_mgr_process_physical_port: ERR 0501: 
-  No empty block entry was found to insert IB_DEFAULT_PKEY 
for node 
+  No empty entry was found to insert IB_DEFAULT_PKEY for node 

   0x%016 PRIx64  and port %u\n,
   cl_ntoh64( osm_node_get_node_guid( p_node ) ), port_num );
   }
@@ -275,15 +275,6 @@ osm_pkey_mgr_process(
result = OSM_SIGNAL_DONE_PENDING;
 }
  }
- else
- {
-osm_log( p_mgr-p_log, OSM_LOG_ERROR,
- osm_pkey_mgr_process: ERR 0502: 
- Invalid physical port for node 0x%016 PRIx64
-  port %u\n,
- cl_ntoh64( osm_node_get_node_guid( p_node ) ),
- port_num );
- }
   }
}
 


___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] Error when loading ib_umad

2006-01-10 Thread Roland Dreier
Are you ignoring compile warnings about class_device_create()?  Since
2.6.15 is out, the OpenIB svn does not support 2.6.14 any more, so you
may run into problems like this.

You will probably need to restore the compatibility hack removed in
r4784 by adding something like

#include linux/version.h

#if LINUX_VERSION_CODE  KERNEL_VERSION(2,6,15)
#define class_device_create(cls, parent, devt, device, fmt, arg...) \
   class_device_create(cls, devt, device, fmt, ## arg)
#endif

to rdma/ib_verbs.h.

 - R.
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] Re: merge rdma_cm and ib_addr upstream

2006-01-10 Thread Roland Dreier
Or Just to make sure, would the __be64 node_guid field of struct
Or ib_device have the exact semantics of the __be64 node_guid
Or field of struct ib_device_attr ? iser uses it from the attr
Or struct and we can sure move to use it from the device struct.

Yes, that's right.  Something like the patch below (compile tested
only) is what is required.

 - R.

---

Move iSER from getting node_guid via ib_query_device() to using the
node_guid field in struct ib_device, since ib_query_device() will stop
returning the node_guid soon.

Signed-off-by: Roland Dreier [EMAIL PROTECTED]

--- infiniband/ulp/iser/iser_verbs.c(revision 4866)
+++ infiniband/ulp/iser/iser_verbs.c(working copy)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2005 Cisco Systems.  All rights reserved.
+ * Copyright (c) 2005, 2006 Cisco Systems.  All rights reserved.
  *
  * This software is available to you under a choice of one of two
  * licenses.  You may choose to be licensed under the terms of the GNU
@@ -73,8 +73,6 @@ int iser_create_adaptor_ib_res(struct is
struct ib_device  *device = p_iser_adaptor-device;
struct ib_fmr_pool_param  params;
 
-   ib_query_device(device, (p_iser_adaptor-device_attr));
-
strcpy(p_iser_adaptor-name, device-name);
iser_dbg(setting device name %s as adatptor name\n, device-name);
 
@@ -234,23 +232,16 @@ int iser_free_qp_and_id(struct iser_conn
 
 struct iser_adaptor *iser_adaptor_find_by_device(struct rdma_cm_id *cma_id)
 {
-   struct ib_device_attr *p_device_attr = NULL;
struct list_head  *p_list;
struct iser_adaptor   *p_adaptor = NULL;
 
-   p_device_attr = kmalloc(sizeof *p_device_attr, GFP_KERNEL);
-   if(p_device_attr == NULL)
-   goto end;
-
-   ib_query_device(cma_id-device, p_device_attr);
-
spin_lock(ig.adaptor_list_lock);
 
p_list = ig.adaptor_list.next;
while (p_list != ig.adaptor_list) {
p_adaptor = list_entry(p_list, struct iser_adaptor, ig_list);
/* find if there's a match using the device GUID */
-   if (p_adaptor-device_attr.node_guid == 
p_device_attr-node_guid)
+   if (p_adaptor-device-node_guid == cma_id-device-node_guid)
break;
}
 
@@ -268,7 +259,6 @@ struct iser_adaptor *iser_adaptor_find_b
}
 end:
spin_unlock(ig.adaptor_list_lock);
-   kfree(p_device_attr);
return p_adaptor;
 }
 
--- infiniband/ulp/iser/iser.h  (revision 4866)
+++ infiniband/ulp/iser/iser.h  (working copy)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2005 Cisco Systems.  All rights reserved.
+ * Copyright (c) 2005, 2006 Cisco Systems.  All rights reserved.
  *
  * This software is available to you under a choice of one of two
  * licenses.  You may choose to be licensed under the terms of the GNU
@@ -105,7 +105,6 @@ struct iser_adaptor {
struct list_head   ig_list; /* entry in ig adaptors list */
 
struct ib_device   *device;
-   struct ib_device_attr  device_attr;
 
struct ib_pd   *pd;
struct ib_cq   *cq;
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] Re: [PATCH] osm: support for trivial PKey manager

2006-01-10 Thread Hal Rosenstock
On Tue, 2006-01-10 at 09:51, Ofer Gigi wrote:
 Hi Hal,
 
 Removing redundant error in the log.
 If the physical port is not valid, nothing is needed to be the done here.

Thanks. Applied.

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] RE: [RFC][PATCH] OpenIB uDAPL extension proposal - sample immed data and atomic api's

2006-01-10 Thread Arlin Davis

Kanevsky, Arkady wrote:


comments inline.



As mentioned on the con-call, there are two separate items to 
consider while looking at the proposal. The first is the 
ability to extend DAT for specific provider value-add and the 
second is to validate the need for general atomic and 
immediate data functionality in the basic set of API's for 
all providers. I included atomics and immediate data as 
examples since it is specific to one provider (IB), it 
includes operations that require new ops, events, and event 
data types, and it also provides a working model to validate 
the extension model from request to completion events. I 
would like to concentrate on getting consensus on the 
extension proposal first if possible. Just try to think of 
the actual operations as some opaque dat_ext_foobar_op().
   



The thing that bothers me is that we already have several APIs
that are transport specific. While some are possible to implement
on other transports the others, like Socket CM, can not.
So I view both of your specific extensions as transport specific
amd hence prefer to add them as normal APIs not extensions.
 


That would work for me.


The secondary goal is that Provider can add extensions without requiring
to change to DAT. These fall into 3 categories.
1. New memory types including privilages and protection attributes.
We can add extension entry to these structures. We need to check
if this is sufficient. Think of shared memory for example.
I am assuming no changes to PZ.
2. New DTOs. The main issue is not DTOs but their completions and
async errors. This is why Immediate data is better handled by
incorporating into
DAT spec while atomic can be handled by extensions. That is completion
will return
extention and Consumer will do the secondary switch on the extension
type.
Extension should not impact backwards compatibility.
We had not looked at errors. But assuming a simple model that async
errors
break connection and we can return extension error with extensions
defining
new reason. Again details need to be polished.
3. new connection types or CM models... New connections seems to have
little impact
on existing API assuming that EP type can be extended. The new
connection can even
restrict which DTO they can handle. CM model is more problematic.
 


Nice summary. Yes, we need be thorough when flushing out all the
requirements for extensions in general. I am not sure how much I can
share at this point regarding any other extensions but if we think in
general terms we should cover all the necessary requirements. Do you
want to update the proposal based on your statements above? I would be
happy to work it into a real patch for feasibility and to provide
feedback based on future extentability.


Arlin, it would be nice to consider some of your other extensions that
are not
transport specific to see how it will fit before we make the final
decision.
This should give us idea how extensible DAT extension model is.


 



In general, extension route was intended for RNIC|HCA providers to 
expose HW capabilities beyond IBTA, iWARP and VIA standards. The 
standard RDMA functionality is best handle via spec addition.
DAT 2.0 does it for FMR, remote and local memory 
 

invalidation as well 
   


as others.
 

True, but the extension route is not fully defined, 
documented, nor implemented. This is what I would like to 
work on getting completed in time for 2.0 if possible. 

BTW: The existing implementation actually uses 
dapl_provider-extension to store the hca_ptr but the 
specification states that it is reserved for the providers 
private use (8.2.1 in DAPL1.2 spec). This is why I had to 
defined another extension_func in the patch.


   



I had posted a complete list of changes/addition to DAT 2.0 about a 
month ago.
But we had not discussed yet version change from 1.3 to 2.0 nor how 
much backwards compatibility spec will provide.


2. What is IMMED_EVENT? is it just immediate data without 
 


any payload one?
   

I suggest chnaging the name so it will not use EVENT. 
 

Just call it 
   


NO_PAYLOAD.
Do you want to support 2 different way to delivery immediate data?
One in event and one in data payload?
Why? I would think that just an event way will do.
 

This was modeled after the immediate data discussions on the 
DAT reflector based on iWARP requirements.


http://groups.yahoo.com/group/dat-discussions/message/3285

   



I recall it now.
I want to consider a few usage cases.
1. Existing app running on the Provider with extensions.
Want to make sure we do not require any App changes beyond recompile
due to extensions.
 


agree


2. App wants to be modified to use Immediate data. How big impact it
has on existing code. For example buffer size allocation and completion
handling
 


It really depends on transport capabilities. Our current thinking has
two delivery mechanisms for the two transports (event and payload) which
is not optimal. If we can come to a consensus on 

[openib-general] [PATCH] opensm fails to find HCA if port is down.

2006-01-10 Thread Ralph Campbell
If opensm is started with no arguments, the default algorithm
for finding a port to bind to will skip ports which are present
but the link is DOWN.  If there is only one port in the system,
no port is selected and opensm tries the default HCA name mthca0
which, if not present, confuses opensm and it exits.

The following patch changes the port selection so that the first
active port is selected, and if none, the first non-disabled port.

Signed-off-by: Ralph Campbell [EMAIL PROTECTED]

Index: umad.c
===
--- umad.c  (revision 4900)
+++ umad.c  (working copy)
@@ -207,9 +207,9 @@
 }
 
 /*
- * if *port  0 checks ca[port] state. Otherwise set *port to
+ * if *port  0, check ca[port] state. Otherwise set *port to
  * the first port that is active, and if such is not found, to
- * the first port that is (physically) up. Otherwise return -1;
+ * the first port that is not disabled.  Otherwise return -1;
  */
 static int
 resolve_ca_port(char *ca_name, int *port)
@@ -228,14 +228,14 @@
return 1;
}
 
-   if (*port  0) {/* user wants user gets */
+   if (*port  0) {/* check only the port the user wants */
if (*port  ca.numports)
return -1;
if (!ca.ports[*port])
return -1;
if (ca.ports[*port]-state == 4)
return 1;
-   if (ca.ports[*port]-phys_state == 5)
+   if (ca.ports[*port]-phys_state != 3)
return 0;
return -1;
}
@@ -244,7 +244,7 @@
DEBUG(checking port %d, i);
if (!ca.ports[i])
continue;
-   if (up  0  ca.ports[i]-phys_state == 5)
+   if (up  0  ca.ports[i]-phys_state != 3)
up = *port = i;
if (ca.ports[i]-state == 4) {
active = *port = i;
@@ -278,10 +278,11 @@
return ca_name;
}

-   /* find first existing HCA with Active port */
+   /* Get the list of CA names. */
if ((n = umad_get_cas_names((void *)names, UMAD_CA_NAME_LEN))  0)
return 0;
 
+   /* Find the first existing CA with an active port. */
for (caidx = 0; caidx  n; caidx++) {
TRACE(checking ca '%s', names[caidx]);


-- 
Ralph Campbell [EMAIL PROTECTED]

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [PATCH] ipoib: flush workqueue after clearing ADMIN_UP

2006-01-10 Thread Michael S. Tsirkin
Flush workqueue after clearing IPOIB_FLAG_ADMIN_UP, to prevent
a job running from the workqueue from bringing the device back up.

Signed-off-by: Jack Morgenstein [EMAIL PROTECTED]
Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]

Index: gen2/drivers/infiniband/ulp/ipoib/ipoib_main.c
===
--- gen2.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c 2006-01-10 
10:33:32.101242000 +0200
+++ gen2/drivers/infiniband/ulp/ipoib/ipoib_main.c  2006-01-10 
10:43:02.254713000 +0200
@@ -134,6 +134,8 @@ static int ipoib_stop(struct net_device 
 
netif_stop_queue(dev);
 
+   flush_workqueue(ipoib_workqueue);
+
ipoib_ib_dev_down(dev, 1);
ipoib_ib_dev_stop(dev);
 

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [PATCH] ipoib: mcast-ah race

2006-01-10 Thread Michael S. Tsirkin
ipoib_mcast_send tests mcast-ah twice. If this value
is changed between these two points, we leak an skb.

Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]

Index: openib/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
===
--- openib/drivers/infiniband/ulp/ipoib/ipoib_multicast.c   (revision 4872)
+++ openib/drivers/infiniband/ulp/ipoib/ipoib_multicast.c   (working copy)
@@ -206,6 +206,7 @@ static int ipoib_mcast_join_finish(struc
 {
struct net_device *dev = mcast-dev;
struct ipoib_dev_priv *priv = netdev_priv(dev);
+   unsigned long flags;
int ret;
 
mcast-mcmember = *mcmember;
@@ -262,6 +263,7 @@ static int ipoib_mcast_join_finish(struc
av.static_rate, priv-local_rate,
ib_sa_rate_enum_to_int(mcast-mcmember.rate));
 
+   spin_lock_irqsave(priv-lock, flags);
mcast-ah = ipoib_create_ah(dev, priv-pd, av);
if (!mcast-ah) {
ipoib_warn(priv, ib_address_create failed\n);
@@ -273,6 +275,7 @@ static int ipoib_mcast_join_finish(struc
be16_to_cpu(mcast-mcmember.mlid),
mcast-mcmember.sl);
}
+   spin_unlock_irqrestore(priv-lock, flags);
}
 
/* actually send any queued packets */

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [PATCH] ipoib: tx ring overrun

2006-01-10 Thread Michael S. Tsirkin
Dont try to post more send work requests if the TX ring is full.
Setting netif_stop_queue is insufficient: linux can still land
a tx packet on us.

Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]

Index: openib/drivers/infiniband/ulp/ipoib/ipoib_ib.c
===
--- openib.orig/drivers/infiniband/ulp/ipoib/ipoib_ib.c 2006-01-10 
15:38:36.0 +0200
+++ openib/drivers/infiniband/ulp/ipoib/ipoib_ib.c  2006-01-10 
18:49:33.0 +0200
@@ -344,6 +344,13 @@ void ipoib_send(struct net_device *dev, 
 * means we have to make sure everything is properly recorded and
 * our state is consistent before we call post_send().
 */
+   if (unlikely(priv-tx_head - priv-tx_tail == IPOIB_TX_RING_SIZE)) {
+   ipoib_dbg(priv, TX ring full, dropping packet\n);
+   ++priv-stats.tx_errors;
+   dev_kfree_skb_any(skb);
+   return;
+   }
+
tx_req = priv-tx_ring[priv-tx_head  (IPOIB_TX_RING_SIZE - 1)];
tx_req-skb = skb;
addr = dma_map_single(priv-ca-dma_device, skb-data, skb-len,

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] SA cache design

2006-01-10 Thread Sean Hefty

Sean Hefty wrote:
To keep the design as flexible as possible, my plan is to implement the 
cache in userspace.  The interface to the cache would be via MADs.  
Clients would send their queries to the sa_cache instead of the SA 
itself.  The format of the MADs would be essentially identical to those 
used to query the SA itself.  Response MADs would contain any requested 
information.  If the cache could not satisfy a request, the sa_cache 
would query the SA, update its cache, then return a reply.


What I think I really want is a distributed relational database management 
system with an SQL interface and triggers that maintains the SA data...  (select 
* from path_rec where sgid=x and dgid=y and pkey=z)


But without making any assumptions about the SA, a local cache could still use 
an RDMS to store and retrieve the data records.  Would requiring an RDMS on each 
system be acceptable?  If not, then writing a small, dumb pseudo-database as 
part of the sa_cache could provide a lot of flexibility.


- Sean
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] ipoib: tx ring overrun

2006-01-10 Thread Grant Grundler
On Tue, Jan 10, 2006 at 08:55:15PM +0200, Michael S. Tsirkin wrote:
 Dont try to post more send work requests if the TX ring is full.
 Setting netif_stop_queue is insufficient: linux can still land
 a tx packet on us.
 
 Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]
 
 Index: openib/drivers/infiniband/ulp/ipoib/ipoib_ib.c
 ===
 --- openib.orig/drivers/infiniband/ulp/ipoib/ipoib_ib.c   2006-01-10 
 15:38:36.0 +0200
 +++ openib/drivers/infiniband/ulp/ipoib/ipoib_ib.c2006-01-10 
 18:49:33.0 +0200
 @@ -344,6 +344,13 @@ void ipoib_send(struct net_device *dev, 
* means we have to make sure everything is properly recorded and
* our state is consistent before we call post_send().
*/
 + if (unlikely(priv-tx_head - priv-tx_tail == IPOIB_TX_RING_SIZE)) {
 + ipoib_dbg(priv, TX ring full, dropping packet\n);
 + ++priv-stats.tx_errors;

Could this be tx_dropped?

I'm looking at ifconfig output and assuming tx_dropped is used:

[EMAIL PROTECTED]:~$ /sbin/ifconfig ib0
ib0   Link encap:UNSPEC  HWaddr 
00-00-04-04-FE-80-00-00-00-00-00-00-00-00-00-00  
  inet addr:10.0.0.51  Bcast:10.0.0.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:2044  Metric:1
RX packets:1020109972 errors:0 dropped:0 overruns:0 frame:0
TX packets:1549932074 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:128 
RX bytes:160480185298 (149.4 GiB)  TX bytes:1854376582766 (1.6 TiB)

grant

 + dev_kfree_skb_any(skb);
 + return;
 + }
 +
   tx_req = priv-tx_ring[priv-tx_head  (IPOIB_TX_RING_SIZE - 1)];
   tx_req-skb = skb;
   addr = dma_map_single(priv-ca-dma_device, skb-data, skb-len,
 
 -- 
 MST
 ___
 openib-general mailing list
 openib-general@openib.org
 http://openib.org/mailman/listinfo/openib-general
 
 To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] Re: SA cache design

2006-01-10 Thread Michael S. Tsirkin
Quoting Sean Hefty [EMAIL PROTECTED]:
  To keep the design as flexible as possible, my plan is to implement the 
  cache in userspace.  The interface to the cache would be via MADs.  
  Clients would send their queries to the sa_cache instead of the SA 
  itself.  The format of the MADs would be essentially identical to those 
  used to query the SA itself.  Response MADs would contain any requested 
  information.  If the cache could not satisfy a request, the sa_cache 
  would query the SA, update its cache, then return a reply.

Bouncing queries required for e.g. IPoIB or SDP
to userspace seems like a deadlock scenario in case userspace
is located e.g. on an NFS share.

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] Re: SA cache design

2006-01-10 Thread Sean Hefty

Michael S. Tsirkin wrote:
To keep the design as flexible as possible, my plan is to implement the 
cache in userspace.  The interface to the cache would be via MADs.  
Clients would send their queries to the sa_cache instead of the SA 
itself.  The format of the MADs would be essentially identical to those 
used to query the SA itself.  Response MADs would contain any requested 
information.  If the cache could not satisfy a request, the sa_cache 
would query the SA, update its cache, then return a reply.



Bouncing queries required for e.g. IPoIB or SDP
to userspace seems like a deadlock scenario in case userspace
is located e.g. on an NFS share.


The SA itself is implemented in userspace.  I don't see any issue here.

- Sean
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] Re: SA cache design

2006-01-10 Thread Michael S. Tsirkin
Quoting r. Sean Hefty [EMAIL PROTECTED]:
 Subject: Re: SA cache design
 
 Michael S. Tsirkin wrote:
 To keep the design as flexible as possible, my plan is to implement the 
 cache in userspace.  The interface to the cache would be via MADs.  
 Clients would send their queries to the sa_cache instead of the SA 
 itself.  The format of the MADs would be essentially identical to those 
 used to query the SA itself.  Response MADs would contain any requested 
 information.  If the cache could not satisfy a request, the sa_cache 
 would query the SA, update its cache, then return a reply.
  
  
  Bouncing queries required for e.g. IPoIB or SDP
  to userspace seems like a deadlock scenario in case userspace
  is located e.g. on an NFS share.
 
 The SA itself is implemented in userspace.  I don't see any issue here.
 
 - Sean

Sure, but its not running on the local (possibly diskless) node.

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] ipoib: tx ring overrun

2006-01-10 Thread Michael S. Tsirkin
Quoting Grant Grundler [EMAIL PROTECTED]:
 On Tue, Jan 10, 2006 at 08:55:15PM +0200, Michael S. Tsirkin wrote:
  Dont try to post more send work requests if the TX ring is full.
  Setting netif_stop_queue is insufficient: linux can still land
  a tx packet on us.

...


  +   if (unlikely(priv-tx_head - priv-tx_tail == IPOIB_TX_RING_SIZE)) {
  +   ipoib_dbg(priv, TX ring full, dropping packet\n);
  +   ++priv-stats.tx_errors;
 
 Could this be tx_dropped?

I dont know. Roland?

-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [git patch review 1/7] IB/mthca: fix page shift calculation in mthca_reg_phys_mr()

2006-01-10 Thread Roland Dreier
For all pages except possibly the last one, the byte beyond the buffer
end must be page aligned.  Therefore, when computing the page shift to
use, OR the end addresses of the buffers as well as the start
addresses into the mask we check.

Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]
Signed-off-by: Roland Dreier [EMAIL PROTECTED]

---

 drivers/infiniband/hw/mthca/mthca_provider.c |   18 +++---
 1 files changed, 7 insertions(+), 11 deletions(-)

6627fa662e86c400284b64c13661fdf6bff05983
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c 
b/drivers/infiniband/hw/mthca/mthca_provider.c
index 4cc7e28..30b67c2 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -783,24 +783,20 @@ static struct ib_mr *mthca_reg_phys_mr(s
if ((*iova_start  ~PAGE_MASK) != (buffer_list[0].addr  ~PAGE_MASK))
return ERR_PTR(-EINVAL);
 
-   if (num_phys_buf  1 
-   ((buffer_list[0].addr + buffer_list[0].size)  ~PAGE_MASK))
-   return ERR_PTR(-EINVAL);
-
mask = 0;
total_size = 0;
for (i = 0; i  num_phys_buf; ++i) {
-   if (i != 0  buffer_list[i].addr  ~PAGE_MASK)
-   return ERR_PTR(-EINVAL);
-   if (i != 0  i != num_phys_buf - 1 
-   (buffer_list[i].size  ~PAGE_MASK))
-   return ERR_PTR(-EINVAL);
+   if (i != 0)
+   mask |= buffer_list[i].addr;
+   if (i != num_phys_buf - 1)
+   mask |= buffer_list[i].addr + buffer_list[i].size;
 
total_size += buffer_list[i].size;
-   if (i  0)
-   mask |= buffer_list[i].addr;
}
 
+   if (mask  ~PAGE_MASK)
+   return ERR_PTR(-EINVAL);
+
/* Find largest page shift we can use to cover buffers */
for (shift = PAGE_SHIFT; shift  31; ++shift)
if (num_phys_buf  1) {
-- 
1.0.7
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [git patch review 2/7] IB/mthca: prevent event queue overrun

2006-01-10 Thread Roland Dreier
I am seeing EQ overruns in SDP stress tests: if the CQ completion
handler arms a CQ, this could generate more EQEs, so that EQ will
never get empty and consumer index will never get updated.

This is similiar to what we have with command interface:
/*
 * cmd_event() may add more commands.
 * The card will think the queue has overflowed if
 * we don't tell it we've been processing events.
 */
However, for completion events, we *don't* want to update the consumer
index on each event. So, perform EQ doorbell coalescing: allocate EQs
with some spare EQEs, and update once we run out of them.

The value 0x80 was selected to avoid any performance impact.

Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]
Signed-off-by: Roland Dreier [EMAIL PROTECTED]

---

 drivers/infiniband/hw/mthca/mthca_eq.c |   28 +++-
 1 files changed, 15 insertions(+), 13 deletions(-)

92898522e3ee1a0ba54140aad1974d9e868f74ae
diff --git a/drivers/infiniband/hw/mthca/mthca_eq.c 
b/drivers/infiniband/hw/mthca/mthca_eq.c
index e8a948f..2eabb27 100644
--- a/drivers/infiniband/hw/mthca/mthca_eq.c
+++ b/drivers/infiniband/hw/mthca/mthca_eq.c
@@ -45,6 +45,7 @@
 enum {
MTHCA_NUM_ASYNC_EQE = 0x80,
MTHCA_NUM_CMD_EQE   = 0x80,
+   MTHCA_NUM_SPARE_EQE = 0x80,
MTHCA_EQ_ENTRY_SIZE = 0x20
 };
 
@@ -277,11 +278,10 @@ static int mthca_eq_int(struct mthca_dev
 {
struct mthca_eqe *eqe;
int disarm_cqn;
-   int  eqes_found = 0;
+   int eqes_found = 0;
+   int set_ci = 0;
 
while ((eqe = next_eqe_sw(eq))) {
-   int set_ci = 0;
-
/*
 * Make sure we read EQ entry contents after we've
 * checked the ownership bit.
@@ -345,12 +345,6 @@ static int mthca_eq_int(struct mthca_dev
be16_to_cpu(eqe-event.cmd.token),
eqe-event.cmd.status,
be64_to_cpu(eqe-event.cmd.out_param));
-   /*
-* cmd_event() may add more commands.
-* The card will think the queue has overflowed if
-* we don't tell it we've been processing events.
-*/
-   set_ci = 1;
break;
 
case MTHCA_EVENT_TYPE_PORT_CHANGE:
@@ -385,8 +379,16 @@ static int mthca_eq_int(struct mthca_dev
set_eqe_hw(eqe);
++eq-cons_index;
eqes_found = 1;
+   ++set_ci;
 
-   if (unlikely(set_ci)) {
+   /*
+* The HCA will think the queue has overflowed if we
+* don't tell it we've been processing events.  We
+* create our EQs with MTHCA_NUM_SPARE_EQE extra
+* entries, so we must update our consumer index at
+* least that often.
+*/
+   if (unlikely(set_ci = MTHCA_NUM_SPARE_EQE)) {
/*
 * Conditional on hca_type is OK here because
 * this is a rare case, not the fast path.
@@ -862,19 +864,19 @@ int __devinit mthca_init_eq_table(struct
intr = (dev-mthca_flags  MTHCA_FLAG_MSI) ?
128 : dev-eq_table.inta_pin;
 
-   err = mthca_create_eq(dev, dev-limits.num_cqs,
+   err = mthca_create_eq(dev, dev-limits.num_cqs + MTHCA_NUM_SPARE_EQE,
  (dev-mthca_flags  MTHCA_FLAG_MSI_X) ? 128 : 
intr,
  dev-eq_table.eq[MTHCA_EQ_COMP]);
if (err)
goto err_out_unmap;
 
-   err = mthca_create_eq(dev, MTHCA_NUM_ASYNC_EQE,
+   err = mthca_create_eq(dev, MTHCA_NUM_ASYNC_EQE + MTHCA_NUM_SPARE_EQE,
  (dev-mthca_flags  MTHCA_FLAG_MSI_X) ? 129 : 
intr,
  dev-eq_table.eq[MTHCA_EQ_ASYNC]);
if (err)
goto err_out_comp;
 
-   err = mthca_create_eq(dev, MTHCA_NUM_CMD_EQE,
+   err = mthca_create_eq(dev, MTHCA_NUM_CMD_EQE + MTHCA_NUM_SPARE_EQE,
  (dev-mthca_flags  MTHCA_FLAG_MSI_X) ? 130 : 
intr,
  dev-eq_table.eq[MTHCA_EQ_CMD]);
if (err)
-- 
1.0.7
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [git patch review 4/7] IB/mthca: Factor common MAD initialization code

2006-01-10 Thread Roland Dreier
Factor out common code for initializing MAD packets, which is shared
by many query routines in mthca_provider.c, into init_query_mad().

add/remove: 1/0 grow/shrink: 0/4 up/down: 16/-44 (-28)
function old new   delta
init_query_mad -  16 +16
mthca_query_port 521 518  -3
mthca_query_pkey 301 294  -7
mthca_query_device   648 641  -7
mthca_query_gid  453 426 -27

Signed-off-by: Roland Dreier [EMAIL PROTECTED]

---

 drivers/infiniband/hw/mthca/mthca_provider.c |   52 +++---
 1 files changed, 22 insertions(+), 30 deletions(-)

87635b71b544563f29050a9cecaa12b5d2a3e34a
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c 
b/drivers/infiniband/hw/mthca/mthca_provider.c
index 0ae27fa..4887577 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -45,6 +45,14 @@
 #include mthca_user.h
 #include mthca_memfree.h
 
+static void init_query_mad(struct ib_smp *mad)
+{
+   mad-base_version  = 1;
+   mad-mgmt_class= IB_MGMT_CLASS_SUBN_LID_ROUTED;
+   mad-class_version = 1;
+   mad-method= IB_MGMT_METHOD_GET;
+}
+
 static int mthca_query_device(struct ib_device *ibdev,
  struct ib_device_attr *props)
 {
@@ -64,11 +72,8 @@ static int mthca_query_device(struct ib_
 
props-fw_ver  = mdev-fw_ver;
 
-   in_mad-base_version   = 1;
-   in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
-   in_mad-class_version  = 1;
-   in_mad-method = IB_MGMT_METHOD_GET;
-   in_mad-attr_id= IB_SMP_ATTR_NODE_INFO;
+   init_query_mad(in_mad);
+   in_mad-attr_id = IB_SMP_ATTR_NODE_INFO;
 
err = mthca_MAD_IFC(mdev, 1, 1,
1, NULL, NULL, in_mad, out_mad,
@@ -134,12 +139,9 @@ static int mthca_query_port(struct ib_de
 
memset(props, 0, sizeof *props);
 
-   in_mad-base_version   = 1;
-   in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
-   in_mad-class_version  = 1;
-   in_mad-method = IB_MGMT_METHOD_GET;
-   in_mad-attr_id= IB_SMP_ATTR_PORT_INFO;
-   in_mad-attr_mod   = cpu_to_be32(port);
+   init_query_mad(in_mad);
+   in_mad-attr_id  = IB_SMP_ATTR_PORT_INFO;
+   in_mad-attr_mod = cpu_to_be32(port);
 
err = mthca_MAD_IFC(to_mdev(ibdev), 1, 1,
port, NULL, NULL, in_mad, out_mad,
@@ -223,12 +225,9 @@ static int mthca_query_pkey(struct ib_de
if (!in_mad || !out_mad)
goto out;
 
-   in_mad-base_version   = 1;
-   in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
-   in_mad-class_version  = 1;
-   in_mad-method = IB_MGMT_METHOD_GET;
-   in_mad-attr_id= IB_SMP_ATTR_PKEY_TABLE;
-   in_mad-attr_mod   = cpu_to_be32(index / 32);
+   init_query_mad(in_mad);
+   in_mad-attr_id  = IB_SMP_ATTR_PKEY_TABLE;
+   in_mad-attr_mod = cpu_to_be32(index / 32);
 
err = mthca_MAD_IFC(to_mdev(ibdev), 1, 1,
port, NULL, NULL, in_mad, out_mad,
@@ -261,12 +260,9 @@ static int mthca_query_gid(struct ib_dev
if (!in_mad || !out_mad)
goto out;
 
-   in_mad-base_version   = 1;
-   in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
-   in_mad-class_version  = 1;
-   in_mad-method = IB_MGMT_METHOD_GET;
-   in_mad-attr_id= IB_SMP_ATTR_PORT_INFO;
-   in_mad-attr_mod   = cpu_to_be32(port);
+   init_query_mad(in_mad);
+   in_mad-attr_id  = IB_SMP_ATTR_PORT_INFO;
+   in_mad-attr_mod = cpu_to_be32(port);
 
err = mthca_MAD_IFC(to_mdev(ibdev), 1, 1,
port, NULL, NULL, in_mad, out_mad,
@@ -280,13 +276,9 @@ static int mthca_query_gid(struct ib_dev
 
memcpy(gid-raw, out_mad-data + 8, 8);
 
-   memset(in_mad, 0, sizeof *in_mad);
-   in_mad-base_version   = 1;
-   in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
-   in_mad-class_version  = 1;
-   in_mad-method = IB_MGMT_METHOD_GET;
-   in_mad-attr_id= IB_SMP_ATTR_GUID_INFO;
-   in_mad-attr_mod   = cpu_to_be32(index / 8);
+   init_query_mad(in_mad);
+   in_mad-attr_id  = IB_SMP_ATTR_GUID_INFO;
+   in_mad-attr_mod = cpu_to_be32(index / 8);
 
err = mthca_MAD_IFC(to_mdev(ibdev), 1, 1,
port, NULL, NULL, in_mad, out_mad,
-- 
1.0.7
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit 

[openib-general] [git patch review 7/7] IPoIB: Fix address handle refcounting for multicast groups

2006-01-10 Thread Roland Dreier
Multiple ipoib_neigh structures on mcast-neigh_list may point to the
same ah.  This means that ipoib_mcast_free() can't just make a list of
ah structs to free, since this might end up trying to add the same ah
to the list more than once.  Handle this in ipoib_multicast.c in the
same way as it is handled in ipoib_main.c for struct ipoib_path.

Signed-off-by: Eli Cohen [EMAIL PROTECTED]
Signed-off-by: Michael S. Tsirkin [EMAIL PROTECTED]
Signed-off-by: Roland Dreier [EMAIL PROTECTED]

---

 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   13 +++--
 1 files changed, 7 insertions(+), 6 deletions(-)

97460df37ea3335ca11562568932c9f9facfecdb
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 
b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index 6c6db75..03b2ca6 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -97,8 +97,6 @@ static void ipoib_mcast_free(struct ipoi
struct ipoib_dev_priv *priv = netdev_priv(dev);
struct ipoib_neigh *neigh, *tmp;
unsigned long flags;
-   LIST_HEAD(ah_list);
-   struct ipoib_ah *ah, *tah;
 
ipoib_dbg_mcast(netdev_priv(dev),
deleting multicast group  IPOIB_GID_FMT \n,
@@ -107,8 +105,14 @@ static void ipoib_mcast_free(struct ipoi
spin_lock_irqsave(priv-lock, flags);
 
list_for_each_entry_safe(neigh, tmp, mcast-neigh_list, list) {
+   /*
+* It's safe to call ipoib_put_ah() inside priv-lock
+* here, because we know that mcast-ah will always
+* hold one more reference, so ipoib_put_ah() will
+* never do more than decrement the ref count.
+*/
if (neigh-ah)
-   list_add_tail(neigh-ah-list, ah_list);
+   ipoib_put_ah(neigh-ah);
*to_ipoib_neigh(neigh-neighbour) = NULL;
neigh-neighbour-ops-destructor = NULL;
kfree(neigh);
@@ -116,9 +120,6 @@ static void ipoib_mcast_free(struct ipoi
 
spin_unlock_irqrestore(priv-lock, flags);
 
-   list_for_each_entry_safe(ah, tah, ah_list, list)
-   ipoib_put_ah(ah);
-
if (mcast-ah)
ipoib_put_ah(mcast-ah);
 
-- 
1.0.7
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [git patch review 5/7] IB: Add node_guid to struct ib_device

2006-01-10 Thread Roland Dreier
Add a node_guid field to struct ib_device.  It is the responsibility
of the low-level driver to initialize this field before registering a
device with the midlayer.  Convert everyone to looking at this field
instead of calling ib_query_device() when all they want is the node
GUID, and remove the node_guid field from struct ib_device_attr.

Signed-off-by: Sean Hefty [EMAIL PROTECTED]
Signed-off-by: Roland Dreier [EMAIL PROTECTED]

---

 drivers/infiniband/core/cm.c |   29 +++
 drivers/infiniband/core/sysfs.c  |   22 +++---
 drivers/infiniband/core/uverbs_cmd.c |2 +
 drivers/infiniband/hw/mthca/mthca_provider.c |   40 +-
 drivers/infiniband/ulp/srp/ib_srp.c  |   23 +++
 include/rdma/ib_verbs.h  |2 +
 6 files changed, 54 insertions(+), 64 deletions(-)

cf311cd49a78f1e431787068cc31d29d06a415e6
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 3a611fe..c06b181 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -3163,22 +3163,6 @@ int ib_cm_init_qp_attr(struct ib_cm_id *
 }
 EXPORT_SYMBOL(ib_cm_init_qp_attr);
 
-static __be64 cm_get_ca_guid(struct ib_device *device)
-{
-   struct ib_device_attr *device_attr;
-   __be64 guid;
-   int ret;
-
-   device_attr = kmalloc(sizeof *device_attr, GFP_KERNEL);
-   if (!device_attr)
-   return 0;
-
-   ret = ib_query_device(device, device_attr);
-   guid = ret ? 0 : device_attr-node_guid;
-   kfree(device_attr);
-   return guid;
-}
-
 static void cm_add_one(struct ib_device *device)
 {
struct cm_device *cm_dev;
@@ -3200,9 +3184,7 @@ static void cm_add_one(struct ib_device 
return;
 
cm_dev-device = device;
-   cm_dev-ca_guid = cm_get_ca_guid(device);
-   if (!cm_dev-ca_guid)
-   goto error1;
+   cm_dev-ca_guid = device-node_guid;
 
set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask);
for (i = 1; i = device-phys_port_cnt; i++) {
@@ -3217,11 +3199,11 @@ static void cm_add_one(struct ib_device 
cm_recv_handler,
port);
if (IS_ERR(port-mad_agent))
-   goto error2;
+   goto error1;
 
ret = ib_modify_port(device, i, 0, port_modify);
if (ret)
-   goto error3;
+   goto error2;
}
ib_set_client_data(device, cm_client, cm_dev);
 
@@ -3230,9 +3212,9 @@ static void cm_add_one(struct ib_device 
write_unlock_irqrestore(cm.device_lock, flags);
return;
 
-error3:
-   ib_unregister_mad_agent(port-mad_agent);
 error2:
+   ib_unregister_mad_agent(port-mad_agent);
+error1:
port_modify.set_port_cap_mask = 0;
port_modify.clr_port_cap_mask = IB_PORT_CM_SUP;
while (--i) {
@@ -3240,7 +3222,6 @@ error2:
ib_modify_port(device, port-port_num, 0, port_modify);
ib_unregister_mad_agent(port-mad_agent);
}
-error1:
kfree(cm_dev);
 }
 
diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index 1f1743c..5982d68 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -445,13 +445,7 @@ static int ib_device_uevent(struct class
return -ENOMEM;
 
/*
-* It might be nice to pass the node GUID with the event, but
-* right now the only way to get it is to query the device
-* provider, and this can crash during device removal because
-* we are will be running after driver removal has started.
-* We could add a node_guid field to struct ib_device, or we
-* could just let userspace read the node GUID from sysfs when
-* devices are added.
+* It would be nice to pass the node GUID with the event...
 */
 
envp[i] = NULL;
@@ -623,21 +617,15 @@ static ssize_t show_sys_image_guid(struc
 static ssize_t show_node_guid(struct class_device *cdev, char *buf)
 {
struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
-   struct ib_device_attr attr;
-   ssize_t ret;
 
if (!ibdev_is_alive(dev))
return -ENODEV;
 
-   ret = ib_query_device(dev, attr);
-   if (ret)
-   return ret;
-
return sprintf(buf, %04x:%04x:%04x:%04x\n,
-  be16_to_cpu(((__be16 *) attr.node_guid)[0]),
-  be16_to_cpu(((__be16 *) attr.node_guid)[1]),
-  be16_to_cpu(((__be16 *) attr.node_guid)[2]),
-  be16_to_cpu(((__be16 *) attr.node_guid)[3]));
+  be16_to_cpu(((__be16 *) dev-node_guid)[0]),
+  be16_to_cpu(((__be16 *) dev-node_guid)[1]),
+  

[openib-general] [git patch review 3/7] IB/mthca: kzalloc conversions

2006-01-10 Thread Roland Dreier
Convert kmalloc()/memset(,0,) pairs to kzalloc().

Signed-off-by: Roland Dreier [EMAIL PROTECTED]

---

 drivers/infiniband/hw/mthca/mthca_provider.c |   12 
 1 files changed, 4 insertions(+), 8 deletions(-)

105e50a5e8f184af31daffce4d7bfd7771fe213f
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c 
b/drivers/infiniband/hw/mthca/mthca_provider.c
index 30b67c2..0ae27fa 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -55,7 +55,7 @@ static int mthca_query_device(struct ib_
 
u8 status;
 
-   in_mad  = kmalloc(sizeof *in_mad, GFP_KERNEL);
+   in_mad  = kzalloc(sizeof *in_mad, GFP_KERNEL);
out_mad = kmalloc(sizeof *out_mad, GFP_KERNEL);
if (!in_mad || !out_mad)
goto out;
@@ -64,7 +64,6 @@ static int mthca_query_device(struct ib_
 
props-fw_ver  = mdev-fw_ver;
 
-   memset(in_mad, 0, sizeof *in_mad);
in_mad-base_version   = 1;
in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
in_mad-class_version  = 1;
@@ -128,14 +127,13 @@ static int mthca_query_port(struct ib_de
int err = -ENOMEM;
u8 status;
 
-   in_mad  = kmalloc(sizeof *in_mad, GFP_KERNEL);
+   in_mad  = kzalloc(sizeof *in_mad, GFP_KERNEL);
out_mad = kmalloc(sizeof *out_mad, GFP_KERNEL);
if (!in_mad || !out_mad)
goto out;
 
memset(props, 0, sizeof *props);
 
-   memset(in_mad, 0, sizeof *in_mad);
in_mad-base_version   = 1;
in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
in_mad-class_version  = 1;
@@ -220,12 +218,11 @@ static int mthca_query_pkey(struct ib_de
int err = -ENOMEM;
u8 status;
 
-   in_mad  = kmalloc(sizeof *in_mad, GFP_KERNEL);
+   in_mad  = kzalloc(sizeof *in_mad, GFP_KERNEL);
out_mad = kmalloc(sizeof *out_mad, GFP_KERNEL);
if (!in_mad || !out_mad)
goto out;
 
-   memset(in_mad, 0, sizeof *in_mad);
in_mad-base_version   = 1;
in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
in_mad-class_version  = 1;
@@ -259,12 +256,11 @@ static int mthca_query_gid(struct ib_dev
int err = -ENOMEM;
u8 status;
 
-   in_mad  = kmalloc(sizeof *in_mad, GFP_KERNEL);
+   in_mad  = kzalloc(sizeof *in_mad, GFP_KERNEL);
out_mad = kmalloc(sizeof *out_mad, GFP_KERNEL);
if (!in_mad || !out_mad)
goto out;
 
-   memset(in_mad, 0, sizeof *in_mad);
in_mad-base_version   = 1;
in_mad-mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
in_mad-class_version  = 1;
-- 
1.0.7
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] opensm fails to find HCA if port is down.

2006-01-10 Thread Hal Rosenstock
Hi Ralph,

On Tue, 2006-01-10 at 13:31, Ralph Campbell wrote:
 If opensm is started with no arguments, the default algorithm
 for finding a port to bind to will skip ports which are present
 but the link is DOWN.  If there is only one port in the system,
 no port is selected and opensm tries the default HCA name mthca0
 which, if not present, confuses opensm and it exits.
 
 The following patch changes the port selection so that the first
 active port is selected, and if none, the first non-disabled port.

This is close and headed in the right direction but has one property I'm
not too fond of: when there are no active ports, it does not prefer a
port whose physical state is link up over one in (say) polling (anything
other than link up) so the subnet may not come up when it could in that
case.

-- Hal

 Signed-off-by: Ralph Campbell [EMAIL PROTECTED]
 
 Index: umad.c
 ===
 --- umad.c(revision 4900)
 +++ umad.c(working copy)
 @@ -207,9 +207,9 @@
  }
  
  /*
 - * if *port  0 checks ca[port] state. Otherwise set *port to
 + * if *port  0, check ca[port] state. Otherwise set *port to
   * the first port that is active, and if such is not found, to
 - * the first port that is (physically) up. Otherwise return -1;
 + * the first port that is not disabled.  Otherwise return -1;
   */
  static int
  resolve_ca_port(char *ca_name, int *port)
 @@ -228,14 +228,14 @@
   return 1;
   }
  
 - if (*port  0) {/* user wants user gets */
 + if (*port  0) {/* check only the port the user wants */
   if (*port  ca.numports)
   return -1;
   if (!ca.ports[*port])
   return -1;
   if (ca.ports[*port]-state == 4)
   return 1;
 - if (ca.ports[*port]-phys_state == 5)
 + if (ca.ports[*port]-phys_state != 3)
   return 0;
   return -1;
   }
 @@ -244,7 +244,7 @@
   DEBUG(checking port %d, i);
   if (!ca.ports[i])
   continue;
 - if (up  0  ca.ports[i]-phys_state == 5)
 + if (up  0  ca.ports[i]-phys_state != 3)
   up = *port = i;
   if (ca.ports[i]-state == 4) {
   active = *port = i;
 @@ -278,10 +278,11 @@
   return ca_name;
   }
   
 - /* find first existing HCA with Active port */
 + /* Get the list of CA names. */
   if ((n = umad_get_cas_names((void *)names, UMAD_CA_NAME_LEN))  0)
   return 0;
  
 + /* Find the first existing CA with an active port. */
   for (caidx = 0; caidx  n; caidx++) {
   TRACE(checking ca '%s', names[caidx]);
   

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] opensm fails to find HCA if port is down.

2006-01-10 Thread Ralph Campbell
I understand.  Maybe it should be the first active, if none, then the
first UP, and if none, the first !disabled.
Mostly I was trying to get something that picked ipath0 port 1
when it was the only port in the system even if the link
is down.

On Tue, 2006-01-10 at 17:12 -0500, Hal Rosenstock wrote:
 Hi Ralph,
 
 On Tue, 2006-01-10 at 13:31, Ralph Campbell wrote:
  If opensm is started with no arguments, the default algorithm
  for finding a port to bind to will skip ports which are present
  but the link is DOWN.  If there is only one port in the system,
  no port is selected and opensm tries the default HCA name mthca0
  which, if not present, confuses opensm and it exits.
  
  The following patch changes the port selection so that the first
  active port is selected, and if none, the first non-disabled port.
 
 This is close and headed in the right direction but has one property I'm
 not too fond of: when there are no active ports, it does not prefer a
 port whose physical state is link up over one in (say) polling (anything
 other than link up) so the subnet may not come up when it could in that
 case.
 
 -- Hal
 
  Signed-off-by: Ralph Campbell [EMAIL PROTECTED]
  
  Index: umad.c
  ===
  --- umad.c  (revision 4900)
  +++ umad.c  (working copy)
  @@ -207,9 +207,9 @@
   }
   
   /*
  - * if *port  0 checks ca[port] state. Otherwise set *port to
  + * if *port  0, check ca[port] state. Otherwise set *port to
* the first port that is active, and if such is not found, to
  - * the first port that is (physically) up. Otherwise return -1;
  + * the first port that is not disabled.  Otherwise return -1;
*/
   static int
   resolve_ca_port(char *ca_name, int *port)
  @@ -228,14 +228,14 @@
  return 1;
  }
   
  -   if (*port  0) {/* user wants user gets */
  +   if (*port  0) {/* check only the port the user wants */
  if (*port  ca.numports)
  return -1;
  if (!ca.ports[*port])
  return -1;
  if (ca.ports[*port]-state == 4)
  return 1;
  -   if (ca.ports[*port]-phys_state == 5)
  +   if (ca.ports[*port]-phys_state != 3)
  return 0;
  return -1;
  }
  @@ -244,7 +244,7 @@
  DEBUG(checking port %d, i);
  if (!ca.ports[i])
  continue;
  -   if (up  0  ca.ports[i]-phys_state == 5)
  +   if (up  0  ca.ports[i]-phys_state != 3)
  up = *port = i;
  if (ca.ports[i]-state == 4) {
  active = *port = i;
  @@ -278,10 +278,11 @@
  return ca_name;
  }
  
  -   /* find first existing HCA with Active port */
  +   /* Get the list of CA names. */
  if ((n = umad_get_cas_names((void *)names, UMAD_CA_NAME_LEN))  0)
  return 0;
   
  +   /* Find the first existing CA with an active port. */
  for (caidx = 0; caidx  n; caidx++) {
  TRACE(checking ca '%s', names[caidx]);
  
 
-- 
Ralph Campbell [EMAIL PROTECTED]

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] opensm fails to find HCA if port is down.

2006-01-10 Thread Hal Rosenstock
Hi Ralph,

On Tue, 2006-01-10 at 17:47, Ralph Campbell wrote:
 I understand.  Maybe it should be the first active, if none, then the
 first UP, and if none, the first !disabled.

Exactly. I think one more loop (first checking physical state for linkup
and then checking for not disabled) will take care of it. I'm working on
it now as a patch on your patch which I will post.

 Mostly I was trying to get something that picked ipath0 port 1
 when it was the only port in the system even if the link
 is down.

Understood.

-- Hal


___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] Re: [PATCH] ipoib: tx ring overrun

2006-01-10 Thread Michael S. Tsirkin
 Quoting r. Roland Dreier [EMAIL PROTECTED]:
  Subject: Re: [PATCH] ipoib: tx ring overrun
  
  Michael Look here
  
  Michael https://openib.org/svn/trunk/contrib/mellanox/patches
  
  Michael these are updated outstanding patches
  
  OK, cool.  Is there any ordering info available about dependencies
  between the patches?
 
 ipoib_flush_wq_2.patch needs to be applied on top of ipoib_flush_wq_1.patch
 
 Others are independent of each other.

Here's a list of patches with some explanations:

Fixes for oopses that we saw in testing:
ipoib_up_flag_race.patch
ipoib_all_neigh_issues_2.patch
ipoib_mcast_send.patch
ipoib_mc_list.patch
ipoib_flush_wq_1.patch
ipoib_flush_wq_2.patch

Memory leak that we saw in testing
ipoib_multicast_leak.patch

Drop counter fix (not sure whether this is from testing or code review)
ipoib_multicast_drop_counter.patch

Code review: cosmetic
ipoib_cosmetics.patch

Code review: error handling
ipoib_init_qp.patch
ipoib_post_receives_err.patch

Code review: races
ipoib_qprst_protect.patch
ipoib_multicast_ah.patch
ipoib_multicast_race.patch


There's also a patch for libibverbs
devinfo_board_id.patch

and a patch for core/sysfs.c
node_desc_clear.patch



-- 
MST
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] SA cache design

2006-01-10 Thread Sean Hefty

Grant Grundler wrote:

We already have several databases for different things:
makedb  (primarily for NSS)
updatedb (fast lookup of local files)
mandb   (man pages)
rpmdb   (yes, even on debian boxes)
sasldbconverter2 (for SASL - linux securty/login stuff)
*db4.3* (Berkeley v4.3 Database - used by apt-get/dpkg, Apache,
python, libns-db, postfix, etc)

In fact, looks like a debian testing box would be disfunctional
without Berkeley Database. Would that work?


Thanks for pointing these out.

I did find that libdb-4.2 was installed on SuSE and RedHat systems, and a 
libodbc was on my SuSE system.  Libdb-4.2 would help manage some of the SA 
objects to a file, but is limited in its data storage and retrieval 
capabilities.  If a true relational database couldn't be used, libdb would 
definitely be useful.


- Sean
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] opensm fails to find HCA if port is down.

2006-01-10 Thread Hal Rosenstock
On Tue, 2006-01-10 at 13:31, Ralph Campbell wrote:
 If opensm is started with no arguments, the default algorithm
 for finding a port to bind to will skip ports which are present
 but the link is DOWN.  If there is only one port in the system,
 no port is selected and opensm tries the default HCA name mthca0
 which, if not present, confuses opensm and it exits.
 
 The following patch changes the port selection so that the first
 active port is selected, and if none, the first non-disabled port.
 
 Signed-off-by: Ralph Campbell [EMAIL PROTECTED]

Thanks. Applied. Subsequent patch to follow shortly.

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] [PATCH] opensm fails to find HCA if port is down.

2006-01-10 Thread Hal Rosenstock
On Tue, 2006-01-10 at 17:51, Hal Rosenstock wrote:
 Hi Ralph,
 
 On Tue, 2006-01-10 at 17:47, Ralph Campbell wrote:
  I understand.  Maybe it should be the first active, if none, then the
  first UP, and if none, the first !disabled.
 
 Exactly. I think one more loop (first checking physical state for linkup
 and then checking for not disabled) will take care of it. I'm working on
 it now as a patch on your patch which I will post.

In libibumad/umad,c::resolve_ca_port, default algorithm is to prefer
ports which are active, then those whose physical state is link up, and
finally those ports whose physical state is not disabled.

Signed-off-by: Hal Rosenstock [EMAIL PROTECTED]

Index: umad.c
===
--- umad.c  (revision 4904)
+++ umad.c  (working copy)
@@ -244,7 +244,7 @@ resolve_ca_port(char *ca_name, int *port
DEBUG(checking port %d, i);
if (!ca.ports[i])
continue;
-   if (up  0  ca.ports[i]-phys_state != 3)
+   if (up  0  ca.ports[i]-phys_state == 5)
up = *port = i;
if (ca.ports[i]-state == 4) {
active = *port = i;
@@ -253,6 +253,18 @@ resolve_ca_port(char *ca_name, int *port
}
}
 
+   if (active == -1  up == -1) { /* no active or linkup port found */
+   for (i = 0; i = ca.numports; i++) {
+   DEBUG(checking port %d, i);
+   if (!ca.ports[i])
+   continue;
+   if (ca.ports[i]-phys_state != 3) {
+   up = *port = i;
+   break;
+   }
+   }
+   }
+
release_ca(ca);
 
if (active = 0)


___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] SA cache design

2006-01-10 Thread Grant Grundler
On Tue, Jan 10, 2006 at 03:00:46PM -0800, Sean Hefty wrote:
 I did find that libdb-4.2 was installed on SuSE and RedHat systems, and a 
 libodbc was on my SuSE system.  Libdb-4.2 would help manage some of the SA 
 objects to a file, but is limited in its data storage and retrieval 
 capabilities.  If a true relational database couldn't be used, libdb would 
 definitely be useful.

I forgot to point out postgres:
http://www.postgresql.org/about/

Several packages (e.g. postfix, ldap) offer different backends so
the admin can decide how sophisticated the data storage and retrieval
needs to be. With roughly 150K employees, HP has a rather sophisticated
LDAP/postfix setup to manage logins. But I don't need that for the 10 boxes
I manage outside the firewall. Same is probably true for SA cache.

grant
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [MailServer Notification]To Recipient file blocking settings matched and action taken.

2006-01-10 Thread Administrator
ScanMail for Microsoft Exchange has blocked an attachment.

Sender = [EMAIL PROTECTED]
Recipient(s) = Openib
Subject = [openib-general] CMS FOREX
Scanning time = 1/10/2006 4:23:46 PM

Action on file blocking:
The attachment forex.exe matches the file blocking settings. ScanMail has 
Quarantined it.  The attachment was quarantined to C:\Program 
Files\Trend\Smex\Alert\forex43c450121.exe_.

Warning to Recipient: Action taken by attachment blocking.
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [MailServer Notification]To Recipient file blocking settings matched and action taken.

2006-01-10 Thread Administrator
ScanMail for Microsoft Exchange has blocked an attachment.

Sender = Starkest F. Volcanoes
Recipient(s) = Openib
Subject = SPAM: [openib-general] CMS FOREX
Scanning time = 1/10/2006 7:23:53 PM

Action on file blocking:
The attachment forex.exe matches the file blocking settings. ScanMail has 
Quarantined it.  The attachment was quarantined to C:\Program 
Files\Trend\Smex\Alert\forex43c450194.exe_.

Warning to Recipient: Action taken by attachment blocking.
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [MailServer Notification]To Recipient file blocking settings matched and action taken.

2006-01-10 Thread Administrator
ScanMail for Microsoft Exchange has blocked an attachment.

Sender = Starkest F. Volcanoes
Recipient(s) = Openib
Subject = SPAM: [openib-general] CMS FOREX
Scanning time = 1/10/2006 7:23:53 PM

Action on file blocking:
The attachment forex.exe matches the file blocking settings. ScanMail has 
Quarantined it.  The attachment was quarantined to C:\Program 
Files\Trend\Smex\Alert\forex43c450195.exe_.

Warning to Recipient: Action taken by attachment blocking.
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [MailServer Notification]To Recipient file blocking settings matched and action taken.

2006-01-10 Thread Administrator
ScanMail for Microsoft Exchange has blocked an attachment.

Sender = Starkest F. Volcanoes
Recipient(s) = Openib
Subject = SPAM: [openib-general] CMS FOREX
Scanning time = 1/10/2006 7:23:53 PM

Action on file blocking:
The attachment forex.exe matches the file blocking settings. ScanMail has 
Quarantined it.  The attachment was quarantined to C:\Program 
Files\Trend\Smex\Alert\forex43c4501a6.exe_.

Warning to Recipient: Action taken by attachment blocking.
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] [MailServer Notification]To Recipient file blocking settings matched and action taken.

2006-01-10 Thread Administrator
ScanMail for Microsoft Exchange has blocked an attachment.

Sender = Starkest F. Volcanoes
Recipient(s) = Openib
Subject = SPAM: [openib-general] CMS FOREX
Scanning time = 1/10/2006 7:23:54 PM

Action on file blocking:
The attachment forex.exe matches the file blocking settings. ScanMail has 
Quarantined it.  The attachment was quarantined to C:\Program 
Files\Trend\Smex\Alert\forex43c4501a7.exe_.

Warning to Recipient: Action taken by attachment blocking.
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] SA cache design

2006-01-10 Thread Sean Hefty

Grant Grundler wrote:

I forgot to point out postgres:
http://www.postgresql.org/about/


This looks like it would work well.

The question that I have for users is:  Is it acceptable for the cache to make 
use of a relational database system?


The disadvantage is that a RDMS would need to be installed and configured on 
several, or all systems.  (It's not clear to me yet how much of that could be 
automated.)


The advantage is that the cache would gain the benefits of having a database 
backend - notably support for more complex queries, persistent storage, and 
indexing to increase query performance.


To provide some additional context, path record queries can be fairly complex, 
involving a number of fields.  (All queries today are limited to sgid, dgid, and 
pkey.)  Trying to efficiently retrieve a path record based on a dgid and pkey is 
non-trivial, and support for queries with additional restrictions or for other 
SA records complicates this issue.


- Sean
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] Re: ib_sdp ERR: IOCB dmesg output

2006-01-10 Thread Grant Grundler
On Sun, Dec 11, 2005 at 09:53:41AM -0800, Grant Grundler wrote:
...
 I might have spoken too soon...I just started getting ERR output
 from ib_sdp running netperf TCP_STREAM over SDP on the IA64 rx2600's.
 I killed and restarted the sdpstream script. It seems to be working.
 
 I've not yet seen this type of error running r4344 on a different box.
 If it's not obvious what's wrong, I can try r4344 on the rx2600's as well.
...
 ib_sdp  ERR: IOCB -1 cancel 0 flag 0340 size 8197:0:8197
 ib_sdp  ERR: IOCB -1 cancel 0 flag 0340 size 16384:0:16384
 ib_sdp  ERR: IOCB -1 cancel 0 flag 0340 size 49152:0:49152

I'm still seeing similar errors with 2.6.15 + svn 4800 and have another
bit of data. Main problem is impact to performance:
http://gsyprf3.external.hp.com/openib/rx2600-r4800/sdpstream.png

I've parked the dmesg output here:
http://gsyprf3.external.hp.com/openib/rx2600-r4800/sdp-errors

After loading the drivers, iteratively running netperf to generate
the data points (with LD_PRELOAD), I tried to unload all of IB modules
but end up with:
gsyprf3:~# lsmod
Module  Size  Used by
ib_sdp227136  9 
ib_cm  93964  1 ib_sdp
ib_sa  25324  1 ib_sdp
ib_mad 85952  2 ib_cm,ib_sa
ib_core93096  4 ib_sdp,ib_cm,ib_sa,ib_mad

I'm not sure who is holding the reference counts to ib_sdp.
At this point no netperf processes are running. But some wq still
have references (as root, lsof | fgrep sdp):
sdp_wq/0  3893 root  cwd   DIR8,34096  2 /
sdp_wq/0  3893 root  rtd   DIR8,34096  2 /
sdp_wq/0  3893 root  txt   unknown   
/proc/3893/exe
sdp_wq/1  3894 root  cwd   DIR8,34096  2 /
sdp_wq/1  3894 root  rtd   DIR8,34096  2 /
sdp_wq/1  3894 root  txt   unknown   
/proc/3894/exe

[EMAIL PROTECTED]:~$ ps -ef | grep sdp
root  389311  0 Jan08 ?00:00:00 [sdp_wq/0]
root  389411  0 Jan08 ?00:00:00 [sdp_wq/1]


It's likely the userspace openib libs are out of sync.
But I don't expect that's relevant to SDP or IPoIB (kernel drivers).

This is in contrast to another box running identical kernel + modules:
iowa:~# lsmod
Module  Size  Used by
ib_uverbs  93096  0 
ib_sdp227136  0 
ib_cm  93964  1 ib_sdp
ib_ipoib   95992  0 
ib_sa  25324  2 ib_sdp,ib_ipoib
ib_mthca  275136  0 
ib_mad 85952  3 ib_cm,ib_sa,ib_mthca
ib_core93096  7 
ib_uverbs,ib_sdp,ib_cm,ib_ipoib,ib_sa,ib_mthca,ib_mad

iota was the target of netperf on gsyprf3 (ie iowa was running netserver
with LD_PRELOAD as well).

Given the number of recent bug fixes since 4800, I will update and
try again later this week.

thanks,
grant
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] RE: [Ips] iSER API's

2006-01-10 Thread Dan Bar Dov
Eddy hi,

As you can see, there are no responses. I guess that leaves only the
option of reading the header files/code.

Dan

On 1/10/06, Dan Bar Dov [EMAIL PROTECTED] wrote:


 Eddy hi,



 OpenIB maintains a WIKI at
 https://openib.org/tiki/tiki-index.php

 However I'm not sure it contains any ib_verbs documentation.



 I'm CCing the openib mailing list, maybe someone there knows where you can
 find documentation.



 Dan


 


 From: Eddy Quicksall
 [mailto:[EMAIL PROTECTED]
 Sent: Monday, January 09, 2006 10:55 PM
 To: Dan Bar Dov
 Subject: Re: [Ips] iSER API's




 I assume ib_verbs is for Infiniband. Am I correct?





 Where can I get the ib_verbs API documentation?





 Eddy


 - Original Message -


 From: Dan Bar Dov


 To: John Hufferd ; Eddy Quicksall ; ips@ietf.org


 Sent: Sunday, January 08, 2006 8:50 PM


 Subject: RE: [Ips] iSER API's




 Indeed on Linux the direction is towards a generic RDMA interface. CMA
 provides a generic CM abstraction, and the ib_verbs API is planned to extend
 over iWARP one way or another.

 The DM was deemed unnecessary, the API between iSCSI  SCSI and the
 underlying iSER enforced redesign of the iSER API to conform with iSCSI and
 SCSI rather then implement yet another layer between iSER and iSCSI/SCSI
 (namely DM).



 Dan



 


 From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of John
 Hufferd
 Sent: Friday, January 06, 2006 11:18 PM
 To: Eddy Quicksall; ips@ietf.org
 Subject: RE: [Ips] iSER API's

 Eddy,

 What APIs are you asking about?  The SCSI CLASS Driver to the Device Driver
 (Mini Port Driver) should have the same interfaces for iSER as it is
 available for iSCSI.  If you mean between the Device Driver (Mini Port
 Driver) and the RNIC, that will probably be the RNIC vendors interface if
 they have implemented all or part of the iSER or Data Mover in the RNIC
 itself, or the RNIC vendor's interfaces to their version of the verbs (at
 least until the OS implements its own RDMA interfaces that implement the
 RDMA verbs).



 I believe that, over time, most OSs will have generic RDMA interfaces, which
 can be use by all certified RNIC hardware, and any application (user space
 or kernel space); in that case the iSER module will probably interface to
 that OS's RDMA interfaces.




 .

 .

 .

 John L Hufferd

 Sr. Executive Director of Technology

 Brocade Communications Systems, Inc

 [EMAIL PROTECTED]

 Office Phone: (408) 333-5244; eFAX: (408) 904-4688

 Alt Office Phone: (408) 997-6136; Cell: (408) 627-9606


 


 From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Eddy
 Quicksall
 Sent: Friday, January 06, 2006 11:42 AM
 To: ips@ietf.org
 Subject: [Ips] iSER API's




 Is there any work afoot to design some standard iSER API's?





 Eddy
 ___
 openib-general mailing list
 openib-general@openib.org
 http://openib.org/mailman/listinfo/openib-general

 To unsubscribe, please visit
 http://openib.org/mailman/listinfo/openib-general


___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


Re: [openib-general] RE: [Ips] iSER API's

2006-01-10 Thread Hal Rosenstock
Hi,

On Tue, 2006-01-10 at 22:03, Dan Bar Dov wrote:
 Eddy hi,
 
 As you can see, there are no responses. I guess that leaves only the
 option of reading the header files/code.

ib_verbs is not just for InfiniBand. It also (will) accomodate RDMA over
ethernet as well.

The best documentation is indeed the header file. You can direct
specific questions to this list.

-- Hal

 
 Dan
 
 On 1/10/06, Dan Bar Dov [EMAIL PROTECTED] wrote:
 
 
  Eddy hi,
 
 
 
  OpenIB maintains a WIKI at
  https://openib.org/tiki/tiki-index.php
 
  However I'm not sure it contains any ib_verbs documentation.
 
 
 
  I'm CCing the openib mailing list, maybe someone there knows where you can
  find documentation.
 
 
 
  Dan
 
 
  
 
 
  From: Eddy Quicksall
  [mailto:[EMAIL PROTECTED]
  Sent: Monday, January 09, 2006 10:55 PM
  To: Dan Bar Dov
  Subject: Re: [Ips] iSER API's
 
 
 
 
  I assume ib_verbs is for Infiniband. Am I correct?
 
 
 
 
 
  Where can I get the ib_verbs API documentation?
 
 
 
 
 
  Eddy
 
 
  - Original Message -
 
 
  From: Dan Bar Dov
 
 
  To: John Hufferd ; Eddy Quicksall ; ips@ietf.org
 
 
  Sent: Sunday, January 08, 2006 8:50 PM
 
 
  Subject: RE: [Ips] iSER API's
 
 
 
 
  Indeed on Linux the direction is towards a generic RDMA interface. CMA
  provides a generic CM abstraction, and the ib_verbs API is planned to extend
  over iWARP one way or another.
 
  The DM was deemed unnecessary, the API between iSCSI  SCSI and the
  underlying iSER enforced redesign of the iSER API to conform with iSCSI and
  SCSI rather then implement yet another layer between iSER and iSCSI/SCSI
  (namely DM).
 
 
 
  Dan
 
 
 
  
 
 
  From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of John
  Hufferd
  Sent: Friday, January 06, 2006 11:18 PM
  To: Eddy Quicksall; ips@ietf.org
  Subject: RE: [Ips] iSER API's
 
  Eddy,
 
  What APIs are you asking about?  The SCSI CLASS Driver to the Device Driver
  (Mini Port Driver) should have the same interfaces for iSER as it is
  available for iSCSI.  If you mean between the Device Driver (Mini Port
  Driver) and the RNIC, that will probably be the RNIC vendors interface if
  they have implemented all or part of the iSER or Data Mover in the RNIC
  itself, or the RNIC vendor's interfaces to their version of the verbs (at
  least until the OS implements its own RDMA interfaces that implement the
  RDMA verbs).
 
 
 
  I believe that, over time, most OSs will have generic RDMA interfaces, which
  can be use by all certified RNIC hardware, and any application (user space
  or kernel space); in that case the iSER module will probably interface to
  that OS's RDMA interfaces.
 
 
 
 
  .
 
  .
 
  .
 
  John L Hufferd
 
  Sr. Executive Director of Technology
 
  Brocade Communications Systems, Inc
 
  [EMAIL PROTECTED]
 
  Office Phone: (408) 333-5244; eFAX: (408) 904-4688
 
  Alt Office Phone: (408) 997-6136; Cell: (408) 627-9606
 
 
  
 
 
  From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Eddy
  Quicksall
  Sent: Friday, January 06, 2006 11:42 AM
  To: ips@ietf.org
  Subject: [Ips] iSER API's
 
 
 
 
  Is there any work afoot to design some standard iSER API's?
 
 
 
 
 
  Eddy
  ___
  openib-general mailing list
  openib-general@openib.org
  http://openib.org/mailman/listinfo/openib-general
 
  To unsubscribe, please visit
  http://openib.org/mailman/listinfo/openib-general
 
 
 ___
 openib-general mailing list
 openib-general@openib.org
 http://openib.org/mailman/listinfo/openib-general
 
 To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


RE: [openib-general] Re: Re[PATCH] Opensm - fix forosm_sa_portinfo_record.c

2006-01-10 Thread Yael Kalka
Hi Hal,
You are correct.
Thanks,
Yael

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of Hal Rosenstock
Sent: Monday, January 09, 2006 5:39 PM
To: Yael Kalka
Cc: openib-general@openib.org
Subject: [openib-general] Re: Re[PATCH] Opensm - fix
forosm_sa_portinfo_record.c


Hi Yael,

On Mon, 2006-01-09 at 07:29, Yael Kalka wrote:
 Hi Hal,
 
 During some tests we've notices that not all compmask fields are
 properly checked and compared in the portInfo record query.
 Attached is a patch with the missing checks, and addition of some
 set/get relevant functions added to the ib_types.h as well.

Just a couple of minor (nit) comments below.

-- Hal

 Thanks,
 Yael
 
 Signed-off-by:  Yael Kalka [EMAIL PROTECTED]
 
 Index: include/iba/ib_types.h
 ===
 --- include/iba/ib_types.h(revision 4809)
 +++ include/iba/ib_types.h(working copy)
 @@ -3960,6 +3960,33 @@ ib_port_info_get_vl_cap(
  *
  * SEE ALSO
  */
 +/f* IBA Base: Types/ib_port_info_get_init_type
 +* NAME
 +*ib_port_info_get_init_type
 +*
 +* DESCRIPTION
 +*Gets the VL Capability of a port.
   ^
   init type
 +*
 +* SYNOPSIS
 +*/
 +static inline uint8_t
 +ib_port_info_get_init_type(
 + IN const ib_port_info_t* const p_pi)
 +{
 + return(p_pi-vl_cap  0x0F);

Should this be:
return (uint8_t) (p_pi-vl_cap  0x0F);

 +}
 +/*
 +* PARAMETERS
 +*p_pi
 +*[in] Pointer to a PortInfo attribute.
 +*
 +* RETURN VALUES
 +*InitType field
 +*
 +* NOTES
 +*
 +* SEE ALSO
 +*/

[snip...]

-- Hal

___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general


[openib-general] RE: Re[PATCH] Opensm - clean exit on ^C

2006-01-10 Thread Yael Kalka
Hi Hal,
In revision 3526 you've added a patch that opensm will not handle SIGINT.
This patch is an addition to that patch. If OpenSM doesn't handle SIGINT,
then none of its threads should handle it either.
Yael


-Original Message-
From: Hal Rosenstock [mailto:[EMAIL PROTECTED]
Sent: Monday, January 09, 2006 4:56 PM
To: Yael Kalka
Cc: openib-general@openib.org; Eitan Zahavi
Subject: Re: Re[PATCH] Opensm - clean exit on ^C


Hi Yael,

On Thu, 2006-01-05 at 07:16, Yael Kalka wrote:
 Hi Hal,
 
 I've noticed that sometimes when killing OpenSM using ^C not all
 threads are killed.
 The reason for that is that there are threads that mask the
 signalling, and when removing the ^C handling from OpenSM, these
 threads still mask the signalling and stay alive as a result.
 The following patch fixes this.

Is there one other piece to this ? Doesn't osm_opensm.c need to be
modified to handle SIGINT for OSM_VENDOR_INTF_OPENIB ? Thanks.

void
osm_reg_sig_handler(
   IN osm_opensm_t * const p_osm )
{
   __p_osm_to_signal = p_osm;
#ifndef OSM_VENDOR_INTF_OPENIB 
   cl_reg_sig_hdl( SIGINT, __sig_handler );
#endif

-- Hal


 Thanks,
 Yael
 
 Signed-off-by:  Yael Kalka [EMAIL PROTECTED]
 
 Index: include/complib/cl_signal_osd.h
 ===
 --- include/complib/cl_signal_osd.h   (revision 4760)
 +++ include/complib/cl_signal_osd.h   (working copy)
 @@ -148,12 +148,14 @@ cl_sig_mask_sigint(void)
   #ifdef __WIN__
/* we do not mask kill */
   #else   
 +#ifndef OSM_VENDOR_INTF_OPENIB 
 sigset_t sigs;

 sigemptyset(sigs);
 sigaddset(sigs, SIGINT);
 pthread_sigmask(SIG_BLOCK, sigs, NULL);
 - #endif
 +#endif /* OSM_VENDOR_INTF_OPENIB */
 +#endif /* __WIN__ */
  }
  /*
  */
 Index: libvendor/osm_vendor_ibumad.c
 ===
 --- libvendor/osm_vendor_ibumad.c (revision 4760)
 +++ libvendor/osm_vendor_ibumad.c (working copy)
 @@ -244,10 +244,6 @@ umad_receiver(void *p_ptr)
  
   OSM_LOG_ENTER( p_ur-p_log, umad_receiver );
  
 - sigemptyset(sigs);
 - sigaddset(sigs, SIGINT);
 - pthread_sigmask(SIG_BLOCK, sigs, NULL);
 -
   for (;;) {
   if (!umad 
   !(umad = umad_alloc(1, umad_size() + MAD_BLOCK_SIZE))) {
 
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general