[openib-general] ofa_1_2_kernel 20070208-0200 daily build status

2007-02-08 Thread vlad
This email was generated automatically, please do not reply


Common build parameters:  --with-ipoib-mod --with-sdp-mod --with-srp-mod 
--with-user_mad-mod --with-user_access-mod --with-mthca-mod --with-core-mod 
--with-addr_trans-mod --with-cxgb3-mod 

Passed:
Passed on i686 with 2.6.15-23-server
Passed on i686 with linux-2.6.18
Passed on i686 with linux-2.6.19
Passed on i686 with linux-2.6.15
Passed on i686 with linux-2.6.17
Passed on i686 with linux-2.6.13
Passed on i686 with linux-2.6.14
Passed on i686 with linux-2.6.16
Passed on i686 with linux-2.6.12
Passed on powerpc with linux-2.6.19
Passed on x86_64 with linux-2.6.19
Passed on x86_64 with linux-2.6.17
Passed on powerpc with linux-2.6.17
Passed on x86_64 with linux-2.6.18
Passed on powerpc with linux-2.6.18
Passed on x86_64 with linux-2.6.15
Passed on x86_64 with linux-2.6.14
Passed on x86_64 with linux-2.6.16
Passed on x86_64 with linux-2.6.13
Passed on x86_64 with linux-2.6.12
Passed on ppc64 with linux-2.6.19
Passed on ia64 with linux-2.6.19
Passed on powerpc with linux-2.6.16
Passed on powerpc with linux-2.6.13
Passed on powerpc with linux-2.6.12
Passed on ppc64 with linux-2.6.16
Passed on ppc64 with linux-2.6.12
Passed on powerpc with linux-2.6.15
Passed on ppc64 with linux-2.6.17
Passed on ppc64 with linux-2.6.14
Passed on ia64 with linux-2.6.13
Passed on ppc64 with linux-2.6.18
Passed on ia64 with linux-2.6.12
Passed on ia64 with linux-2.6.14
Passed on ia64 with linux-2.6.15
Passed on ppc64 with linux-2.6.13
Passed on ia64 with linux-2.6.18
Passed on powerpc with linux-2.6.14
Passed on ia64 with linux-2.6.17
Passed on ppc64 with linux-2.6.15
Passed on ia64 with linux-2.6.16

Failed:
Build failed on ia64 with linux-2.6.16.21-0.8-default
Log:
/home/vlad/tmp/ofa_1_2_kernel-20070208-0200_linux-2.6.16.21-0.8-default_ia64_check/drivers/infiniband/core/addr.c:380:
 error: implicit declaration of function ‘register_netevent_notifier’
/home/vlad/tmp/ofa_1_2_kernel-20070208-0200_linux-2.6.16.21-0.8-default_ia64_check/drivers/infiniband/core/addr.c:
 In function ‘addr_cleanup’:
/home/vlad/tmp/ofa_1_2_kernel-20070208-0200_linux-2.6.16.21-0.8-default_ia64_check/drivers/infiniband/core/addr.c:386:
 error: implicit declaration of function ‘unregister_netevent_notifier’
make[4]: *** 
[/home/vlad/tmp/ofa_1_2_kernel-20070208-0200_linux-2.6.16.21-0.8-default_ia64_check/drivers/infiniband/core/addr.o]
 Error 1
make[3]: *** 
[/home/vlad/tmp/ofa_1_2_kernel-20070208-0200_linux-2.6.16.21-0.8-default_ia64_check/drivers/infiniband/core]
 Error 2
make[2]: *** 
[/home/vlad/tmp/ofa_1_2_kernel-20070208-0200_linux-2.6.16.21-0.8-default_ia64_check/drivers/infiniband]
 Error 2
make[1]: *** 
[_module_/home/vlad/tmp/ofa_1_2_kernel-20070208-0200_linux-2.6.16.21-0.8-default_ia64_check]
 Error 2
make[1]: Leaving directory 
`/home/vlad/kernel.org/ia64/linux-2.6.16.21-0.8-default'
make: *** [kernel] Error 2
--

___
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] bug in netpipe

2007-02-08 Thread Ami Perlmutter
Hi
I've been running netpipe over Infiniband's SDP and uncovered a race
when using the -r option.
The problem is when both sides close their sockets, the listening socket
is closed last, which allows a faster
client to try to connect to it before it closes. When this happens, next
time the client tries to use the socket it gets
a connection reset error.
___
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] OpenSM/osm_ucast_lash.c: In osm_get_lash_sl, fix SL when CA ports on same switch

2007-02-08 Thread Hal Rosenstock
OpenSM/osm_ucast_lash.c: In osm_get_lash_sl, fix SL when CA ports on same switch

This change resolves an issue with strange SL assignment when
two HCAs communicate with other and are on the same switch.
Since LASH is switch to switch routing, the get_lash_sl
function was casting  (the value assigned to the
variable NONE) to be a uint8_t when asked for an SL assignment
in this case. This change resolves this issue.

Signed-off-by: Thomas Sødring [EMAIL PROTECTED]
Signed-off-by: Hal Rosenstock [EMAIL PROTECTED]

diff --git a/osm/opensm/osm_ucast_lash.c b/osm/opensm/osm_ucast_lash.c
index 5dfe068..e5f751c 100644
--- a/osm/opensm/osm_ucast_lash.c
+++ b/osm/opensm/osm_ucast_lash.c
@@ -1468,6 +1468,7 @@ uint8_t osm_get_lash_sl(osm_opensm_t *p_
osm_port_t *p_src_port, osm_port_t *p_dst_port)
 {
unsigned dst_id;
+   unsigned src_id;
osm_switch_t *p_sw;
 
if (p_osm-routing_engine.ucast_build_fwd_tables != lash_process)
@@ -1482,6 +1483,10 @@ uint8_t osm_get_lash_sl(osm_opensm_t *p_
if (!p_sw || !p_sw-priv)
return OSM_DEFAULT_SL;
 
+   src_id = get_lash_id(p_sw);
+   if (src_id == dst_id) 
+   return OSM_DEFAULT_SL;
+
return (uint8_t)((switch_t *)p_sw-priv)-routing_table[dst_id].lane;
 }
 


___
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] please pull for 2.6.21: fix + add IB multicast support

2007-02-08 Thread Or Gerlitz
Or Gerlitz wrote:
 Sean Hefty wrote:

 Sean Hefty (3):
rdma_cm: Increment port number after close to avoid re-use.
ib_sa: track multicast join/leave requests
rdma_cm: add multicast communication support

 Assuming that you haven't look at this yet, I updated the ib_sa patch 
 above to shorten the workqueue name, plus added a fourth patch to 
 shorten the workqueue names for ib_addr and rdma_cm.  E.g. ib_mcast_wq 
 became ib_mcast.

 Roland,

 We are working (developing and testing) with a userspace rdma cm based 
 multicast app over this code during the last two months and are very 
 satisfied with it. The testing included IPoIB, the user space app and 
 multicast interoperability between them.

Roland,

Can you comment on the status of this merge request?

thanks,

Or.


___
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] Open MPI rpmbuild fails in OFED-1.2

2007-02-08 Thread Michael S. Tsirkin
 Quoting Jeff Squyres [EMAIL PROTECTED]:
 Subject: Re: Open MPI rpmbuild fails in OFED-1.2
 
 On Feb 7, 2007, at 2:49 PM, Michael S. Tsirkin wrote:
 
  My $0.02: This is another in a growing list of issues reflecting the
  whole build everything in DESTDIR is a problematic approach.
 
  I don't know much about RPM, and I am not exactly sure why are
  our source RPMs so complicated.
 
 It's a combination of two things:
 
 1) similar to what you said below, we have lots of software packages  
 that are all dependent upon each other
 -- this leads to a conglomeration of rpath's and shared library  
 dependencies that are incorrect
 
 2) we're trying to *use* the software when it is installed in the  
 DESTDIR
 -- this means that you have to put special-case in the software so  
 that they look for support files in both the DESTDIR *and* the final  
 installation directory

How do you mean, use?

Hmm. I guess my question is - this works fine when I run OFED's
configure script, why is SRPM so much more difficult?

-- 
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] more comments on cxgb3

2007-02-08 Thread Steve Wise
On Thu, 2007-02-08 at 08:40 +0200, Michael S. Tsirkin wrote:
 OK, so I looked at cxgb3 some more.

Thanks!

 To summarise my previous comments, I think the cxio hal layer needs to go to
 make the code readable - if I understand correctly it is there for historical
 reasons only.
 

I can do this but its low on the list of todos.


 I started looking at userspace/kernel interaction, and then
 went over to other code under cxgb3 (but not core/).
 
 - Consider a user that does e.g. create QP, but never calls mmap.
   Is there some code that will clean out the unclamed mmap object?
   I couldn't find it, and iwch_dealloc_ucontext does not seem to
   do anything with it.
 

This is a bug.  I've got a fix for it too.  

 - Passing physical address to userspace and back looks suspicios.
   Especially this:
 uresp.physaddr = virt_to_phys(chp-cq.queue);
   Could you elaborate on the design here? What are these phy addresses
   and how come userspace needs to know the phy address?
   You are not doing DMA by this address, by any chance?
 

No, Its not used for DMA by the HW.  The physaddr is passed up to the
user, and the user then mmaps() using that as the offset.

I took this code from the ipath driver.  It has been pointed out to me
that this is broken for 32b userspace on a 64 kernel because mmap2()
cannot pass down 64 bits.  So I need to rework this code.

 - It seems that by passing in huge resource sizes, userspace will be able to
   drink up unlimited amounts of kernel memory.
   mthca handles this by using the mlock rlimit, should something be done here
   as well?

Hmm.  That's a good point.  I'll put this on the todo as well.  So mthca
adds to process's rlimit value as things are allocated out of kernel
memory (or maybe even anything that gets pinned)?

  
 A couple of comments on PDBG macro.
 - I'd like to suggest following the practice of prefixing macro names with 
 module name
   (same goes for functions like get_mhp really) - unless they are local to 
 file.
 
 - You are using __FUNCTION__ a lot - it might be to just to kill it,
   messages are unique so you'll be able to locate the msg source anyway,
   save some kernel text and logs will be shorter. In any case I think
   __func__ is the recommended gcc way to get the name currently.
 
 - comment near pr_debug definition in include/linux/kernel.h says:
   /* If you are writing a driver, please use dev_dbg instead */
   so it might be a good idea for PDBG to follow this rule.
 
 - log messages do not look very informative to me.
   I also think they are a bit too many of them currently.
   For example, I do not think it is a good idea to print
   the kernel pointers out.
 
   For example, in code like the following:
   mhp = get_mhp(rhp, (sg_list[i].lkey)  8);
   if (!mhp) {
   PDBG(%s %d\n, __FUNCTION__, __LINE__);
   return -EIO;
   }
 
   might be better to say 
   MR key XXX does not exist. Exiting..
   -EIO also looks like a strange error code to return here, does it not?
   Maybe something like EINVAL would be more appropriate?
 

I'll take a todo to clean up the debug stuff. 

 - I wonder about the names like get_mhp - what does mhp mean?
 static inline struct iwch_mr *get_mhp(struct iwch_dev *rhp, u32 mmid)
 {
 return idr_find(rhp-mmidr, mmid);
 }
 

Memory Handle Pointer.


 Looks like it looks up an mr. Is that right? Maybe the name shouldbe changed
 to convey this meaning.
 
 - In the following code, what does missing pdid check mean?
 /*
  * TBD: this is going to be moved to firmware. Missing pdid/qpid check for 
 now.
  */
 This sounds interesting.
 Does this mean the code does not validate the PD currently?
 

I need firmware support for this.  It will be done asap and I can remove
this code entirely.

 I have the same question for:
 /* TBD: check perms */
 in iwch_bind_mw.
 
 BTW, does TBD stand for To Be Done here?

Yes.

 Do you mean TODO really?
 
 - iwch_sgl2pbl_map is used in several places, and seems a bit too big to be 
 inline
 
 Well, it's time to go do my day job now :)
 
 Hope this helps,
 

Thanks again Michael!

Steve.



___
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] IB/ipoib get net_device from ipoib_neigh instead of linux neighbour

2007-02-08 Thread Moni Shoua
Michael S. Tsirkin wrote:
 Quoting Moni Shoua [EMAIL PROTECTED]:
 Subject: Re: [PATCH] IB/ipoib get net_device from ipoib_neigh instead of 
 linux neighbour


 Another concern: assume that one device goes away (e.g. hotplug).
 It seems that neighbours whose dev field point to another device, will not 
 be destroyed.
 Correct?
 I agree.

 Therefore in your design, it seems that to_ipoib_neigh()-dev
 will get us a pointer to device that has been removed already.

 I agree that this is a problem.
 
 I think we can solve this if we track all ipoib neighbours, like we do for 
 old kernels,
 and then flush ipoib neighbours on any hotplug event.
 Roland, does this sound too awful?
 
 It think it would be best to prevent an IPoIB device
 from disappearing or from ib_ipoib from being unloaded as long as IPoIB
 device is a slave. Unfortunately, I don't see how this can be done just
 by fixing something in bonding or IPoIB. 
 
 So hotplug is blocked potentially forever?
 This does not sound good.
OK, so I'm dropping this thought.
 
 However, any slave knows he has a master (dev-master). 
 What do you think about a solution where IPoIB first tries to clean up the
 neighbours that belong to it's master before deleting the IPoIB device?
 
 How?
Let me know what do you think about that. I hope this makes sense.
in IPoIB, before calling unregister_netdev do
for each kernel neighbour n
if  n-dev == ib_dev-master
delete n

Michael, as I see it we have to deal with 2 cases.
1. IPoIB device is deleted (unregister_netdev) - IPoIB netdev in not in the 
kernel's address space.
we have to make sure that no one holds a pointer to it after it is 
deleted.
2 ib_ipoib module is unloaded (modprobe -r) - the ipoib_neigh_destructor is not 
in the kernel's address space.
we have to make sure no one calls to it after the module is unloaded.
I think that if nothing prevents the execution of the code above it serves 
both cases.
Do you see any problem with that?
Do I have to maintain my own list of neighbours or use the kernel's arp table 
for that?

I am trying to study the neighbour cleanup function and do something like that 
but
I would be happy to learn from others as well.


 Furthermore, bond_setup_by_slave is called only for non
 Ethernet devices (we consider to change the logic to called only for
 IPoIB devices just for safety).
 Why is this necessary, BTW?

 If we don't do that, we get a memory leak because the neigh destructor will
 never be called for non IPoIB devices although they carry ipoib_neigh
 with them.
 
 How can this happen? If it does, I think we are back to where we started:
 to_ipoib_neigh is broken for non-IPoIB device.
 I thought you said only devices of the same type can be paired?
 
 
The scenario is:
1. kernel allocates a neighbour structure for bond0, puts it on a skb and 
passed it to bond xmit function.
2. bond0 passes the skb to ipoib
3. ipoib allocates ipoib_neigh and hangs it on linux neighbour. 
4. a while after that, the kernel wants to destroy the neighbour (cleanup) but 
doesn't call ipoib_neigh_destructor because it the neigh setup registered the 
destructor for ibX device.





___
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] sharing qp between user and kernel

2007-02-08 Thread Pete Wyckoff
[EMAIL PROTECTED] wrote on Wed, 07 Feb 2007 15:50 -0800:
 Pete Before I dig into this anymore, do you expect this to work?
 Pete Are there fundamental problems with QP sharing between user
 Pete and kernel?  It would sure be nice not to have to stick the
 Pete connection management aspects into the kernel.
 
 No, I wouldn't expect this to work.  At first glance at least, yes,
 there are fundamental problems.  Sharing a QP between user and
 kernelspace, where userspace is doing full kernel bypass (as eg mthca
 does -- there are NO system calls when doing post work request, poll
 CQ and request CQ notification operations), seems like a huge
 problem.  I don't see any way that the kernel can keep a consistent
 view of the QP state unless userspace has to call into the kernel for
 every operation, which would kill performance.

My hope was not to allow full QP sharing between user and kernel,
but just a limited interface to send this kernel data now.  It
requires that the kernel register some physical memory, and submit
the work requests.  Perhaps the kernel can invoke the equivalent of
the userspace post function instead of trying to use the kernel API
for sending.

Thanks to all for the comments.  We'll keep working with non-bypass
devices to see if the approach offers any advantages first.

-- Pete

___
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] IB/ipoib_cm: fix up issues from code review

2007-02-08 Thread Michael S. Tsirkin
The following lightly tested patch addresses Roland's comments on IPoIB CM.
Applies on top of PATCHv6:

- Randomise RQ PSN
- Fix for modular IPv6
- MTU endian-ness fix for ICMPs
- Cosmetics

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

---

Roland, do you want me to report the full fixed-up patch instead?

Pls let me know when IPoIB CM is in for-2.6.21,
I'll switch to that for my testing.

diff --git a/drivers/infiniband/ulp/ipoib/Kconfig 
b/drivers/infiniband/ulp/ipoib/Kconfig
index 0ffca11..af78ccc 100644
--- a/drivers/infiniband/ulp/ipoib/Kconfig
+++ b/drivers/infiniband/ulp/ipoib/Kconfig
@@ -1,6 +1,6 @@
 config INFINIBAND_IPOIB
tristate IP-over-InfiniBand
-   depends on INFINIBAND  NETDEVICES  INET
+   depends on INFINIBAND  NETDEVICES  INET  (IPV6 || IPV6=n)
---help---
  Support for the IP-over-InfiniBand protocol (IPoIB). This
  transports IP packets over InfiniBand so you can use your IB
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h 
b/drivers/infiniband/ulp/ipoib/ipoib.h
index 8082d50..eb885ee 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -127,7 +127,6 @@ struct ipoib_tx_buf {
u64 mapping;
 };
 
-#ifdef CONFIG_INFINIBAND_IPOIB_CM
 struct ib_cm_id;
 
 struct ipoib_cm_data {
@@ -181,7 +180,6 @@ struct ipoib_cm_dev_priv {
struct ib_recv_wr   rx_wr;
 };
 
-#endif
 /*
  * Device private locking: tx_lock protects members used in TX fast
  * path (and we use LLTX so upper layers don't do extra locking).
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c 
b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index e7e7cc0..8ee6f06 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -37,7 +37,7 @@
 #include net/dst.h
 #include net/icmp.h
 
-#ifdef CONFIG_IPV6
+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
 #include linux/icmpv6.h
 #endif
 
@@ -170,7 +170,8 @@ static struct ib_qp *ipoib_cm_create_rx_qp(struct 
net_device *dev,
 }
 
 static int ipoib_cm_modify_rx_qp(struct net_device *dev,
- struct ib_cm_id *cm_id, struct ib_qp *qp)
+ struct ib_cm_id *cm_id, struct ib_qp *qp,
+ unsigned psn)
 {
struct ipoib_dev_priv *priv = netdev_priv(dev);
struct ib_qp_attr qp_attr;
@@ -193,7 +194,7 @@ static int ipoib_cm_modify_rx_qp(struct net_device *dev,
ipoib_warn(priv, failed to init QP attr for RTR: %d\n, ret);
return ret;
}
-   qp_attr.rq_psn = 0 /* FIXME */;
+   qp_attr.rq_psn = psn;
ret = ib_modify_qp(qp, qp_attr, qp_attr_mask);
if (ret) {
ipoib_warn(priv, failed to modify QP to RTR: %d\n, ret);
@@ -203,7 +204,8 @@ static int ipoib_cm_modify_rx_qp(struct net_device *dev,
 }
 
 static int ipoib_cm_send_rep(struct net_device *dev, struct ib_cm_id *cm_id,
-struct ib_qp *qp, struct ib_cm_req_event_param 
*req)
+struct ib_qp *qp, struct ib_cm_req_event_param 
*req,
+unsigned psn)
 {
struct ipoib_dev_priv *priv = netdev_priv(dev);
struct ipoib_cm_data data = {};
@@ -219,7 +221,7 @@ static int ipoib_cm_send_rep(struct net_device *dev, struct 
ib_cm_id *cm_id,
rep.target_ack_delay = 20; /* FIXME */
rep.srq = 1;
rep.qp_num = qp-qp_num;
-   rep.starting_psn = 0 /* FIXME */;
+   rep.starting_psn = psn;
return ib_send_cm_rep(cm_id, rep);
 }
 
@@ -229,6 +231,7 @@ static int ipoib_cm_req_handler(struct ib_cm_id *cm_id, 
struct ib_cm_event *even
struct ipoib_dev_priv *priv = netdev_priv(dev);
struct ipoib_cm_rx *p;
unsigned long flags;
+   unsigned psn;
int ret;
 
ipoib_dbg(priv, REQ arrived\n);
@@ -243,11 +246,12 @@ static int ipoib_cm_req_handler(struct ib_cm_id *cm_id, 
struct ib_cm_event *even
goto err_qp;
}
 
-   ret = ipoib_cm_modify_rx_qp(dev, cm_id, p-qp);
+   psn = random32()  0xff;
+   ret = ipoib_cm_modify_rx_qp(dev, cm_id, p-qp, psn);
if (ret)
goto err_modify;
 
-   ret = ipoib_cm_send_rep(dev, cm_id, p-qp, event-param.req_rcvd);
+   ret = ipoib_cm_send_rep(dev, cm_id, p-qp, event-param.req_rcvd, psn);
if (ret) {
ipoib_warn(priv, failed to send REP: %d\n, ret);
goto err_rep;
@@ -742,7 +746,7 @@ static int ipoib_cm_send_req(struct net_device *dev,
req.retry_count   = 0; /* RFC draft warns against retries */
req.rnr_retry_count   = 0; /* RFC draft warns against retries */
req.max_cm_retries= 15;
-   req.srq   = 15;
+   req.srq   = 1;
return ib_send_cm_req(id, req);
 }
 
@@ -1041,7 +1045,7 @@ static void ipoib_cm_skb_reap(struct work_struct *work)
   

Re: [openib-general] sharing qp between user and kernel

2007-02-08 Thread Steve Wise
On Thu, 2007-02-08 at 10:24 -0500, Pete Wyckoff wrote:
 [EMAIL PROTECTED] wrote on Wed, 07 Feb 2007 15:50 -0800:
  Pete Before I dig into this anymore, do you expect this to work?
  Pete Are there fundamental problems with QP sharing between user
  Pete and kernel?  It would sure be nice not to have to stick the
  Pete connection management aspects into the kernel.
  
  No, I wouldn't expect this to work.  At first glance at least, yes,
  there are fundamental problems.  Sharing a QP between user and
  kernelspace, where userspace is doing full kernel bypass (as eg mthca
  does -- there are NO system calls when doing post work request, poll
  CQ and request CQ notification operations), seems like a huge
  problem.  I don't see any way that the kernel can keep a consistent
  view of the QP state unless userspace has to call into the kernel for
  every operation, which would kill performance.
 
 My hope was not to allow full QP sharing between user and kernel,
 but just a limited interface to send this kernel data now.  It
 requires that the kernel register some physical memory, and submit
 the work requests.  Perhaps the kernel can invoke the equivalent of
 the userspace post function instead of trying to use the kernel API
 for sending.
 

You could map the kernel data into the user process and then have the
user process post the WR.  But the user process would have to have that
memory registered as part of a MR to post it.  It could be done though.
So basically instead of sharing QP, give your kernel module access
memory from a registered MR.  The kernel module can produce the data in
that memory then tell the user process to post the WR...
 

Steve


___
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] more comments on cxgb3

2007-02-08 Thread Michael S. Tsirkin
  - It seems that by passing in huge resource sizes, userspace will be able to
drink up unlimited amounts of kernel memory.
mthca handles this by using the mlock rlimit, should something be done 
  here
as well?
 
 Hmm.  That's a good point.  I'll put this on the todo as well.  So mthca
 adds to process's rlimit value as things are allocated out of kernel
 memory (or maybe even anything that gets pinned)?

Yes. The code is actually in uverbs core, mthca uses that.

  - I wonder about the names like get_mhp - what does mhp mean?
  static inline struct iwch_mr *get_mhp(struct iwch_dev *rhp, u32 mmid)
  {
  return idr_find(rhp-mmidr, mmid);
  }
  
 
 Memory Handle Pointer.

hmm, what's a Handle? Maybe a better name can be found.

-- 
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] dapl broken for iWARP

2007-02-08 Thread Kanevsky, Arkady
That is correct.
I am working with Krishna on it.
Expect patches soon.

By the way the problem is not DAPL specific
and so is a proposed solution.

There are 3 aspects of the solution.
One is APIs. We suggest that we do not augment these.
That is a connection requestor sets its QP
RDMA ORD and IRD.
When connection is established user can check the QP RDMA ORD and IRD
to see what he has now to use over the connection.
We may consider to extend QP attributes to support transport specific
parameters passing in the future.
For example, iWARP MPA CRC request.

Second is the semantic that CM provides.
The proposal is to match IBCM semantic.
That is CM guarantee that local IRD is = remote ORD.
This guarantees that incoming RDMA Read requests will not overwhelm
the QP RDMA Read capabilities.
Again there is not changes to IBCM only to IWCM.
Notice that as part of this IWCM will pass down to driver and extract
from driver
needed info.

The final part is iWARP CM extension to exchange RDMA ORD, IRD.
This is similar to IBTA Annex for IP Addressing.
The harder part that this will eventually require IETF MPA spec
extension,
and the fact that MPA protocol is implemented in RNIC HW by many
vendors,
and hence can not be done by IWCM itself.

Thanks,

Arkady Kanevsky   email: [EMAIL PROTECTED]
Network Appliance Inc.   phone: 781-768-5395
1601 Trapelo Rd. - Suite 16.Fax: 781-895-1195
Waltham, MA 02451   central phone: 781-768-5300
 

 -Original Message-
 From: Steve Wise [mailto:[EMAIL PROTECTED] 
 Sent: Wednesday, February 07, 2007 6:12 PM
 To: Arlin Davis
 Cc: openib-general
 Subject: Re: [openib-general] dapl broken for iWARP
 
 On Wed, 2007-02-07 at 15:05 -0800, Arlin Davis wrote:
  Steve Wise wrote:
  
  On Wed, 2007-02-07 at 14:02 -0600, Steve Wise wrote:

  
  Arlin,
  
  The OFED dapl code is assuming the responder_resources and 
  initiator_depth passed up on a connection request event 
 are from the 
  remote peer.  This doesn't happen for iWARP.  In the 
 current iWARP 
  specifications, its up to the application to exchange this 
  information somehow. So these are defaulting to 0 on the 
 server side 
  of any dapl connection over iWARP.
  
  This is a fairly recent change, I think.  We need to come up with 
  some way to deal with this for OFED 1.2 IMO.
  
  
  Yes, this was changed recently to sync up with the rdma_cm changes 
  that exposed the values.
  
  
  
  
  The IWCM could set these to the device max values for instance.

  
  That would work fine as long as you know the remote 
 settings will be 
  equal or better. The provider just sets the min of local device max 
  values and the remote values provided with the request.
  
 
 I know Krishna Kumar is working on a solution for exchanging 
 this info in private data so the IWCM can do the right 
 thing.  Stay tuned for a patch series to review for this.  
 But this functionality is definitely post OFED-1.2.  
 
 
 So for the OFED-1.2, I will set these to the device max in the IWCM.
 Assuming the other side is OFED 1.2 DAPL, then it will work fine.
 
 Steve.
 
 
 
 ___
 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] more comments on cxgb3

2007-02-08 Thread Steve Wise
 - Consider a user that does e.g. create QP, but never calls mmap.
   Is there some code that will clean out the unclamed mmap object?
   I couldn't find it, and iwch_dealloc_ucontext does not seem to
   do anything with it.

BTW: Here is my fix for this.

-

Clean up pending mmaps on ucontext deallocation.

From: Steve Wise [EMAIL PROTECTED]

Free all pending mmap structs when the ucontext is deallocated.

Signed-off-by: Steve Wise [EMAIL PROTECTED]
---

 drivers/infiniband/hw/cxgb3/iwch_provider.c |1 +
 drivers/infiniband/hw/cxgb3/iwch_provider.h |   15 +++
 2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c 
b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index db2b0a8..98568ee 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -99,6 +99,7 @@ static int iwch_dealloc_ucontext(struct 
struct iwch_dev *rhp = to_iwch_dev(context-device);
struct iwch_ucontext *ucontext = to_iwch_ucontext(context);
PDBG(%s context %p\n, __FUNCTION__, context);
+   free_mmaps(ucontext);
cxio_release_ucontext(rhp-rdev, ucontext-uctx);
kfree(ucontext);
return 0;
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.h 
b/drivers/infiniband/hw/cxgb3/iwch_provider.h
index 1ede8a7..c8c07ee 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.h
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.h
@@ -199,6 +199,21 @@ struct iwch_mm_entry {
unsigned len;
 };
 
+static inline void free_mmaps(struct iwch_ucontext *ucontext)
+{
+   struct list_head *pos, *nxt;
+   struct iwch_mm_entry *mm;
+
+   spin_lock(ucontext-mmap_lock);
+   list_for_each_safe(pos, nxt, ucontext-mmaps) {
+   mm = list_entry(pos, struct iwch_mm_entry, entry);
+   list_del(mm-entry);
+   kfree(mm);
+   }
+   spin_unlock(ucontext-mmap_lock);
+   return;
+}
+
 static inline struct iwch_mm_entry *remove_mmap(struct iwch_ucontext *ucontext,
u64 addr, unsigned len)
 {



___
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] [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: syslog() fixes]]

2007-02-08 Thread Tzachi Dar
The windows open IB has decided on using a BSD only license. 
The common implementation of pthreads as far as I know is LGPL, which
means that it can not be used in open IB.

The only two ways that I see around this are 1) Change the license of
open IB windows which might be a complicated thing. 2) Find an
implementation of pthreads that is BSD.

Thanks
Tzachi

 -Original Message-
 From: Sasha Khapyorsky [mailto:[EMAIL PROTECTED] 
 Sent: Thursday, February 08, 2007 7:46 PM
 To: Tzachi Dar; Yossi Leybovich
 Cc: Yevgeny Kliteynik; OPENIB; Michael S. Tsirkin; Hal Rosenstock
 Subject: Re: [Fwd: Re: win related [was: Re: [PATCH 1/2] 
 opensm: sigusr1: syslog() fixes]]
 
 On 11:24 Sun 21 Jan , Yevgeny Kliteynik wrote:
  Tzachi, Yossi, please join the thread.
  What do you think about distributing a copy of the pthread DLL with 
  opensm?
 
 Any news here? Thanks.
 
 Sasha
 
  
  -- Yevgeny.
  
   Original Message 
  Subject: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: 
  syslog() fixes]
  Date: Fri, 19 Jan 2007 00:20:32 +0200
  From: Sasha Khapyorsky [EMAIL PROTECTED]
  To: Michael S. Tsirkin [EMAIL PROTECTED]
  CC: Yevgeny Kliteynik [EMAIL PROTECTED],
 OPENIB openib-general@openib.org
  References: [EMAIL PROTECTED] 
  [EMAIL PROTECTED]
  
  On 23:50 Thu 18 Jan , Michael S. Tsirkin wrote:
Quoting Sasha Khapyorsky [EMAIL PROTECTED]:
Subject: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: 
syslog() fixes]

On 07:00 Thu 18 Jan , Michael S. Tsirkin wrote:
  What about pure opensource - 
  http://sourceware.org/pthreads-win32/? It is licensed under 
  LGPL, I see on the net many positive reports about 
 stability and usability.
 
 I used it to do a windows port of linux complib at some point 
 and opensm seemed to work fine with it. What it was 
 lacking at 
 that point was support for 64 bit applications, and for some 
 reason (which is still unclear to me) there was a 
 strong desire to run opensm in 64 bit mode.
 Seems to have been fixed now, BTW.

So this seems to be good option for OpenSM on Windows. Right?
   
   No idea. Distributing a copy of the pthread DLL with 
 opensm does not 
   look like a problem. But is it worth it?
  
  Sure, it makes windows porting much more transparent and 
 let us to use 
  standard *nix stuff w/out #ifndef WIN32. Other (generic) benefit is 
  that posix is more standard and powerful than wrappers like complib.
  
  Sasha
  
 

___
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] Problem is routing CM REQ was: Use a GRH when appropriate for unicast packets

2007-02-08 Thread Jason Gunthorpe
On Thu, Feb 08, 2007 at 10:23:11AM -0800, Sean Hefty wrote:
 The active side clearly cannot learn what the SLID of the passive
 side's router should be.
 
 We don't want to have the routers snoop and alter CM GMPs.
 
 The passive side cannot use information from the LRH to get the router
 LID since the LRH may not be reversible.
 
 The only option seems to be to have the passive side do a path record
 query on a SGID in the CM REQ...
 
 This is a spec problem unfortunately.
 
 
 Yes and I would expect that this would be changed.
 
 Looking at the problem more, I think that the issue extends to the remote 
 port LID as well.  My expectation with a local path record query is that 
 the SLID is the local port, and the DLID is the local router.  This should 
 be sufficient for one-way UD traffic, but for connected traffic we still 
 need to discover the remote router and remote port LIDs.

Hum, you mean to meet the LID validation rules of 9.6.1.5? That is a
huge PITA..

[IMHO, 9.6.1.5 C9-54 is a mistake, if there is a GRH then the LRH.SLID
 should not be validated against the QP context since it makes it
 extra hard for multipath routing and QoS to work...]

Here is one thought on how to do this:
To meet this rule each side of the CM must take the SLID from
the incoming LRH as the DLID for the connection. This SLID will be
one of the SLIDs for the local router. The other side doesn't need to
know what it is. The passive side will get the router SLID from the
REQ and the active side gets it from the ACK.

The passive side is easy, it just path record queries the DGID and
requests the DLID == the incoming LRH.SLID.

The nasty problem is with the active side - CMA will select a router
lid it uses as the DLID and the router may select a different LID for
it to use as the SLID when it processes the ACK. By C9-54 they have to
be the same : So the active side might have to do another path record
query to move its DLID and SL to match the routers choosen
SLID. Double suck :P

Overarching all of this is some mechanism where the SM and all the
routers collaborate to keep the router SLID the same for the duration
of every RC flow. (One simple way would be to have the SM encode the
SLID it wants to router to pick in the Flow Label or TClass..)

Suck.

Another idea would be to encode the local router SLID in the flow
label and have the CM exchange and use asymetric flow labels.. That
would move control over SL selection into the endpoints and remove the
possible 2nd pathrecord query from the active side - but I haven't
looked if CM can exchange flow labels in the ACK..

 I think that we need a way for the local node to query the remote SA to 
 obtain this information.  Or we need a new path record for routable paths 
 that includes this information.

Being able to query doesn't really help matters since you still can't
tell the router what SLID to use.. The main idea is that the router
lid is only useful to the endpoint on the same subnet so there is no
reason to make the non-local side fetch it.

Jason

___
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] [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: syslog() fixes]]

2007-02-08 Thread Sasha Khapyorsky
On 20:31 Thu 08 Feb , Tzachi Dar wrote:
 The windows open IB has decided on using a BSD only license. 
 The common implementation of pthreads as far as I know is LGPL, which
 means that it can not be used in open IB.

Why not? AFAIK it works perfectly (see (5,6 and Preamble)):
http://www.gnu.org/copyleft/lesser.html

And of course there are tons of examples when BSD software links against
LGPLed glibc.

 The only two ways that I see around this are 1) Change the license of
 open IB windows which might be a complicated thing. 2) Find an
 implementation of pthreads that is BSD.

BTW, just wondering... What is relation between windows open IB and OFA
(and OFA's dual-license rule)?

Sasha

 
 Thanks
 Tzachi
 
  -Original Message-
  From: Sasha Khapyorsky [mailto:[EMAIL PROTECTED] 
  Sent: Thursday, February 08, 2007 7:46 PM
  To: Tzachi Dar; Yossi Leybovich
  Cc: Yevgeny Kliteynik; OPENIB; Michael S. Tsirkin; Hal Rosenstock
  Subject: Re: [Fwd: Re: win related [was: Re: [PATCH 1/2] 
  opensm: sigusr1: syslog() fixes]]
  
  On 11:24 Sun 21 Jan , Yevgeny Kliteynik wrote:
   Tzachi, Yossi, please join the thread.
   What do you think about distributing a copy of the pthread DLL with 
   opensm?
  
  Any news here? Thanks.
  
  Sasha
  
   
   -- Yevgeny.
   
    Original Message 
   Subject: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: 
   syslog() fixes]
   Date: Fri, 19 Jan 2007 00:20:32 +0200
   From: Sasha Khapyorsky [EMAIL PROTECTED]
   To: Michael S. Tsirkin [EMAIL PROTECTED]
   CC: Yevgeny Kliteynik [EMAIL PROTECTED],
  OPENIB openib-general@openib.org
   References: [EMAIL PROTECTED] 
   [EMAIL PROTECTED]
   
   On 23:50 Thu 18 Jan , Michael S. Tsirkin wrote:
 Quoting Sasha Khapyorsky [EMAIL PROTECTED]:
 Subject: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: 
 syslog() fixes]
 
 On 07:00 Thu 18 Jan , Michael S. Tsirkin wrote:
   What about pure opensource - 
   http://sourceware.org/pthreads-win32/? It is licensed under 
   LGPL, I see on the net many positive reports about 
  stability and usability.
  
  I used it to do a windows port of linux complib at some point 
  and opensm seemed to work fine with it. What it was 
  lacking at 
  that point was support for 64 bit applications, and for some 
  reason (which is still unclear to me) there was a 
  strong desire to run opensm in 64 bit mode.
  Seems to have been fixed now, BTW.
 
 So this seems to be good option for OpenSM on Windows. Right?

No idea. Distributing a copy of the pthread DLL with 
  opensm does not 
look like a problem. But is it worth it?
   
   Sure, it makes windows porting much more transparent and 
  let us to use 
   standard *nix stuff w/out #ifndef WIN32. Other (generic) benefit is 
   that posix is more standard and powerful than wrappers like complib.
   
   Sasha
   
  

___
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] more comments on cxgb3

2007-02-08 Thread Roland Dreier
  diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c 
  b/drivers/infiniband/hw/cxgb3/iwch_provider.c
  index db2b0a8..98568ee 100644
  --- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
  +++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
  @@ -99,6 +99,7 @@ static int iwch_dealloc_ucontext(struct 
   struct iwch_dev *rhp = to_iwch_dev(context-device);
   struct iwch_ucontext *ucontext = to_iwch_ucontext(context);
   PDBG(%s context %p\n, __FUNCTION__, context);
  +free_mmaps(ucontext);
   cxio_release_ucontext(rhp-rdev, ucontext-uctx);
   kfree(ucontext);
   return 0;
  diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.h 
  b/drivers/infiniband/hw/cxgb3/iwch_provider.h
  index 1ede8a7..c8c07ee 100644
  --- a/drivers/infiniband/hw/cxgb3/iwch_provider.h
  +++ b/drivers/infiniband/hw/cxgb3/iwch_provider.h
  @@ -199,6 +199,21 @@ struct iwch_mm_entry {
   unsigned len;
   };
   
  +static inline void free_mmaps(struct iwch_ucontext *ucontext)
  +{
  +struct list_head *pos, *nxt;
  +struct iwch_mm_entry *mm;
  +
  +spin_lock(ucontext-mmap_lock);
  +list_for_each_safe(pos, nxt, ucontext-mmaps) {
  +mm = list_entry(pos, struct iwch_mm_entry, entry);
  +list_del(mm-entry);
  +kfree(mm);
  +}
  +spin_unlock(ucontext-mmap_lock);
  +return;
  +}

Since you only have one caller, I would suggest just open-coding the
deletion at the call-site (since that function is really too big to
inline if it ever grows another caller).  And I don't think you need
the locking either, since there better be no one else looking at the
context structure while you're in the process of freeing it.

Something like:

struct iwch_dev *rhp = to_iwch_dev(context-device);
struct iwch_ucontext *ucontext = to_iwch_ucontext(context);
struct iwch_mm_entry *mm, *tmp;

PDBG(%s context %p\n, __FUNCTION__, context);
list_for_each_entry_safe(mm, tmp, ucontext-mmaps)
kfree(mm);
cxio_release_ucontext(rhp-rdev, ucontext-uctx);
kfree(ucontext);
return 0;

 - 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] Problem is routing CM REQ was: Use a GRH when appropriate for unicast packets

2007-02-08 Thread Sean Hefty
Hum, you mean to meet the LID validation rules of 9.6.1.5? That is a
huge PITA..

[IMHO, 9.6.1.5 C9-54 is a mistake, if there is a GRH then the LRH.SLID
 should not be validated against the QP context since it makes it
 extra hard for multipath routing and QoS to work...]

Yes - this gets messy.

Here is one thought on how to do this:
To meet this rule each side of the CM must take the SLID from
the incoming LRH as the DLID for the connection. This SLID will be
one of the SLIDs for the local router. The other side doesn't need to
know what it is. The passive side will get the router SLID from the
REQ and the active side gets it from the ACK.

The passive side is easy, it just path record queries the DGID and
requests the DLID == the incoming LRH.SLID.

This requires that the passive side be able to issue path record queries, but I
think that it could work for static routes.  A point was made to me that the
remote side could be a TCA without query capabilities.

There's still the issue of what value is carried in the remote port LID in the
CM REQ (12.7.21), and I haven't even gotten to APM yet...

The nasty problem is with the active side - CMA will select a router
lid it uses as the DLID and the router may select a different LID for
it to use as the SLID when it processes the ACK. By C9-54 they have to
be the same : So the active side might have to do another path record
query to move its DLID and SL to match the routers choosen
SLID. Double suck :P

As long as the SA and local routers are in sync, we may be okay here without a
second path record query.

- 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 ofed-1.2] libehca: fix build error with disable-libcheck option

2007-02-08 Thread Hoang-Nam Nguyen
 This patch fix libehca build errors if disable-libcheck option is choosen.
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



[openib-general] [PATCH 2/5] No need to disable interrupts for mmap locking.

2007-02-08 Thread Steve Wise
From: Steve Wise [EMAIL PROTECTED]

Lock mmap_lock is never taken from non-process context, so just use
bare spin_lock()/spin_unlock().

Signed-off-by: Steve Wise [EMAIL PROTECTED]
---

 drivers/infiniband/hw/cxgb3/iwch_provider.h |   10 +-
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.h 
b/drivers/infiniband/hw/cxgb3/iwch_provider.h
index a8cfeaf..1ede8a7 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.h
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.h
@@ -205,29 +205,29 @@ static inline struct iwch_mm_entry *remo
struct list_head *pos, *nxt;
struct iwch_mm_entry *mm;
 
-   spin_lock_irq(ucontext-mmap_lock);
+   spin_lock(ucontext-mmap_lock);
list_for_each_safe(pos, nxt, ucontext-mmaps) {
 
mm = list_entry(pos, struct iwch_mm_entry, entry);
if (mm-addr == addr  mm-len == len) {
list_del_init(mm-entry);
-   spin_unlock_irq(ucontext-mmap_lock);
+   spin_unlock(ucontext-mmap_lock);
PDBG(%s addr 0x%llx len %d\n, __FUNCTION__, mm-addr,
 mm-len);
return mm;
}
}
-   spin_unlock_irq(ucontext-mmap_lock);
+   spin_unlock(ucontext-mmap_lock);
return NULL;
 }
 
 static inline void insert_mmap(struct iwch_ucontext *ucontext,
   struct iwch_mm_entry *mm)
 {
-   spin_lock_irq(ucontext-mmap_lock);
+   spin_lock(ucontext-mmap_lock);
PDBG(%s addr 0x%llx len %d\n, __FUNCTION__, mm-addr, mm-len);
list_add_tail(mm-entry, ucontext-mmaps);
-   spin_unlock_irq(ucontext-mmap_lock);
+   spin_unlock(ucontext-mmap_lock);
 }
 
 enum iwch_qp_attr_mask {

___
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 0/5] iw_cxgb3 - misc cleanup and fixes

2007-02-08 Thread Steve Wise

Here are some fixes to address various comments from Michael and Roland.

This is _not_ for ofed_1_2, but rather for merging into 2.6.21.


Steve.

___
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 3/5] Clean up pending mmaps on ucontext deallocation.

2007-02-08 Thread Steve Wise
From: Steve Wise [EMAIL PROTECTED]

Free all pending mmap structs when the ucontext is deallocated.

Signed-off-by: Steve Wise [EMAIL PROTECTED]
---

 drivers/infiniband/hw/cxgb3/iwch_provider.c |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c 
b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index db2b0a8..85484ac 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -98,7 +98,11 @@ static int iwch_dealloc_ucontext(struct 
 {
struct iwch_dev *rhp = to_iwch_dev(context-device);
struct iwch_ucontext *ucontext = to_iwch_ucontext(context);
+   struct iwch_mm_entry *mm, *tmp;
+
PDBG(%s context %p\n, __FUNCTION__, context);
+   list_for_each_entry_safe(mm, tmp, ucontext-mmaps, entry)
+   kfree(mm);
cxio_release_ucontext(rhp-rdev, ucontext-uctx);
kfree(ucontext);
return 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



[openib-general] [PATCH 4/5] Get rid of static rdev table.

2007-02-08 Thread Steve Wise
From: Steve Wise [EMAIL PROTECTED]

Use a liked list.

Signed-off-by: Steve Wise [EMAIL PROTECTED]
---

 drivers/infiniband/hw/cxgb3/core/cxio_hal.c |   57 +--
 drivers/infiniband/hw/cxgb3/core/cxio_hal.h |2 -
 2 files changed, 19 insertions(+), 40 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb3/core/cxio_hal.c 
b/drivers/infiniband/hw/cxgb3/core/cxio_hal.c
index 2c4e351..acffe16 100644
--- a/drivers/infiniband/hw/cxgb3/core/cxio_hal.c
+++ b/drivers/infiniband/hw/cxgb3/core/cxio_hal.c
@@ -43,49 +43,28 @@ #include cxio_hal.h
 #include cxgb3_offload.h
 #include sge_defs.h
 
-static struct cxio_rdev *rdev_tbl[T3_MAX_NUM_RNIC];
+static LIST_HEAD(rdev_list);
 static cxio_hal_ev_callback_func_t cxio_ev_cb = NULL;
 
 static inline struct cxio_rdev *cxio_hal_find_rdev_by_name(char *dev_name)
 {
-   int i;
-   for (i = 0; i  T3_MAX_NUM_RNIC; i++)
-   if (rdev_tbl[i])
-   if (!strcmp(rdev_tbl[i]-dev_name, dev_name))
-   return rdev_tbl[i];
+   struct cxio_rdev *rdev;
+
+   list_for_each_entry(rdev, rdev_list, entry)
+   if (!strcmp(rdev-dev_name, dev_name))
+   return rdev;
return NULL;
 }
 
 static inline struct cxio_rdev *cxio_hal_find_rdev_by_t3cdev(struct t3cdev
 *tdev)
 {
-   int i;
-   for (i = 0; i  T3_MAX_NUM_RNIC; i++)
-   if (rdev_tbl[i])
-   if (rdev_tbl[i]-t3cdev_p == tdev)
-   return rdev_tbl[i];
-   return NULL;
-}
-
-static inline int cxio_hal_add_rdev(struct cxio_rdev *rdev_p)
-{
-   int i;
-   for (i = 0; i  T3_MAX_NUM_RNIC; i++)
-   if (!rdev_tbl[i]) {
-   rdev_tbl[i] = rdev_p;
-   break;
-   }
-   return (i == T3_MAX_NUM_RNIC);
-}
+   struct cxio_rdev *rdev;
 
-static inline void cxio_hal_delete_rdev(struct cxio_rdev *rdev_p)
-{
-   int i;
-   for (i = 0; i  T3_MAX_NUM_RNIC; i++)
-   if (rdev_tbl[i] == rdev_p) {
-   rdev_tbl[i] = NULL;
-   break;
-   }
+   list_for_each_entry(rdev, rdev_list, entry)
+   if (rdev-t3cdev_p == tdev)
+   return rdev;
+   return NULL;
 }
 
 int cxio_hal_cq_op(struct cxio_rdev *rdev_p, struct t3_cq *cq,
@@ -937,8 +916,7 @@ int cxio_rdev_open(struct cxio_rdev *rde
return -EINVAL;
}
 
-   if (cxio_hal_add_rdev(rdev_p))
-   return -ENOMEM;
+   list_add_tail(rdev_p-entry, rdev_list);
 
PDBG(%s opening rnic dev %s\n, __FUNCTION__, rdev_p-dev_name);
memset(rdev_p-ctrl_qp, 0, sizeof(rdev_p-ctrl_qp));
@@ -1018,7 +996,7 @@ err3:
 err2:
cxio_hal_destroy_ctrl_qp(rdev_p);
 err1:
-   cxio_hal_delete_rdev(rdev_p);
+   list_del(rdev_p-entry);
return err;
 }
 
@@ -1027,7 +1005,7 @@ void cxio_rdev_close(struct cxio_rdev *r
if (rdev_p) {
cxio_hal_pblpool_destroy(rdev_p);
cxio_hal_rqtpool_destroy(rdev_p);
-   cxio_hal_delete_rdev(rdev_p);
+   list_del(rdev_p-entry);
rdev_p-t3cdev_p-ulp = NULL;
cxio_hal_destroy_ctrl_qp(rdev_p);
cxio_hal_destroy_resource(rdev_p-rscp);
@@ -1038,7 +1016,6 @@ int __init cxio_hal_init(void)
 {
if (cxio_hal_init_rhdl_resource(T3_MAX_NUM_RI))
return -ENOMEM;
-   memset(rdev_tbl, 0, T3_MAX_NUM_RNIC * sizeof(void *));
t3_register_cpl_handler(CPL_ASYNC_NOTIF, cxio_hal_ev_handler);
return 0;
 }
@@ -1046,9 +1023,11 @@ int __init cxio_hal_init(void)
 void __exit cxio_hal_exit(void)
 {
int i;
+   struct cxio_rdev *rdev, *tmp;
+
t3_register_cpl_handler(CPL_ASYNC_NOTIF, NULL);
-   for (i = 0; i  T3_MAX_NUM_RNIC; i++)
-   cxio_rdev_close(rdev_tbl[i]);
+   list_for_each_entry_safe(rdev, tmp, rdev_list, entry)
+   cxio_rdev_close(rdev);
cxio_hal_destroy_rhdl_resource();
 }
 
diff --git a/drivers/infiniband/hw/cxgb3/core/cxio_hal.h 
b/drivers/infiniband/hw/cxgb3/core/cxio_hal.h
index d5ae282..8fb2999 100644
--- a/drivers/infiniband/hw/cxgb3/core/cxio_hal.h
+++ b/drivers/infiniband/hw/cxgb3/core/cxio_hal.h
@@ -47,7 +47,6 @@ #define T3_CTRL_QP_SIZE_LOG2  8
 #define T3_CTRL_CQ_ID0
 
 /* TBD */
-#define T3_MAX_NUM_RNIC  8
 #define T3_MAX_NUM_RI (115)
 #define T3_MAX_NUM_QP (115)
 #define T3_MAX_NUM_CQ (115)
@@ -106,6 +105,7 @@ struct cxio_rdev {
struct cxio_ucontext uctx;
struct gen_pool *pbl_pool;
struct gen_pool *rqt_pool;
+   struct list_head entry;
 };
 
 static inline int cxio_num_stags(struct cxio_rdev *rdev_p)

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

To unsubscribe, 

[openib-general] [PATCH 5/5] Hold the iwch device mutex around cxio_rdev_open().

2007-02-08 Thread Steve Wise
From: Steve Wise [EMAIL PROTECTED]

Signed-off-by: Steve Wise [EMAIL PROTECTED]
---

 drivers/infiniband/hw/cxgb3/iwch.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb3/iwch.c 
b/drivers/infiniband/hw/cxgb3/iwch.c
index 0c95f2c..c353a9b 100644
--- a/drivers/infiniband/hw/cxgb3/iwch.c
+++ b/drivers/infiniband/hw/cxgb3/iwch.c
@@ -119,7 +119,10 @@ static void open_rnic_dev(struct t3cdev 
rnicp-rdev.ulp = rnicp;
rnicp-rdev.t3cdev_p = tdev;
 
+   mutex_lock(dev_mutex);
+
if (cxio_rdev_open(rnicp-rdev)) {
+   mutex_unlock(dev_mutex);
printk(KERN_ERR MOD Unable to open CXIO rdev\n);
ib_dealloc_device(rnicp-ibdev);
return;
@@ -127,7 +130,6 @@ static void open_rnic_dev(struct t3cdev 
 
rnic_init(rnicp);
 
-   mutex_lock(dev_mutex);
list_add_tail(rnicp-entry, dev_list);
mutex_unlock(dev_mutex);
 

___
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] Problem is routing CM REQ was: Use a GRH when appropriate for unicast packets

2007-02-08 Thread Hal Rosenstock
On Thu, 2007-02-08 at 14:54, Sean Hefty wrote:
 Hum, you mean to meet the LID validation rules of 9.6.1.5? That is a
 huge PITA..
 
 [IMHO, 9.6.1.5 C9-54 is a mistake, if there is a GRH then the LRH.SLID
  should not be validated against the QP context since it makes it
  extra hard for multipath routing and QoS to work...]
 
 Yes - this gets messy.
 
 Here is one thought on how to do this:
 To meet this rule each side of the CM must take the SLID from
 the incoming LRH as the DLID for the connection. This SLID will be
 one of the SLIDs for the local router. The other side doesn't need to
 know what it is. The passive side will get the router SLID from the
 REQ and the active side gets it from the ACK.
 
 The passive side is easy, it just path record queries the DGID and
 requests the DLID == the incoming LRH.SLID.
 
 This requires that the passive side be able to issue path record queries, but 
 I
 think that it could work for static routes.  A point was made to me that the
 remote side could be a TCA without query capabilities.

Are you referring to SA query capabilities ? Would such a device just be
expected to work without change in an IB routed environment anyway ?

-- Hal

 
 There's still the issue of what value is carried in the remote port LID in the
 CM REQ (12.7.21), and I haven't even gotten to APM yet...
 
 The nasty problem is with the active side - CMA will select a router
 lid it uses as the DLID and the router may select a different LID for
 it to use as the SLID when it processes the ACK. By C9-54 they have to
 be the same : So the active side might have to do another path record
 query to move its DLID and SL to match the routers choosen
 SLID. Double suck :P
 
 As long as the SA and local routers are in sync, we may be okay here without a
 second path record query.
 
 - 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 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] new OFED 1.2 package

2007-02-08 Thread Tziporet Koren
New OFED package was uploaded to the OFA server:
http://www.openfabrics.org/builds/ofed-1.2/OFED-1.2-20070208-1508.tgz

Many of the issues reported on the previous version are resolved 
(bugzilla will be updated next week).

Since we had lab restructuring we did only basic tests on RHEL up4 and 
SLES10 (x86 and x86_64)

All - we are going for our weekend now.
Please report all issues you encounter so we will be able to fix and do 
the alpha release on Monday.

Thanks,
Tziporet  Vlad



___
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] [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: syslog() fixes]]

2007-02-08 Thread Tzachi Dar
See bellow.

Thanks
Tzachi 

 -Original Message-
 From: Sasha Khapyorsky [mailto:[EMAIL PROTECTED] 
 Sent: Thursday, February 08, 2007 9:47 PM
 To: Tzachi Dar
 Cc: Yossi Leybovich; Gilad Shainer; Yevgeny Kliteynik; 
 OPENIB; Michael S. Tsirkin; Hal Rosenstock
 Subject: Re: [Fwd: Re: win related [was: Re: [PATCH 1/2] 
 opensm: sigusr1: syslog() fixes]]
 
 On 20:31 Thu 08 Feb , Tzachi Dar wrote:
  The windows open IB has decided on using a BSD only license. 
  The common implementation of pthreads as far as I know is 
 LGPL, which 
  means that it can not be used in open IB.
 
 Why not? AFAIK it works perfectly (see (5,6 and Preamble)):
 http://www.gnu.org/copyleft/lesser.html
 
 And of course there are tons of examples when BSD software 
 links against LGPLed glibc.

I can of course write you an answer that will be more than 5 pages long
of why *I* don't think that 
Using GPL software is bad for everyone, but I guess that my opinion
doesn't really meter, so I
Won't do it.
The page that you have referenced is of the GNU org, and even there it
is hard to say that they
are trying to encourage you to use the LGPL license. In any case, the
main point is that 
When open IB windows was formed there was a general decision that it
will use BSD license. If we
Start having components with the LGPL this will break that decision, and
therefore this requires
some voting of the open IB organization.


  The only two ways that I see around this are 1) Change the 
 license of 
  open IB windows which might be a complicated thing. 2) Find an 
  implementation of pthreads that is BSD.
 
 BTW, just wondering... What is relation between windows open 
 IB and OFA (and OFA's dual-license rule)?
Well, the way I see it one can take code from the Linux part under the
BSD licance and use it in 
The windows part. The otherway around seems fine to me but some say that
since the windows BSD liscance
Reqires that some text will always remain there, the other way around is
not possibale. As I'm not an 
Expert in that erea I don't know who is right.


 Sasha
 
  
  Thanks
  Tzachi
  
   -Original Message-
   From: Sasha Khapyorsky [mailto:[EMAIL PROTECTED]
   Sent: Thursday, February 08, 2007 7:46 PM
   To: Tzachi Dar; Yossi Leybovich
   Cc: Yevgeny Kliteynik; OPENIB; Michael S. Tsirkin; Hal Rosenstock
   Subject: Re: [Fwd: Re: win related [was: Re: [PATCH 1/2]
   opensm: sigusr1: syslog() fixes]]
   
   On 11:24 Sun 21 Jan , Yevgeny Kliteynik wrote:
Tzachi, Yossi, please join the thread.
What do you think about distributing a copy of the pthread DLL 
with opensm?
   
   Any news here? Thanks.
   
   Sasha
   

-- Yevgeny.

 Original Message 
Subject: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: 
syslog() fixes]
Date: Fri, 19 Jan 2007 00:20:32 +0200
From: Sasha Khapyorsky [EMAIL PROTECTED]
To: Michael S. Tsirkin [EMAIL PROTECTED]
CC: Yevgeny Kliteynik [EMAIL PROTECTED],
   OPENIB openib-general@openib.org
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]

On 23:50 Thu 18 Jan , Michael S. Tsirkin wrote:
  Quoting Sasha Khapyorsky [EMAIL PROTECTED]:
  Subject: Re: win related [was: Re: [PATCH 1/2] 
 opensm: sigusr1: 
  syslog() fixes]
  
  On 07:00 Thu 18 Jan , Michael S. Tsirkin wrote:
What about pure opensource - 
http://sourceware.org/pthreads-win32/? It is licensed 
under LGPL, I see on the net many positive reports about
   stability and usability.
   
   I used it to do a windows port of linux complib at some 
   point and opensm seemed to work fine with it. What it was
   lacking at
   that point was support for 64 bit applications, 
 and for some 
   reason (which is still unclear to me) there was a
   strong desire to run opensm in 64 bit mode.
   Seems to have been fixed now, BTW.
  
  So this seems to be good option for OpenSM on 
 Windows. Right?
 
 No idea. Distributing a copy of the pthread DLL with
   opensm does not
 look like a problem. But is it worth it?

Sure, it makes windows porting much more transparent and
   let us to use
standard *nix stuff w/out #ifndef WIN32. Other 
 (generic) benefit 
is that posix is more standard and powerful than 
 wrappers like complib.

Sasha

   
 

___
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] [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: syslog() fixes]]

2007-02-08 Thread Gilad Shainer
Windows Open IB is part of OpenFabrics. OpenFabrics includes Linux and
Windows communities. The Linux code is dual license while the Windows
code is BSD only.

Gilad.

  

-Original Message-
From: Tzachi Dar 
Sent: Thursday, February 08, 2007 1:24 PM
To: Sasha Khapyorsky
Cc: Yossi Leybovich; Gilad Shainer; Yevgeny Kliteynik; OPENIB; Michael
S. Tsirkin; Hal Rosenstock
Subject: RE: [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm:
sigusr1: syslog() fixes]]

See bellow.

Thanks
Tzachi 

 -Original Message-
 From: Sasha Khapyorsky [mailto:[EMAIL PROTECTED]
 Sent: Thursday, February 08, 2007 9:47 PM
 To: Tzachi Dar
 Cc: Yossi Leybovich; Gilad Shainer; Yevgeny Kliteynik; OPENIB; Michael

 S. Tsirkin; Hal Rosenstock
 Subject: Re: [Fwd: Re: win related [was: Re: [PATCH 1/2]
 opensm: sigusr1: syslog() fixes]]
 
 On 20:31 Thu 08 Feb , Tzachi Dar wrote:
  The windows open IB has decided on using a BSD only license. 
  The common implementation of pthreads as far as I know is
 LGPL, which
  means that it can not be used in open IB.
 
 Why not? AFAIK it works perfectly (see (5,6 and Preamble)):
 http://www.gnu.org/copyleft/lesser.html
 
 And of course there are tons of examples when BSD software links 
 against LGPLed glibc.

I can of course write you an answer that will be more than 5 pages long
of why *I* don't think that Using GPL software is bad for everyone, but
I guess that my opinion doesn't really meter, so I Won't do it.
The page that you have referenced is of the GNU org, and even there it
is hard to say that they are trying to encourage you to use the LGPL
license. In any case, the main point is that When open IB windows was
formed there was a general decision that it will use BSD license. If we
Start having components with the LGPL this will break that decision, and
therefore this requires some voting of the open IB organization.


  The only two ways that I see around this are 1) Change the
 license of
  open IB windows which might be a complicated thing. 2) Find an 
  implementation of pthreads that is BSD.
 
 BTW, just wondering... What is relation between windows open IB and 
 OFA (and OFA's dual-license rule)?
Well, the way I see it one can take code from the Linux part under the
BSD licance and use it in The windows part. The otherway around seems
fine to me but some say that since the windows BSD liscance Reqires that
some text will always remain there, the other way around is not
possibale. As I'm not an Expert in that erea I don't know who is right.


 Sasha
 
  
  Thanks
  Tzachi
  
   -Original Message-
   From: Sasha Khapyorsky [mailto:[EMAIL PROTECTED]
   Sent: Thursday, February 08, 2007 7:46 PM
   To: Tzachi Dar; Yossi Leybovich
   Cc: Yevgeny Kliteynik; OPENIB; Michael S. Tsirkin; Hal Rosenstock
   Subject: Re: [Fwd: Re: win related [was: Re: [PATCH 1/2]
   opensm: sigusr1: syslog() fixes]]
   
   On 11:24 Sun 21 Jan , Yevgeny Kliteynik wrote:
Tzachi, Yossi, please join the thread.
What do you think about distributing a copy of the pthread DLL 
with opensm?
   
   Any news here? Thanks.
   
   Sasha
   

-- Yevgeny.

 Original Message 
Subject: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: 
syslog() fixes]
Date: Fri, 19 Jan 2007 00:20:32 +0200
From: Sasha Khapyorsky [EMAIL PROTECTED]
To: Michael S. Tsirkin [EMAIL PROTECTED]
CC: Yevgeny Kliteynik [EMAIL PROTECTED],
   OPENIB openib-general@openib.org
References: [EMAIL PROTECTED]
[EMAIL PROTECTED]

On 23:50 Thu 18 Jan , Michael S. Tsirkin wrote:
  Quoting Sasha Khapyorsky [EMAIL PROTECTED]:
  Subject: Re: win related [was: Re: [PATCH 1/2]
 opensm: sigusr1: 
  syslog() fixes]
  
  On 07:00 Thu 18 Jan , Michael S. Tsirkin wrote:
What about pure opensource - 
http://sourceware.org/pthreads-win32/? It is licensed 
under LGPL, I see on the net many positive reports about
   stability and usability.
   
   I used it to do a windows port of linux complib at some 
   point and opensm seemed to work fine with it. What it was
   lacking at
   that point was support for 64 bit applications,
 and for some
   reason (which is still unclear to me) there was a
   strong desire to run opensm in 64 bit mode.
   Seems to have been fixed now, BTW.
  
  So this seems to be good option for OpenSM on
 Windows. Right?
 
 No idea. Distributing a copy of the pthread DLL with
   opensm does not
 look like a problem. But is it worth it?

Sure, it makes windows porting much more transparent and
   let us to use
standard *nix stuff w/out #ifndef WIN32. Other
 (generic) benefit
is that posix is more standard and powerful than
 wrappers like complib.

Sasha

   
 

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

To 

Re: [openib-general] Immediate data question

2007-02-08 Thread Michael Krause
At 03:41 PM 2/7/2007, Roland Dreier wrote:
 Changqing What I mean is that, is there any performance penalty
 Changqing for receiver's overall performance if RNR happens
 Changqing continuously on one of the QP ?

Not for the receiver, but the sender will be severely slowed down by
having to wait for the RNR timeouts.

RNR = Receiver Not Ready so by definition, the data flow isn't going to 
progress until the receiver is ready to receive data.   If a receive QP 
enters RNR for a RC, then it is likely not progressing as desired.   RNR 
was initially put in place to enable a receiver to create back pressure to 
the sender without causing a fatal error condition.  It should rarely be 
entered and therefore should have negligible impact on overall performance 
however when a RNR occurs, no forward progress will occur so performance is 
essentially zero.

Mike 



___
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] dapl broken for iWARP

2007-02-08 Thread Michael Krause
At 07:43 AM 2/8/2007, Kanevsky, Arkady wrote:
That is correct.
I am working with Krishna on it.
Expect patches soon.

By the way the problem is not DAPL specific
and so is a proposed solution.

There are 3 aspects of the solution.
One is APIs. We suggest that we do not augment these.
That is a connection requestor sets its QP
RDMA ORD and IRD.
When connection is established user can check the QP RDMA ORD and IRD
to see what he has now to use over the connection.
We may consider to extend QP attributes to support transport specific
parameters passing in the future.
For example, iWARP MPA CRC request.

Second is the semantic that CM provides.
The proposal is to match IBCM semantic.
That is CM guarantee that local IRD is = remote ORD.
This guarantees that incoming RDMA Read requests will not overwhelm
the QP RDMA Read capabilities.
Again there is not changes to IBCM only to IWCM.
Notice that as part of this IWCM will pass down to driver and extract
from driver
needed info.

The final part is iWARP CM extension to exchange RDMA ORD, IRD.
This is similar to IBTA Annex for IP Addressing.
The harder part that this will eventually require IETF MPA spec extension,
and the fact that MPA protocol is implemented in RNIC HW by many vendors,
and hence can not be done by IWCM itself.

We looked at this quite a bit during the creation of the 
specification.   All of the targeted usage models exchange this information 
as part of their hello or login exchanges.As such, the hum was to 
not change MPA to communicate such information and leave it to software to 
exchange these values through existing mechanisms.   I seriously doubt 
there will be much support for modifying the MPA specification at this 
stage since the implementations are largely complete and a modification 
would have to deal with the legacy interoperability issue which likely 
would be solved in software any way.  It would be simpler to simply modify 
the underlying DAPL implementation to exchange the information and keep 
this hidden from both the application and the RNIC providers.

Mike


Thanks,

Arkady Kanevsky   email: [EMAIL PROTECTED]
Network Appliance Inc.   phone: 781-768-5395
1601 Trapelo Rd. - Suite 16.Fax: 781-895-1195
Waltham, MA 02451   central phone: 781-768-5300


  -Original Message-
  From: Steve Wise [mailto:[EMAIL PROTECTED]
  Sent: Wednesday, February 07, 2007 6:12 PM
  To: Arlin Davis
  Cc: openib-general
  Subject: Re: [openib-general] dapl broken for iWARP
 
  On Wed, 2007-02-07 at 15:05 -0800, Arlin Davis wrote:
   Steve Wise wrote:
  
   On Wed, 2007-02-07 at 14:02 -0600, Steve Wise wrote:
   
   
   Arlin,
   
   The OFED dapl code is assuming the responder_resources and
   initiator_depth passed up on a connection request event
  are from the
   remote peer.  This doesn't happen for iWARP.  In the
  current iWARP
   specifications, its up to the application to exchange this
   information somehow. So these are defaulting to 0 on the
  server side
   of any dapl connection over iWARP.
   
   This is a fairly recent change, I think.  We need to come up with
   some way to deal with this for OFED 1.2 IMO.
   
   
   Yes, this was changed recently to sync up with the rdma_cm changes
   that exposed the values.
  
   
   
   
   The IWCM could set these to the device max values for instance.
   
   
   That would work fine as long as you know the remote
  settings will be
   equal or better. The provider just sets the min of local device max
   values and the remote values provided with the request.
  
 
  I know Krishna Kumar is working on a solution for exchanging
  this info in private data so the IWCM can do the right
  thing.  Stay tuned for a patch series to review for this.
  But this functionality is definitely post OFED-1.2.
 
 
  So for the OFED-1.2, I will set these to the device max in the IWCM.
  Assuming the other side is OFED 1.2 DAPL, then it will work fine.
 
  Steve.
 
 
 
  ___
  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] Problem is routing CM REQ was: Use a GRH when appropriate for unicast packets

2007-02-08 Thread Michael Krause
At 12:39 PM 2/8/2007, Hal Rosenstock wrote:
On Thu, 2007-02-08 at 14:54, Sean Hefty wrote:
  Hum, you mean to meet the LID validation rules of 9.6.1.5? That is a
  huge PITA..
  
  [IMHO, 9.6.1.5 C9-54 is a mistake, if there is a GRH then the LRH.SLID
   should not be validated against the QP context since it makes it
   extra hard for multipath routing and QoS to work...]

If you examine the prior diagram, the packet validation is quite precise 
and intent on catching any misrouted packets as early in the validation 
process as possible.  This particular compliance statement makes it clear 
as to the type of connection and how to pattern match.  The protocol was 
designed to work witin a single subnet as well as across subnets.  Hence, 
the GRH must be validated in conjunction with the LRH and the QP context in 
order to insure an intermediate component did not misroute the 
packet.As described, a RC QP must flow through at most a single path at 
any given time in order to insure packet ordering is maintained (IB 
requires strong ordering so multi-path within a single RC is not 
allowed).   As for QoS, one can arbitrate a packet for a RC QP relative to 
other flows without any additional complexity.   If one wants to segregate 
a set of RC QP onto different paths as well as arbitration slots that is 
allowed and supported by the architecture even if going between the same 
set of ports - simply use multiple LID and SL during connection 
establishment.

Mike

 
  Yes - this gets messy.
 
  Here is one thought on how to do this:
  To meet this rule each side of the CM must take the SLID from
  the incoming LRH as the DLID for the connection. This SLID will be
  one of the SLIDs for the local router. The other side doesn't need to
  know what it is. The passive side will get the router SLID from the
  REQ and the active side gets it from the ACK.
  
  The passive side is easy, it just path record queries the DGID and
  requests the DLID == the incoming LRH.SLID.
 
  This requires that the passive side be able to issue path record 
 queries, but I
  think that it could work for static routes.  A point was made to me 
 that the
  remote side could be a TCA without query capabilities.

Are you referring to SA query capabilities ? Would such a device just be
expected to work without change in an IB routed environment anyway ?

-- Hal

 
  There's still the issue of what value is carried in the remote port LID 
 in the
  CM REQ (12.7.21), and I haven't even gotten to APM yet...
 
  The nasty problem is with the active side - CMA will select a router
  lid it uses as the DLID and the router may select a different LID for
  it to use as the SLID when it processes the ACK. By C9-54 they have to
  be the same : So the active side might have to do another path record
  query to move its DLID and SL to match the routers choosen
  SLID. Double suck :P
 
  As long as the SA and local routers are in sync, we may be okay here 
 without a
  second path record query.
 
  - 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 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] [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: syslog() fixes]]

2007-02-08 Thread Sasha Khapyorsky
On 23:24 Thu 08 Feb , Tzachi Dar wrote:
   The windows open IB has decided on using a BSD only license. 
   The common implementation of pthreads as far as I know is 
  LGPL, which 
   means that it can not be used in open IB.
  
  Why not? AFAIK it works perfectly (see (5,6 and Preamble)):
  http://www.gnu.org/copyleft/lesser.html
  
  And of course there are tons of examples when BSD software 
  links against LGPLed glibc.
 
 I can of course write you an answer that will be more than 5 pages long
 of why *I* don't think that 
 Using GPL software is bad for everyone, but I guess that my opinion
 doesn't really meter, so I
 Won't do it.

I didn't mean to take it in this direction, sorry.

I reffered original LGPL text where stated explicitly that non-(L)GPL
programs can be linked against LGPLed libraries.

And again, there are lot of examples (Apache, Mozilla, Xorg, etc.) where
this works.

 The page that you have referenced is of the GNU org, and even there it
 is hard to say that they
 are trying to encourage you to use the LGPL license. In any case, the
 main point is that 
 When open IB windows was formed there was a general decision that it
 will use BSD license. If we
 Start having components with the LGPL this will break that decision, and
 therefore this requires
 some voting of the open IB organization.

You are not going to maintain win-pthread32 as OpenIB component, but
using this as third party. I think this should not be very different
from using native windows thread dll (which I guess is not BSD too).
I don't any LGPL issue here. Make sense?

Sasha

___
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] Problem is routing CM REQ was: Use a GRH when appropriate for unicast packets

2007-02-08 Thread Sean Hefty
This requires that the passive side be able to issue path record queries, but 
I
think that it could work for static routes.  A point was made to me that the
remote side could be a TCA without query capabilities.
 
 Are you referring to SA query capabilities ? Would such a device just be
 expected to work without change in an IB routed environment anyway ?

Yes I was referring to SA query capability, such as a path record query.  Since 
the spec requires that the path information be provided by the active side, I 
think that such a device could work without change.  (But it does mean that the 
active side has to provide some way to obtain the necessary information to put 
into a CM REQ, plus know what the remote router will do.)

- 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] [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: syslog() fixes]]

2007-02-08 Thread Michael S. Tsirkin
 Well, the way I see it one can take code from the Linux part under the BSD
 licance and use it in The windows part. The otherway around seems fine to me 
 but
 some say that since the windows BSD liscance Reqires that some text will 
 always
 remain there, the other way around is not possibale. As I'm not an Expert in
 that erea I don't know who is right.

Interesting. Where does this idea come from? AFAIK BSD license is well known to 
be
GPL-compatible, so there should be no problem moving code in either direction.

-- 
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] [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: syslog() fixes]]

2007-02-08 Thread Michael S. Tsirkin
 Quoting r. Michael S. Tsirkin [EMAIL PROTECTED]:
 Subject: Re: [Fwd: Re: win related [was: Re: [PATCH 1/2] opensm: sigusr1: 
 syslog() fixes]]
 
  Well, the way I see it one can take code from the Linux part under the BSD
  licance and use it in The windows part. The otherway around seems fine to 
  me but
  some say that since the windows BSD liscance Reqires that some text will 
  always
  remain there, the other way around is not possibale. As I'm not an Expert in
  that erea I don't know who is right.
 
 Interesting. Where does this idea come from?

Maybe this?
http://www.gnu.org/philosophy/bsd.html
Note that openib license does not include the advertising clause.

 AFAIK BSD license is well known to be
 GPL-compatible, so there should be no problem moving code in either direction.

-- 
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] issues with compilation of ofed 1.2

2007-02-08 Thread Doug Ledford
On Thu, 2007-02-08 at 09:02 +0200, Moni Levy wrote:
 Doug,
 On 2/7/07, Yosef Etigin [EMAIL PROTECTED] wrote:
  7. On RHAS5 beta 2, the setup requires sysfstuils-devel RPM which is not 
  included in this distro.
 
 Can you please help us with that ?

The value of the sysfsutils is far overshadowed by the value of libsysfs
(and libsysfs is far more commonly used).  So, in RHEL5, the rpm package
names reflect this:

libsysfs
sysfsutils (I think, might be libsysfs-utils)
libsysfs-devel

It's all still there, just a different name.

 -- Moni
 
 
  --
  Yosef Etigin
  Alex Tabachnik
 
-- 
Doug Ledford [EMAIL PROTECTED]
  GPG KeyID: CFBFF194
  http://people.redhat.com/dledford

Infiniband specific RPMs available at
  http://people.redhat.com/dledford/Infiniband


signature.asc
Description: This is a digitally signed message part
___
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] IB/ipoib_cm: fix up issues from code review

2007-02-08 Thread Michael S. Tsirkin
 Quoting Roland Dreier [EMAIL PROTECTED]:
 Subject: Re: [PATCH] IB/ipoib_cm: fix up issues from code review
 
 OK, I pulled this in and fixed it to build with the netdevice
 class_device-ectomy that just went upstream, and pushed it out on my
 for-2.6.21 branch like this.

Thanks!

-- 
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 TRIVIAL] opensm: remove #ifdef __WIN__ in not shared file.

2007-02-08 Thread Sasha Khapyorsky

opensm/main.c is not shared by win OpenSM, and #ifdef __WIN__ is not
needed here.

Signed-off-by: Sasha Khapyorsky [EMAIL PROTECTED]
---
 osm/opensm/main.c |5 -
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/osm/opensm/main.c b/osm/opensm/main.c
index 69c940c..fa09360 100644
--- a/osm/opensm/main.c
+++ b/osm/opensm/main.c
@@ -65,10 +65,6 @@ static volatile unsigned int osm_usr1_flag = 0;
 #define GUID_ARRAY_SIZE 64
 #define INVALID_GUID (0xULL)
 
-#ifdef __WIN__
-#define block_signals()
-#define setup_signals()
-#else
 static void mark_exit_flag(int signum)
 {
if(!osm_exit_flag)
@@ -119,7 +115,6 @@ static void setup_signals()
 #endif
pthread_sigmask(SIG_SETMASK, saved_sigset, NULL);
 }
-#endif /* __WIN__ */
 
 /**
  **/
-- 
1.5.0.rc2.g11a3


___
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 TRIVIAL] osmtest: use more descriptive constant names

2007-02-08 Thread Sasha Khapyorsky

Use more descriptive constant names for osmtest flows.

Signed-off-by: Sasha Khapyorsky [EMAIL PROTECTED]
---
 osm/osmtest/include/osmtest.h |   12 
 osm/osmtest/main.c|   20 ++--
 osm/osmtest/osmtest.c |   22 +-
 3 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/osm/osmtest/include/osmtest.h b/osm/osmtest/include/osmtest.h
index 39afbaf..13131dd 100644
--- a/osm/osmtest/include/osmtest.h
+++ b/osm/osmtest/include/osmtest.h
@@ -56,6 +56,18 @@
 #include osmtest_base.h
 #include osmtest_subnet.h
 
+enum OSMT_FLOWS {
+   OSMT_FLOW_ALL = 0,
+   OSMT_FLOW_CREATE_INVENTORY,
+   OSMT_FLOW_VALIDATE_INVENTORY,
+   OSMT_FLOW_SERVICE_REGISTRATION,
+   OSMT_FLOW_EVENT_FORWARDING,
+   OSMT_FLOW_STRESS_SA,
+   OSMT_FLOW_MULTICAST,
+   OSMT_FLOW_QOS,
+   OSMT_FLOW_TRAP,
+};
+
 /s* OpenSM: Subnet/osmtest_opt_t
  * NAME
  * osmtest_opt_t
diff --git a/osm/osmtest/main.c b/osm/osmtest/main.c
index ca5805b..5f402b7 100644
--- a/osm/osmtest/main.c
+++ b/osm/osmtest/main.c
@@ -354,7 +354,7 @@ main( int argc,
opt.create = FALSE;
opt.mmode = 1;
opt.ignore_path_records = FALSE; /*  Do path Records too */
-   opt.flow = 0; /*  run all validation tests */
+   opt.flow = OSMT_FLOW_ALL; /*  run all validation tests */
strcpy(flow_name, All Validations);
strcpy( opt.file_name, osmtest.dat );
 
@@ -396,31 +396,31 @@ main( int argc,
 
  if (!strcmp(c, optarg)) {
 strcpy(flow_name, Create Inventory);
-opt.flow = 1;
+opt.flow = OSMT_FLOW_CREATE_INVENTORY;
  } else if (!strcmp(v, optarg)) {
 strcpy(flow_name, Validate Inventory);
-opt.flow = 2;
+opt.flow = OSMT_FLOW_VALIDATE_INVENTORY;
  } else if (!strcmp(s, optarg)) {
 strcpy(flow_name, Services Registration);
-opt.flow = 3;
+opt.flow = OSMT_FLOW_SERVICE_REGISTRATION;
  } else if (!strcmp(e, optarg)) {
 strcpy(flow_name, Event Forwarding);
-opt.flow = 4;
+opt.flow = OSMT_FLOW_EVENT_FORWARDING;
  } else if (!strcmp(f, optarg)) {
 strcpy(flow_name, Stress SA);
-opt.flow = 5;
+opt.flow = OSMT_FLOW_STRESS_SA;
  } else if (!strcmp(m, optarg)) {
 strcpy(flow_name, Multicast);
-opt.flow = 6;
+opt.flow = OSMT_FLOW_MULTICAST;
  } else if (!strcmp(q, optarg)) {
 strcpy(flow_name, QoS: VLArb and SLtoVL);
-opt.flow = 7;
+opt.flow = OSMT_FLOW_QOS;
  } else if (!strcmp(t, optarg)) {
 strcpy(flow_name, Trap 64/65);
-opt.flow = 8;
+opt.flow = OSMT_FLOW_TRAP;
  } else if (!strcmp(a, optarg)) {
 strcpy(flow_name, All Validations);
-opt.flow = 0;
+opt.flow = OSMT_FLOW_ALL;
  } else {
 printf( \nError: unknown flow %s\n,flow_name);
 exit(2);
diff --git a/osm/osmtest/osmtest.c b/osm/osmtest/osmtest.c
index 3c16a6f..ce185ec 100644
--- a/osm/osmtest/osmtest.c
+++ b/osm/osmtest/osmtest.c
@@ -7948,7 +7948,7 @@ osmtest_run( IN osmtest_t * const p_osmt )
 goto Exit;
   }
 
-  if( p_osmt-opt.flow == 1 )
+  if( p_osmt-opt.flow == OSMT_FLOW_CREATE_INVENTORY )
   {
 /*
  * Creating an inventory file with all nodes, ports and paths
@@ -7965,7 +7965,7 @@ osmtest_run( IN osmtest_t * const p_osmt )
   }
   else
   {
-if( p_osmt-opt.flow == 5 )
+if( p_osmt-opt.flow == OSMT_FLOW_STRESS_SA )
 {
   /*
* Stress SA - flood the it with queries
@@ -8030,7 +8030,8 @@ osmtest_run( IN osmtest_t * const p_osmt )
   /*
* Run normal validition tests.
*/
-   if (p_osmt-opt.flow == 0 || p_osmt-opt.flow == 2)
+   if (p_osmt-opt.flow == OSMT_FLOW_ALL ||
+   p_osmt-opt.flow == OSMT_FLOW_VALIDATE_INVENTORY)
{
  /*
   * Only validate the given inventory file
@@ -8056,7 +8057,7 @@ osmtest_run( IN osmtest_t * const p_osmt )
  }
}
 
-   if (p_osmt-opt.flow == 0)
+   if (p_osmt-opt.flow == OSMT_FLOW_ALL)
{
  status = osmtest_wrong_sm_key_ignored( p_osmt );
  if( status != IB_SUCCESS )
@@ -8069,7 +8070,8 @@ osmtest_run( IN osmtest_t * const p_osmt )
  }
}
 
-   if (p_osmt-opt.flow == 0 || p_osmt-opt.flow == 3)
+   if (p_osmt-opt.flow == OSMT_FLOW_ALL ||
+   

Re: [openib-general] dapl broken for iWARP

2007-02-08 Thread Steve Wise
On Wed, 2007-02-07 at 15:57 -0600, Steve Wise wrote:
 On Wed, 2007-02-07 at 14:02 -0600, Steve Wise wrote:
  Arlin,
  
  The OFED dapl code is assuming the responder_resources and
  initiator_depth passed up on a connection request event are from the
  remote peer.  This doesn't happen for iWARP.  In the current iWARP
  specifications, its up to the application to exchange this information
  somehow. So these are defaulting to 0 on the server side of any dapl
  connection over iWARP.  
  
  This is a fairly recent change, I think.  We need to come up with some
  way to deal with this for OFED 1.2 IMO.
  
 
 The IWCM could set these to the device max values for instance.
 
 Steve.
 

There is a slight problem with all this.  There are no device attributes
currently for ORD and IRD.  The ammasso driver maps these to
max_qp_rd_atom (IRD) and max_qp_init_rd_atom(ORD).  But this is screwy.
We need new attribute for these.

For OFED 1.2, I think I should just have the IWCM set them to 8.  The
only RNIC in ofed is cxgb3 and it supports 8...


Steve.


___
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] Problem is routing CM REQ

2007-02-08 Thread Sean Hefty
 Looking at the problem more, I think that the issue extends to the remote 
 port 
 LID as well.  My expectation with a local path record query is that the SLID 
 is 
 the local port, and the DLID is the local router.  This should be sufficient 
 for 
 one-way UD traffic, but for connected traffic we still need to discover the 
 remote router and remote port LIDs.

Given a path record query for:

SGID - local
DGID - remote

What would be the SLID and DLID?

And if the query is reversed, such that:

SGID - remote
DGID - local

Are the SLID/DLID values simply reversed?

What if the DGID in the second case were a multicast GID?  What does the SLID 
become in this case?

- 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] Problem is routing CM REQ was: Use a GRH when appropriate for unicast packets

2007-02-08 Thread Hal Rosenstock
On Thu, 2007-02-08 at 17:02, Sean Hefty wrote:
 This requires that the passive side be able to issue path record queries, 
 but I
 think that it could work for static routes.  A point was made to me that the
 remote side could be a TCA without query capabilities.
  
  Are you referring to SA query capabilities ? Would such a device just be
  expected to work without change in an IB routed environment anyway ?
 
 Yes I was referring to SA query capability, such as a path record query.  
 Since 
 the spec requires that the path information be provided by the active side, I 
 think that such a device could work without change.  (But it does mean that 
 the 
 active side has to provide some way to obtain the necessary information to 
 put 
 into a CM REQ, plus know what the remote router will do.)

It also means it needs to be able to put a GRH in on the sending side.
Not sure that is free in implementations as you have been noting for
OpenIB recently.

-- Hal

 - 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] please pull for 2.6.21: fix + add IB multicast support

2007-02-08 Thread Roland Dreier
I merged the increment port number and remove redundant '_wq'
patches from git.openfabrics.org/~shefty/scm/rdma-dev.git for-roland

I plan to review to multicast stuff next week and I hope to merge it
for 2.6.21.  Or, have you or anyone else at Voltaire read over the
code in addition to using it?  Do you see anything that should be
cleaned up?

 - 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] [PATCH 0/5] iw_cxgb3 - misc cleanup and fixes

2007-02-08 Thread Roland Dreier
OK, I've pulled the cxgb3 stuff into a single commit in my for-2.6.21
branch.  I took the liberty of cleaning up some sparse warnings, etc.
There's still a few other obvious things to fix up:

drivers/infiniband/hw/cxgb3/iwch_ev.c:102:6: warning: symbol 'iwch_ev_disp
atch' was not declared. Should it be static?

  Rather than putting an extern in iwch.c, please put a proper
  definition in an appropriate header file included from iwch.c.

Also I agree with MST, I would like to see the core/ subdirectory die
completely.

 - 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] [PATCH 0/5] iw_cxgb3 - misc cleanup and fixes

2007-02-08 Thread Steve Wise
On Thu, 2007-02-08 at 16:26 -0800, Roland Dreier wrote:
 OK, I've pulled the cxgb3 stuff into a single commit in my for-2.6.21
 branch.  I took the liberty of cleaning up some sparse warnings, etc.
 There's still a few other obvious things to fix up:
 
 drivers/infiniband/hw/cxgb3/iwch_ev.c:102:6: warning: symbol 'iwch_ev_disp
 atch' was not declared. Should it be static?
 
   Rather than putting an extern in iwch.c, please put a proper
   definition in an appropriate header file included from iwch.c.
 

ok.

 Also I agree with MST, I would like to see the core/ subdirectory die
 completely.
 

ok ok...I'll kill the subdir...






___
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 0/5] iw_cxgb3 - misc cleanup and fixes

2007-02-08 Thread Roland Dreier
Oh yeah -- Steve, please keep sending cleanup patches based on my tree
now.  I'm planning on asking Linus to merge what's in for-2.6.21 in
the next couple of days, but there's still more than a week before the
merge window closes, and even after the merge window closes I'll still
accept fixes/cleanups for stuff already upstream.

And here's what I have pending in for-2.6.21 so far:

Ahmed S. Darwish (1):
  IB/core: Use ARRAY_SIZE macro for mandatory_table

Akinobu Mita (1):
  IB/ehca: Fix memleak on module unloading

David Howells (1):
  IB/mthca: Work around gcc bug on sparc64

Michael S. Tsirkin (1):
  IPoIB: Connected mode experimental support

Roland Dreier (1):
  IB/mthca: Use correct structure size in call to memset()

Sean Hefty (2):
  RDMA/cma: Increment port number after close to avoid re-use
  IB: Remove redundant _wq from workqueue names

Steve Wise (1):
  RDMA/cxgb3: Add driver for Chelsio T3 Rnic

___
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] [RFC] ofed_1_2 - SLES9SP3 Backport -IWCM workaroundfor ip_dev_find() bug.

2007-02-08 Thread Steve Wise
Michael, 

From your email, it sounded like you would regression test this.  Is it
ready to pull in?  

Thanks!

Steve.


On Tue, 2007-02-06 at 17:39 -0600, Steve Wise wrote:
 Here it is (only tested with rping over iWARP on sles9sp3):
 
 
 
 
 xxx_ip_dev_find() must use scope HOST.
 
 From: Steve Wise [EMAIL PROTECTED]
 
 Function xxx_ip_dev_find(RT_SCOPE_LINK) returns the wrong interface on
 some kernels.  The correct scope is RT_SCOPE_HOST.
 
 Signed-off-by: Steve Wise [EMAIL PROTECTED]
 ---
 
  .../backport/2.6.11/include/linux/inetdevice.h |2 +-
  .../backport/2.6.11_FC4/include/linux/inetdevice.h |2 +-
  .../backport/2.6.12/include/linux/inetdevice.h |2 +-
  .../backport/2.6.13/include/linux/inetdevice.h |2 +-
  .../2.6.13_suse10_0_u/include/linux/inetdevice.h   |2 +-
  .../backport/2.6.14/include/linux/inetdevice.h |2 +-
  .../backport/2.6.15/include/linux/inetdevice.h |2 +-
  .../2.6.15_ubuntu606/include/linux/inetdevice.h|2 +-
  .../backport/2.6.16/include/linux/inetdevice.h |2 +-
  .../backport/2.6.17/include/linux/inetdevice.h |2 +-
  .../2.6.5_sles9_sp3/include/linux/inetdevice.h |2 +-
  .../backport/2.6.9_U2/include/linux/inetdevice.h   |2 +-
  .../backport/2.6.9_U3/include/linux/inetdevice.h   |2 +-
  .../backport/2.6.9_U4/include/linux/inetdevice.h   |2 +-
  14 files changed, 14 insertions(+), 14 deletions(-)
 
 diff --git a/kernel_addons/backport/2.6.11/include/linux/inetdevice.h 
 b/kernel_addons/backport/2.6.11/include/linux/inetdevice.h
 index 7244487..2d3c50f 100644
 --- a/kernel_addons/backport/2.6.11/include/linux/inetdevice.h
 +++ b/kernel_addons/backport/2.6.11/include/linux/inetdevice.h
 @@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
  
   read_lock(dev_base_lock);
   for (dev = dev_base; dev; dev = dev-next) {
 - ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
 + ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
   if (ip == addr) {
   dev_hold(dev);
   break;
 diff --git a/kernel_addons/backport/2.6.11_FC4/include/linux/inetdevice.h 
 b/kernel_addons/backport/2.6.11_FC4/include/linux/inetdevice.h
 index 7244487..2d3c50f 100644
 --- a/kernel_addons/backport/2.6.11_FC4/include/linux/inetdevice.h
 +++ b/kernel_addons/backport/2.6.11_FC4/include/linux/inetdevice.h
 @@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
  
   read_lock(dev_base_lock);
   for (dev = dev_base; dev; dev = dev-next) {
 - ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
 + ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
   if (ip == addr) {
   dev_hold(dev);
   break;
 diff --git a/kernel_addons/backport/2.6.12/include/linux/inetdevice.h 
 b/kernel_addons/backport/2.6.12/include/linux/inetdevice.h
 index 7244487..2d3c50f 100644
 --- a/kernel_addons/backport/2.6.12/include/linux/inetdevice.h
 +++ b/kernel_addons/backport/2.6.12/include/linux/inetdevice.h
 @@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
  
   read_lock(dev_base_lock);
   for (dev = dev_base; dev; dev = dev-next) {
 - ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
 + ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
   if (ip == addr) {
   dev_hold(dev);
   break;
 diff --git a/kernel_addons/backport/2.6.13/include/linux/inetdevice.h 
 b/kernel_addons/backport/2.6.13/include/linux/inetdevice.h
 index 7a32313..fd0aa36 100644
 --- a/kernel_addons/backport/2.6.13/include/linux/inetdevice.h
 +++ b/kernel_addons/backport/2.6.13/include/linux/inetdevice.h
 @@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
  
   read_lock(dev_base_lock);
   for (dev = dev_base; dev; dev = dev-next) {
 - ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
 + ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
   if (ip == addr) {
   dev_hold(dev);
   break;
 diff --git 
 a/kernel_addons/backport/2.6.13_suse10_0_u/include/linux/inetdevice.h 
 b/kernel_addons/backport/2.6.13_suse10_0_u/include/linux/inetdevice.h
 index 7a32313..fd0aa36 100644
 --- a/kernel_addons/backport/2.6.13_suse10_0_u/include/linux/inetdevice.h
 +++ b/kernel_addons/backport/2.6.13_suse10_0_u/include/linux/inetdevice.h
 @@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
  
   read_lock(dev_base_lock);
   for (dev = dev_base; dev; dev = dev-next) {
 - ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
 + ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
   if (ip == addr) {
   dev_hold(dev);
   break;
 diff --git a/kernel_addons/backport/2.6.14/include/linux/inetdevice.h 
 b/kernel_addons/backport/2.6.14/include/linux/inetdevice.h
 index 7a32313..fd0aa36 100644
 --- 

Re: [openib-general] Unknown SMP Recv

2007-02-08 Thread Michael Arndt
Hi,

I think I have found the problem. It is the timeout parameter on the 
umad_send function. How exactly I have to handle this parameter? It seems to 
be that it shoult be zero if there is no response exspected. But what value 
should it be if there is a response expected. In a test I used zero for 
SubnGetResp packets because there shouldn't be more packets and 100 for 
SubnGet or SubnSet. But if the router is stressed the umad_send function 
broke down and give an error -5 every thiertieth packet. Any idea or advice?

Thanks Michael 


___
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] dapl broken for iWARP

2007-02-08 Thread Bob Sharp
 For OFED 1.2, I think I should just have the IWCM set them to 8.  The
 only RNIC in ofed is cxgb3 and it supports 8...
 
Steve,

If we can create the new attributes for RNICs, it seems like would be
better to agree on the mapping of IRD/ORD to IB parameters than it would
be to limit these parameters to 8.  That number seems a bit low.

Bob

___
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] dapl broken for iWARP

2007-02-08 Thread Steve WIse
On Thu, 2007-02-08 at 19:19 -0600, Bob Sharp wrote:
  For OFED 1.2, I think I should just have the IWCM set them to 8.  The
  only RNIC in ofed is cxgb3 and it supports 8...
  
 Steve,
 
 If we can create the new attributes for RNICs, it seems like would be
 better to agree on the mapping of IRD/ORD to IB parameters than it would
 be to limit these parameters to 8.  That number seems a bit low.
 

Hey Bob,

This is for the OFED 1.2 release only and its too late to be adding new
features methinks since we're at feature freeze.  For the upstream
kernel (ie 2.6.21) we can define the attributes.




 Bob


___
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] dapl broken for iWARP

2007-02-08 Thread Bob Sharp
   For OFED 1.2, I think I should just have the IWCM set them to 8.  The
   only RNIC in ofed is cxgb3 and it supports 8...
   
  Steve,
  
  If we can't create the new attributes for RNICs, it seems like it would be
  better to agree on the mapping of IRD/ORD to IB parameters than it would
  be to limit these parameters to 8.  That number seems a bit low.
  
 
 Hey Bob,
 
 This is for the OFED 1.2 release only and its too late to be adding new
 features methinks since we're at feature freeze.  For the upstream
 kernel (ie 2.6.21) we can define the attributes.
 

I figured as much.  So lets just go with your Ammasso mapping of IRD/ORD to 
the IB parameters that RNICs don't use for now.



___
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] RDMA/iwcm: Bugs in cm_conn_req_handler()

2007-02-08 Thread Krishna Kumar2
Roland,

Yes, we will do some arm wrestling today :)

thanks,

 KK

Roland Dreier [EMAIL PROTECTED] wrote on 02/09/2007 05:20:42 AM:

 Hmm, Steve likes it, Tom doesn't.  Can you guys arm wrestle or
 something and tell me if this patch is correct or not?

  - 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] Unknown SMP Recv

2007-02-08 Thread Hal Rosenstock
On Thu, 2007-02-08 at 19:39, Michael Arndt wrote:
 Hi,
 
 I think I have found the problem. It is the timeout parameter on the 
 umad_send function. How exactly I have to handle this parameter? It seems to 
 be that it shoult be zero if there is no response exspected. But what value 
 should it be if there is a response expected. In a test I used zero for 
 SubnGetResp packets because there shouldn't be more packets and 100 for 
 SubnGet or SubnSet. But if the router is stressed the umad_send function 
 broke down and give an error -5 every thiertieth packet. Any idea or advice?

umad_send takes the timeout in msec. 100 msec is too short. Try
something on the order of seconds. Note also that negative 'timeout_ms'
value makes the kernel wait for the reply forever.

-- Hal

 Thanks Michael 


___
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] RDMA/iwcm: Bugs in cm_conn_req_handler()

2007-02-08 Thread Roland Dreier
BTW, while looking at iwcm.c, I noticed the following highly dubious
code for the first time:

static int iwcm_deref_id(struct iwcm_id_private *cm_id_priv)
{
int ret = 0;

BUG_ON(atomic_read(cm_id_priv-refcount)==0);
if (atomic_dec_and_test(cm_id_priv-refcount)) {
BUG_ON(!list_empty(cm_id_priv-work_list));
if (waitqueue_active(cm_id_priv-destroy_comp.wait)) {
BUG_ON(cm_id_priv-state != 
IW_CM_STATE_DESTROYING);
BUG_ON(test_bit(IWCM_F_CALLBACK_DESTROY,
cm_id_priv-flags));
ret = 1;
}
complete(cm_id_priv-destroy_comp);
}

return ret;
}

The test of waitqueue_active on destroy_comp.wait looks really bad for
two reasons: first, it is relying on an internal implementation detail
of struct completion that really shouldn't be used by generic code.
And second, it seems to me that this doesn't even work right, since
there is a race something like the following:

iw_destroy_cm_id():
destroy_cm_id(cm_id); // still 1 ref left

cm_work_handler():
if (iwcm_deref_id()) // drop last ref
return;
// no one waiting yet, doesn't
// return, but destroy_comp is
// signaled

wait_for_completion(cm_id_priv-destroy_comp);
// destroy_comp is signaled, proceed
kfree(cm_id_priv);

// continue using cm_id_priv
// OOPS

I don't understand this code well enough for the fix to be obvious.

 - 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] Problem is routing CM REQ

2007-02-08 Thread Jason Gunthorpe
On Thu, Feb 08, 2007 at 03:43:24PM -0800, Sean Hefty wrote:
  Looking at the problem more, I think that the issue extends to the remote 
  port 
  LID as well.  My expectation with a local path record query is that the 
  SLID is 
  the local port, and the DLID is the local router.  This should be 
  sufficient for 
  one-way UD traffic, but for connected traffic we still need to discover the 
  remote router and remote port LIDs.
 
 Given a path record query for:
 
 SGID - local
 DGID - remote
 
 What would be the SLID and DLID?
 
 And if the query is reversed, such that:
 
 SGID - remote
 DGID - local
 
 Are the SLID/DLID values simply reversed?

I have a follow up question to this.. With CM how is the SL for each
side determined? I'm looking through the code here and it looks like
the SL of the active side is passed in the REQ to the passive side (ie
both sides are the same) But cma_query_ib_route does not set the
reversible bit when it asks for the path. If you don't set the
reversible bit isn't it necessary to make a 2nd path query to get the
reverse path's SL? [Path responses without the reversible bit set
are actually simplex paths and reversing them probably will run into
SL2VL mapping tables that cause the packets to be dropped ie o7-8]

Infact, to get an optimal path aren't 3 path records required:
1) A reversible path from active to passive from the CM GMPs
  (required by C12-5.1.3)
2) An optimal non-reversible path from active to passive
3) An optimal non-reversible path from passive to active

Jason

___
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] RDMA/iwcm: Bugs in cm_conn_req_handler()

2007-02-08 Thread Krishna Kumar2
Regarding the race - can this and the other problem (of
using internal data-structure) both be taken care of by
changing iw_deref_id to return 1 if atomic_dec_and_test
finds the last reference ? Then the waitqueue_active()
code can be removed, just do the completion (reaching
here implies that someone is in the middle of
iw_destroy_cm_id).

The question is what is the issue if we return 1 even if
no one is waiting in iw_destroy_cm_id() and which results
in cm_work_handler() returning out ?

thanks,

- KK

 BTW, while looking at iwcm.c, I noticed the following highly dubious
 code for the first time:

static int iwcm_deref_id(struct iwcm_id_private *cm_id_priv)
{
   int ret = 0;

   BUG_ON(atomic_read(cm_id_priv-refcount)==0);
   if (atomic_dec_and_test(cm_id_priv-refcount)) {
  BUG_ON(!list_empty(cm_id_priv-work_list));
  if (waitqueue_active(cm_id_priv-destroy_comp.wait)) {
 BUG_ON(cm_id_priv-state != IW_CM_STATE_DESTROYING);
 BUG_ON(test_bit(IWCM_F_CALLBACK_DESTROY,
   cm_id_priv-flags));
 ret = 1;
  }
  complete(cm_id_priv-destroy_comp);
   }

   return ret;
}

 The test of waitqueue_active on destroy_comp.wait looks really bad for
 two reasons: first, it is relying on an internal implementation detail
 of struct completion that really shouldn't be used by generic code.
 And second, it seems to me that this doesn't even work right, since
 there is a race something like the following:

 iw_destroy_cm_id():
 destroy_cm_id(cm_id); // still 1 ref left

 cm_work_handler():
if (iwcm_deref_id()) // drop last ref
   return;
// no one waiting yet, doesn't
// return, but destroy_comp is
// signaled

 wait_for_completion(cm_id_priv-destroy_comp);
 // destroy_comp is signaled, proceed
 kfree(cm_id_priv);

// continue using cm_id_priv
// OOPS

 I don't understand this code well enough for the fix to be obvious.

  - 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] [PATCH 0/5] iw_cxgb3 - misc cleanup and fixes

2007-02-08 Thread Michael S. Tsirkin
  Also I agree with MST, I would like to see the core/ subdirectory die
  completely.
  
 
 ok ok...I'll kill the subdir...

It's not just the directory BTW. Stuff like building completions in
t3_cqe format and then reformatting to ib_wc seems to be much more confusing
(and some of it is actually on datapath).
Same goes for t3_wq and I suspect everything else defined in cxio_wr.h -
please, use the native types from include/rdma/.

Having to wade through 3 driver-specific layers of abstractions just because I 
want to
for example change API in ib_verbs.h and need to update all drivers will be
very taxing. I understand your design calls for 2 layers, but at least the API 
exposed
by code in drivers/net is fairly small, while cxio_wr.h declares 27 structures
which seem to just duplicate ib_verbs.h.

-- 
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] [RFC] ofed_1_2 - SLES9SP3 Backport-IWCM workaroundfor ip_dev_find() bug.

2007-02-08 Thread Michael S. Tsirkin
 Quoting Steve Wise [EMAIL PROTECTED]:
 Subject: Re: [openib-general] [PATCH] [RFC] ofed_1_2 - SLES9SP3 Backport-IWCM 
 workaroundfor ip_dev_find() bug.
 
 Michael, 
 
 From your email, it sounded like you would regression test this.

Not yet, we had lab restructuring - hopefully next week.


-- 
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 0/5] iw_cxgb3 - misc cleanup and fixes

2007-02-08 Thread Michael S. Tsirkin
 And here's what I have pending in for-2.6.21 so far:

What about the mthca memory registration patches?
I thought they are on their way. Should I repost?

-- 
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