RE: [openib-general] How about ib_send_page() ?

2005-06-08 Thread Vivek Kashyap
On Tue, 7 Jun 2005, Michael Krause wrote:

> At 09:28 AM 6/7/2005, Fab Tillier wrote:
> > > From: Roland Dreier [mailto:[EMAIL PROTECTED]
> > > Sent: Tuesday, June 07, 2005 8:38 AM
> > >
> > > Michael> Why not just use the IETF draft for RC / UC based IP over
> > > Michael> IB and not worry about creating something new?
> > >
> > > I think we've come full circle.  The original post was a suggestion on
> > > how to handle the fact the the connected-mode IPoIB draft requires a
> > > network stack to deal with different MTUs for different destinations
> > > on the same logical link.

Yes, the ipoib wg opinion is that a node should be able to communicate in
any IB mode. (I've had to implement such a setup for tokenring in the past
- e.g. if the peer was on a ring with smaller MTU ).

I beleive this is an issue that needs furhter discussion on the ipoverib
discussion list in ietf. Would you restart the discussion there? We can
update the draft as needed after a consensus is reached in the wg.

> >
> >That's right - by implementing IP segmentation in the IPoIB driver when going
> >over UD, the driver could expose a single MTU to the network stack, thereby
> >removing all the issues related to having per-endpoint MTUs.
> >
> >Keeping a 2K MTU for RC mode doesn't really take advantage of IB's RC
> >capabilities.  I'd probably target 64K as the MTU.
>
> The draft should state a minimum for all RC / UC which should be the TCP
> MSS.  Whether one does SAR over a UD endpoint independent of the underlying
> physical MTU can be done but it should not require end-to-end understanding
> of the operation, i.e. the send side tells its local that the TCP MSS is X
> while the receive side only posts 2-4 KB buffers.  This has been done over
> Ethernet for years.
>
> Mike

I suggest we move this discussion to ipoverib@ietf.org (can continue to cc
this list) to involve all since there have been suggestions for draft update.


Vivek
__

Vivek Kashyap
Linux Technology Center, IBM


___
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] 2.6.11.11 NFS over IPoIB crash

2005-06-08 Thread Roland Dreier
Troy> We are running NFS over IPOIB, and are getting kernel panics
Troy> under heavy NFS I/O. This is on a PowerMac G5, and the
Troy> server is a dual opteron running 2.6.11 with the OpenIB code
Troy> from subversion. It looks like a bug in nfs.. but we've only
Troy> seen it using IPoIB... Is it worth trying to reproduce this
Troy> over gigabit ethernet?

I don't see anything obviously IPoIB related in the traceback, so it
might be worth trying to get it to happen over ethernet.  It's
probably also worth running it past the Linux NFS mailing list.

 - 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][RFC] kDAPL: remove dat wrapper function dat_ia_query()

2005-06-08 Thread Caitlin Bestler
On 6/8/05, Tom Duffy <[EMAIL PROTECTED]> wrote:
> I said:
> > > I am putting this out there to see what people think about this sort of
> > > change.  This only does it for one of the functions in dat provider, but
> > > I will change it for all if this is accepted.
> 

Oops, I parsed the header and "sort of change" but missed "in dat provider",
which did make the set clear.

> Then Caitlin Bestler said:
> > What I am not following is why you think DAT_IA_QUERY_FUNC
> > is somehow different than all of the other functions in a DAT method
> > table. Is this just a test run? If not, what is the criteria for deciding
> > which methods are exposed and which have their method table
> > underpinnings kept hidden?
> 
> 
> Right, dat_ia_query() is not special.  Just somewhere to start.
> 

Anyway, one extra benefit of this change is that eliminates any
risk of breaking kernel code using other existing DAT Providers.
And it is easy for someone who has a large body of code using
the function calls to use their own macro or inline function if they
don't want to change their code. So consistency with other kernel
code probably is the best guideline here.
___
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] kDAPL: remove dat wrapper function dat_ia_query()

2005-06-08 Thread Tom Duffy
I said:
> > I am putting this out there to see what people think about this sort of
> > change.  This only does it for one of the functions in dat provider, but
> > I will change it for all if this is accepted.

Then Caitlin Bestler said:
> What I am not following is why you think DAT_IA_QUERY_FUNC
> is somehow different than all of the other functions in a DAT method
> table. Is this just a test run? If not, what is the criteria for deciding
> which methods are exposed and which have their method table
> underpinnings kept hidden?


Right, dat_ia_query() is not special.  Just somewhere to start.

-tduffy


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][RFC] kDAPL: remove dat wrapper function dat_ia_query()

2005-06-08 Thread Tom Duffy
On Wed, 2005-06-08 at 17:07 -0700, Grant Grundler wrote:
> > -ret = dat_ia_query (test_ptr->ia,
> > -   NULL,
> > -   &test_ptr->ia_attr,
> > -   NULL);
> > +ret = test_ptr->ia->common.provider->dat_ia_query(test_ptr->ia, NULL,
> > + &test_ptr->ia_attr, NULL);
> 
> Maybe not reference test_ptr in this line so often?
> It could read:
>   ret = ia->common.provider->dat_ia_query(ia, NULL, &test_ptr->ia_attr,
>   NULL);

Yup, cleaner.  New patch attached.

> > -   .ia_query_func = &dapl_ia_query,
> > +   .dat_ia_query = &dapl_ia_query,
> 
> Yes. I like this alot better too.

Or should the name in dat_provider just be ia_query?  Any need for the
dat_?

Signed-off-by: Tom Duffy <[EMAIL PROTECTED]>

Index: linux-kernel-return/test/dapltest/test/dapl_performance_util.c
===
--- linux-kernel-return/test/dapltest/test/dapl_performance_util.c  
(revision 2573)
+++ linux-kernel-return/test/dapltest/test/dapl_performance_util.c  
(working copy)
@@ -64,10 +64,7 @@ DT_Performance_Test_Create (
 test_ptr->ia = ia;
 test_ptr->cmd = &pt_ptr->Params.u.Performance_Cmd;
 
-ret = dat_ia_query (test_ptr->ia,
-   NULL,
-   &test_ptr->ia_attr,
-   NULL);
+ret = ia->common.provider->dat_ia_query(ia, NULL, &test_ptr->ia_attr, 
NULL);
 if ( DAT_SUCCESS != ret)
 {
DT_Tdep_PT_Printf (phead, "Test[" F64x "]: dat_ia_query error: %s\n",
Index: linux-kernel-return/test/dapltest/test/dapl_fft_queryinfo.c
===
--- linux-kernel-return/test/dapltest/test/dapl_fft_queryinfo.c (revision 2573)
+++ linux-kernel-return/test/dapltest/test/dapl_fft_queryinfo.c (working copy)
@@ -165,10 +165,8 @@ int DT_queryinfo_basic (Params_t *params
 {
if (result_wanted == DAT_SUCCESS)
{
-   rc = dat_ia_query (ia,
-  &evd,
-  &ia_attributes,
-  &provider_attributes);
+   rc = ia->common.provider->dat_ia_query(ia, &evd, &ia_attributes,
+  &provider_attributes);
}
else if (result_wanted == DAT_INVALID_PARAMETER)
{
@@ -177,17 +175,13 @@ int DT_queryinfo_basic (Params_t *params
 * NULL out ia_attr and for the DAT_IA_ATTR_MASK to
 * have values
 */
-   rc = dat_ia_query (ia,
-  &evd,
-  NULL,
-  &provider_attributes);
+   rc = ia->common.provider->dat_ia_query(ia, &evd, NULL,
+  &provider_attributes);
}
else if (result_wanted == DAT_INVALID_HANDLE)
{
-   rc = dat_ia_query (ia,
-  &evd,
-  &ia_attributes,
-  &provider_attributes);
+   rc = ia->common.provider->dat_ia_query(ia, &evd, &ia_attributes,
+  &provider_attributes);
}
 }
 
Index: linux-kernel-return/test/dapltest/test/dapl_test_util.c
===
--- linux-kernel-return/test/dapltest/test/dapl_test_util.c (revision 2573)
+++ linux-kernel-return/test/dapltest/test/dapl_test_util.c (working copy)
@@ -44,10 +44,9 @@ DT_query (   Per_Test_Data_t *pt_ptr,
 phead = pt_ptr->Params.phead;
 
 /* Query the IA */
-ret = dat_ia_query (ia,
-&async_evd_hdl,
-&pt_ptr->ia_attr,
-&pt_ptr->provider_attr);
+ret = ia->common.provider->dat_ia_query(ia, &async_evd_hdl,
+   &pt_ptr->ia_attr,
+   &pt_ptr->provider_attr);
 if (ret != DAT_SUCCESS)
 {
DT_Tdep_PT_Printf (phead, "%s: dat_ia_query error: %s\n",
Index: linux-kernel-return/dat-provider/dapl_provider.c
===
--- linux-kernel-return/dat-provider/dapl_provider.c(revision 2573)
+++ linux-kernel-return/dat-provider/dapl_provider.c(working copy)
@@ -67,7 +67,7 @@ static struct dat_provider g_dapl_provid
.extension = NULL,
 
.ia_open_func = &dapl_ia_open,
-   .ia_query_func = &dapl_ia_query,
+   .dat_ia_query = &dapl_ia_query,
.ia_close_func = &dapl_ia_close,
.ia_memtype_hint_func = &dapl_ia_memtype_hint,
 
Index: linux-kernel-return/dat/api.c
===
--- linux-kernel-return/dat/api.c   (revision 2573)
+++ linux-kernel-return/dat/api.c   

Re: [openib-general] [PATCH][RFC] kDAPL: remove dat wrapper function dat_ia_query()

2005-06-08 Thread Caitlin Bestler
On 6/8/05, Tom Duffy <[EMAIL PROTECTED]> wrote:
> I am putting this out there to see what people think about this sort of
> change.  This only does it for one of the functions in dat provider, but
> I will change it for all if this is accepted.
> 
> Basically, instead of using a redirected function wrapper, it calls the
> function directly from the struct (how the rest of the kernel does it).
> 
> And it gets rid of the typedef DAT_IA_QUERY_FUNC.
> 


Hiding the fact that there was a method table was definitely a
cosmetic decision to appeal to the biases of user mode C programmers.
I agree that anyone working in the kernel is already quite familiar with
calling a function from a struct. A strong argument can be made that
a kernel programmer should know that they are making a call through
a method table.

What I am not following is why you think DAT_IA_QUERY_FUNC
is somehow different than all of the other functions in a DAT method
table. Is this just a test run? If not, what is the criteria for deciding
which methods are exposed and which have their method table
underpinnings kept hidden?
___
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] kDAPL: remove dat wrapper function dat_ia_query()

2005-06-08 Thread Grant Grundler
On Wed, Jun 08, 2005 at 03:54:34PM -0700, Tom Duffy wrote:
> I am putting this out there to see what people think about this sort of
> change.  This only does it for one of the functions in dat provider, but
> I will change it for all if this is accepted.

I agree it's the right direction. I would not have guessed dat_ia_query()
is really a macro that does pointer chasing.

> -ret = dat_ia_query (test_ptr->ia,
> - NULL,
> - &test_ptr->ia_attr,
> - NULL);
> +ret = test_ptr->ia->common.provider->dat_ia_query(test_ptr->ia, NULL,
> +   &test_ptr->ia_attr, NULL);

Maybe not reference test_ptr in this line so often?
It could read:
ret = ia->common.provider->dat_ia_query(ia, NULL, &test_ptr->ia_attr,
NULL);

> - .ia_query_func = &dapl_ia_query,
> + .dat_ia_query = &dapl_ia_query,

Yes. I like this alot better too.

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

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


Re: [openib-general] Re: [openib-commits] r2480 - gen2/trunk/src/userspace/perftest

2005-06-08 Thread Grant Grundler
On Wed, Jun 08, 2005 at 04:40:57PM -0700, Grant Grundler wrote:
> Index: rdma_bw.c
> ===
> --- rdma_bw.c (revision 2570)
> +++ rdma_bw.c (working copy)
> @@ -61,10 +61,6 @@
...

Sorry - just realized I forgot the:
Signed-off-by: Grant Grundler <[EMAIL PROTECTED]>

thanks,
grant

>  
>  static int page_size;
>  
> -struct report_options {
> - int cycles;   /* report delta's in cycles, not microsec's */
> -};
> -
>  struct pingpong_context {
>   struct ibv_context *context;
>   struct ibv_pd  *pd;
> @@ -422,19 +418,14 @@ static void usage(const char *argv0)
>   printf("  -t, --tx-depth=   size of tx queue (default 100)\n");
>   printf("  -n, --iters=number of exchanges (at least 2, 
> default 1000)\n");
>   printf("  -b, --bidirectionalmeasure bidirectional bandwidth 
> (default unidirectional)\n");
> - printf("  -C, --report-cyclesreport times in cpu cycle units 
> (default seconds)\n");
> - printf("  -H, --report-histogram print out all results (default print 
> summary only)\n");
> - printf("  -U, --report-unsorted  (implies -H) print out unsorted 
> results (default sorted)\n");
>  }
>  
> -static void print_report(struct report_options * options,
> -  unsigned int iters, double size, int duplex,
> +static void print_report(unsigned int iters, int size, int duplex,
>cycles_t *tposted, cycles_t *tcompleted)
>  {
>   double cycles_to_units;
> - double tsize; /* Transferred size, in megabytes */
> + unsigned long tsize;/* Transferred size, in megabytes */
>   int i, j;
> - const char* units;
>   int opt_posted = 0, opt_completed = 0;
>   cycles_t opt_delta;
>   cycles_t t;
> @@ -453,19 +444,21 @@ static void print_report(struct report_o
>   }
>   }
>  
> - if (options->cycles) {
> - cycles_to_units = 1;
> - units = "cycles";
> - } else {
> - cycles_to_units = get_cpu_mhz() * 100;
> - units = "sec";
> - }
> + cycles_to_units = get_cpu_mhz() * 100;
>  
>   tsize = duplex ? 2 : 1;
> - tsize = tsize * size / 0x10;
> + tsize = tsize * size / 1024;
>  
> - printf("Bandwidth peak (#%d to #%d): %g MByte/%s\n", opt_posted, 
> opt_completed, tsize * cycles_to_units / opt_delta, units);
> - printf("Bandwidth average: %g MByte/%s\n", tsize * iters * 
> cycles_to_units / (tcompleted[iters - 1] - tposted[0]), units);
> + printf("Bandwidth peak (#%d to #%d): %g MB/sec\n",
> +  opt_posted, opt_completed,
> +  tsize * cycles_to_units / opt_delta / 1024);
> + printf("Bandwidth average: %g MB/sec\n",
> +  tsize * iters * cycles_to_units / (tcompleted[iters - 
> 1] - tposted[0]) / 1024);
> +
> + printf("Service Demand peak (#%d to #%d): %ld cycles/KB\n",
> +  opt_posted, opt_completed, opt_delta/tsize);
> + printf("Service Demand Avg  : %ld cycles/KB\n",
> +  (tcompleted[iters - 1] - tposted[0])/(tsize * iters));
>  }
>  
>  
> @@ -480,14 +473,13 @@ int main(int argc, char *argv[])
>   char*servername = NULL;
>   int  port = 18515;
>   int  ib_port = 1;
> - int  size = 1;
> + int  size = 4 * 1024;
>   int  tx_depth = 100;
>   int  iters = 1000;
>   int  scnt, ccnt;
>   int  sockfd;
>   int  duplex = 0;
>   struct ibv_qp   *qp;
> - struct report_optionsreport = {};
>  
>   cycles_t*tposted;
>   cycles_t*tcompleted;
> @@ -504,11 +496,10 @@ int main(int argc, char *argv[])
>   { .name = "iters",  .has_arg = 1, .val = 'n' },
>   { .name = "tx-depth",   .has_arg = 1, .val = 't' },
>   { .name = "bidirectional",  .has_arg = 0, .val = 'b' },
> - { .name = "report-cycles",  .has_arg = 0, .val = 'C' },
>   { 0 }
>   };
>  
> - c = getopt_long(argc, argv, "p:d:i:s:n:t:bC", long_options, 
> NULL);
> + c = getopt_long(argc, argv, "p:d:i:s:n:t:b", long_options, 
> NULL);
>   if (c == -1)
>   break;
>  
> @@ -565,10 +556,6 @@ int main(int argc, char *argv[])
>   duplex = 1;
>   break;
>  
> - case 'C':
> - report.cycles = 1;
> - break;
> -
>   default:
>   usage(argv[0]);
>   return 1;
> @@ -751,7 +738,7 @@ int main(int argc, char *argv[])
>   write(sockfd, "done", sizeof "done");
>   close(sockfd);
>  
>

Re: [openib-general] [PATCH] rdma_lat-09 and results

2005-06-08 Thread Grant Grundler
On Wed, Jun 01, 2005 at 05:52:28PM -0700, Grant Grundler wrote:
> Michael,
> 
> Good news:
>   My next cleanup of rdma_lat.c is working and patch is appended.

Michael,
Did you want to comment on this patch or apply it?
I can resend privately it you don't have the original mail.

>   Summary of changes below.
> 
> Bad News:
>   perf is about ~15 cycles slower since the last time I tested.
>   (Hrm...maybe it's time to cycle power on the TS90 switch again.)

Seems with discussion on perf was distracting from the patch.
I'll seperate those next time.

thanks,
grant

> Here's with the new rdma_lat.c:
> [EMAIL PROTECTED]:/usr/src/openib_gen2/src/userspace/perftest$ ./rdma_lat  -C
>local address: LID 0x27 QPN 0x80406 PSN 0x9188f7 RKey 0x300434 VAddr 
> 0x60014001
>   remote address: LID 0x25 QPN 0x70406 PSN 0x5d4824 RKey 0x2a0434 VAddr 
> 0x60014001
> Latency typical: 7140 cycles
> Latency best   : 6915 cycles
> Latency worst  : 52915.5 cycles
> [EMAIL PROTECTED]:/usr/src/openib_gen2/src/userspace/perftest$ 
> 
> And the "client" side:
> [EMAIL PROTECTED]:/usr/src/openib_gen2/src/userspace/perftest$ ./rdma_lat -C 
> 10.0.0.51
>local address: LID 0x25 QPN 0x70406 PSN 0x5d4824 RKey 0x2a0434 VAddr 
> 0x60014001
>   remote address: LID 0x27 QPN 0x80406 PSN 0x9188f7 RKey 0x300434 VAddr 
> 0x60014001
> Latency typical: 7140 cycles
> Latency best   : 6907 cycles
> Latency worst  : 94920 cycles
> 
> 
> The previous set of rdma_lat results are here:
> http://openib.org/pipermail/openib-general/2005-May/006721.html
> 
> I'll guess the previous SVN verion was no older than r2229.
> 
> 
> I get 7140 to 7151 for the original rdma_lat.   Usually 7147.5.
> I get 7132 to 7155 with my version of rdma_lat. Usually 7140.
> No statistically significant differences.
> Both essentially agree on the higher result.
> Using "-n 1" gave more consistent results *
> 
> I use "taskset" to bind the rdma_lat test to a CPU.
> But it didn't matter which CPU I bound the task to - results
> where basically the same.  I suspect the "stream" mode just
> does not depend on or generating that many interrupts.
> 
> 
> diffstat rdma_lat.c-09-diff 
>  rdma_lat.c |  395 
> +
>  1 files changed, 188 insertions(+), 207 deletions(-)
> 
> Commit Log entry/Summary of changes:
>   o move device lookup from main() to pp_find_dev()
>   o move sockfd handling code to pp_open_port()
>   o consolidate server/client "key exchange" code path
>   o enumerate return values in main()
>   o fixed nit: pp_*_exch_dest was called twice.
> Each time it would malloc a new "rem_dest".
> Code in pp_open_port() now free()'s the first one.
> 
> Signed-off-by: Grant Grundler <[EMAIL PROTECTED]>
> 
> thanks,
> grant
> 
> 
> 
> Index: rdma_lat.c
> ===
> --- rdma_lat.c(revision 2519)
> +++ rdma_lat.c(working copy)
> @@ -103,30 +103,40 @@ static uint16_t pp_get_local_lid(struct 
>   return attr.lid;
>  }
>  
> -static int pp_client_connect(const char *servername, int port)
> +
> +static int pp_connect_sock(const char *servername, int port)
>  {
>   struct addrinfo *res, *t;
>   struct addrinfo hints = {
> + .ai_flags= AI_PASSIVE,  /* Server only? */
>   .ai_family   = AF_UNSPEC,
>   .ai_socktype = SOCK_STREAM
>   };
>   char *service;
> - int n;
>   int sockfd = -1;
> + int n;
>  
>   asprintf(&service, "%d", port);
>   n = getaddrinfo(servername, service, &hints, &res);
>  
>   if (n < 0) {
> - fprintf(stderr, "%s for %s:%d\n", gai_strerror(n), servername, 
> port);
> + fprintf(stderr, "%s for %s:%d\n", gai_strerror(n),
> +  servername ? servername : "NULL", port);
>   return n;
>   }
>  
>   for (t = res; t; t = t->ai_next) {
>   sockfd = socket(t->ai_family, t->ai_socktype, t->ai_protocol);
>   if (sockfd >= 0) {
> - if (!connect(sockfd, t->ai_addr, t->ai_addrlen))
> - break;
> + if (servername) {
> + if (!connect(sockfd, t->ai_addr, t->ai_addrlen))
> + break;
> + } else {
> + setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, 
> &n, sizeof n);
> + if (!bind(sockfd, t->ai_addr, t->ai_addrlen))
> + break;
> + }
> +
>   close(sockfd);
>   sockfd = -1;
>   }
> @@ -134,147 +144,100 @@ static int pp_client_connect(const char 
>  
>   freeaddrinfo(res);
>  
> - if (sockfd < 0) {
> - fprintf(stderr, "Couldn't connect to %s:%d\n", servername, 
> por

[openib-general] Re: [openib-commits] r2480 - gen2/trunk/src/userspace/perftest

2005-06-08 Thread Grant Grundler
On Wed, Jun 08, 2005 at 08:50:30AM +0300, Michael S. Tsirkin wrote:
> > The numbers (MByte/cycles) don't mean anything to me.
> > Can we report this as cycles/MB (or KB) instead? (aka Service Demand)
> 
> Sure. Patch?

Appended. Please apply.

> > The other metric I care about is MB/s.
> 
> Dont pass -C then.

Doh! Of course.
-C makes no sense in this context.
It's removed in the patch below.

Here is a sample output:

[EMAIL PROTECTED]:/usr/src/openib_gen2/src/userspace/perftest$ ./rdma_bw -b -n 
1 -s 32768 10.0.0.51
  local address:  LID 0x06, QPN 0x280406, PSN 0x929ad8 RKey 0xf00434 VAddr 
0x6001c000
  remote address: LID 0x04, QPN 0x270406, PSN 0x61c246, RKey 0xea0434 VAddr 
0x6001c000
Bandwidth peak (#0 to #7080): 722.421 MB/sec
Bandwidth average: 721.997 MB/sec
Service Demand peak (#0 to #7080): 2027 cycles/KB
Service Demand Avg  : 2028 cycles/KB

thanks,
grant


Index: rdma_bw.c
===
--- rdma_bw.c   (revision 2570)
+++ rdma_bw.c   (working copy)
@@ -61,10 +61,6 @@
 
 static int page_size;
 
-struct report_options {
-   int cycles;   /* report delta's in cycles, not microsec's */
-};
-
 struct pingpong_context {
struct ibv_context *context;
struct ibv_pd  *pd;
@@ -422,19 +418,14 @@ static void usage(const char *argv0)
printf("  -t, --tx-depth=   size of tx queue (default 100)\n");
printf("  -n, --iters=number of exchanges (at least 2, 
default 1000)\n");
printf("  -b, --bidirectionalmeasure bidirectional bandwidth 
(default unidirectional)\n");
-   printf("  -C, --report-cyclesreport times in cpu cycle units 
(default seconds)\n");
-   printf("  -H, --report-histogram print out all results (default print 
summary only)\n");
-   printf("  -U, --report-unsorted  (implies -H) print out unsorted 
results (default sorted)\n");
 }
 
-static void print_report(struct report_options * options,
-unsigned int iters, double size, int duplex,
+static void print_report(unsigned int iters, int size, int duplex,
 cycles_t *tposted, cycles_t *tcompleted)
 {
double cycles_to_units;
-   double tsize; /* Transferred size, in megabytes */
+   unsigned long tsize;/* Transferred size, in megabytes */
int i, j;
-   const char* units;
int opt_posted = 0, opt_completed = 0;
cycles_t opt_delta;
cycles_t t;
@@ -453,19 +444,21 @@ static void print_report(struct report_o
}
}
 
-   if (options->cycles) {
-   cycles_to_units = 1;
-   units = "cycles";
-   } else {
-   cycles_to_units = get_cpu_mhz() * 100;
-   units = "sec";
-   }
+   cycles_to_units = get_cpu_mhz() * 100;
 
tsize = duplex ? 2 : 1;
-   tsize = tsize * size / 0x10;
+   tsize = tsize * size / 1024;
 
-   printf("Bandwidth peak (#%d to #%d): %g MByte/%s\n", opt_posted, 
opt_completed, tsize * cycles_to_units / opt_delta, units);
-   printf("Bandwidth average: %g MByte/%s\n", tsize * iters * 
cycles_to_units / (tcompleted[iters - 1] - tposted[0]), units);
+   printf("Bandwidth peak (#%d to #%d): %g MB/sec\n",
+opt_posted, opt_completed,
+tsize * cycles_to_units / opt_delta / 1024);
+   printf("Bandwidth average: %g MB/sec\n",
+tsize * iters * cycles_to_units / (tcompleted[iters - 
1] - tposted[0]) / 1024);
+
+   printf("Service Demand peak (#%d to #%d): %ld cycles/KB\n",
+opt_posted, opt_completed, opt_delta/tsize);
+   printf("Service Demand Avg  : %ld cycles/KB\n",
+(tcompleted[iters - 1] - tposted[0])/(tsize * iters));
 }
 
 
@@ -480,14 +473,13 @@ int main(int argc, char *argv[])
char*servername = NULL;
int  port = 18515;
int  ib_port = 1;
-   int  size = 1;
+   int  size = 4 * 1024;
int  tx_depth = 100;
int  iters = 1000;
int  scnt, ccnt;
int  sockfd;
int  duplex = 0;
struct ibv_qp   *qp;
-   struct report_optionsreport = {};
 
cycles_t*tposted;
cycles_t*tcompleted;
@@ -504,11 +496,10 @@ int main(int argc, char *argv[])
{ .name = "iters",  .has_arg = 1, .val = 'n' },
{ .name = "tx-depth",   .has_arg = 1, .val = 't' },
{ .name = "bidirectional",  .has_arg = 0, .val = 'b' },
-   { .name = "report-cycles",  .has_arg = 0, .val = 'C' },
{ 0 }
};
 
-   c = getopt_long(arg

[openib-general] [PATCH][RFC] kDAPL: remove dat wrapper function dat_ia_query()

2005-06-08 Thread Tom Duffy
I am putting this out there to see what people think about this sort of
change.  This only does it for one of the functions in dat provider, but
I will change it for all if this is accepted.

Basically, instead of using a redirected function wrapper, it calls the
function directly from the struct (how the rest of the kernel does it).

And it gets rid of the typedef DAT_IA_QUERY_FUNC.

Signed-off-by: Tom Duffy <[EMAIL PROTECTED]>

 dat-provider/dapl_provider.c   |2 +-
 dat/api.c  |4 ++--
 dat/dat.h  |   15 ++-
 test/dapltest/test/dapl_fft_queryinfo.c|   18 ++
 test/dapltest/test/dapl_performance_util.c |6 ++
 test/dapltest/test/dapl_test_util.c|7 +++
 6 files changed, 16 insertions(+), 36 deletions(-)

Index: linux-kernel-return/test/dapltest/test/dapl_performance_util.c
===
--- linux-kernel-return/test/dapltest/test/dapl_performance_util.c  
(revision 2573)
+++ linux-kernel-return/test/dapltest/test/dapl_performance_util.c  
(working copy)
@@ -64,10 +64,8 @@ DT_Performance_Test_Create (
 test_ptr->ia = ia;
 test_ptr->cmd = &pt_ptr->Params.u.Performance_Cmd;
 
-ret = dat_ia_query (test_ptr->ia,
-   NULL,
-   &test_ptr->ia_attr,
-   NULL);
+ret = test_ptr->ia->common.provider->dat_ia_query(test_ptr->ia, NULL,
+ &test_ptr->ia_attr, NULL);
 if ( DAT_SUCCESS != ret)
 {
DT_Tdep_PT_Printf (phead, "Test[" F64x "]: dat_ia_query error: %s\n",
Index: linux-kernel-return/test/dapltest/test/dapl_fft_queryinfo.c
===
--- linux-kernel-return/test/dapltest/test/dapl_fft_queryinfo.c (revision 2573)
+++ linux-kernel-return/test/dapltest/test/dapl_fft_queryinfo.c (working copy)
@@ -165,10 +165,8 @@ int DT_queryinfo_basic (Params_t *params
 {
if (result_wanted == DAT_SUCCESS)
{
-   rc = dat_ia_query (ia,
-  &evd,
-  &ia_attributes,
-  &provider_attributes);
+   rc = ia->common.provider->dat_ia_query(ia, &evd, &ia_attributes,
+  &provider_attributes);
}
else if (result_wanted == DAT_INVALID_PARAMETER)
{
@@ -177,17 +175,13 @@ int DT_queryinfo_basic (Params_t *params
 * NULL out ia_attr and for the DAT_IA_ATTR_MASK to
 * have values
 */
-   rc = dat_ia_query (ia,
-  &evd,
-  NULL,
-  &provider_attributes);
+   rc = ia->common.provider->dat_ia_query(ia, &evd, NULL,
+  &provider_attributes);
}
else if (result_wanted == DAT_INVALID_HANDLE)
{
-   rc = dat_ia_query (ia,
-  &evd,
-  &ia_attributes,
-  &provider_attributes);
+   rc = ia->common.provider->dat_ia_query(ia, &evd, &ia_attributes,
+  &provider_attributes);
}
 }
 
Index: linux-kernel-return/test/dapltest/test/dapl_test_util.c
===
--- linux-kernel-return/test/dapltest/test/dapl_test_util.c (revision 2573)
+++ linux-kernel-return/test/dapltest/test/dapl_test_util.c (working copy)
@@ -44,10 +44,9 @@ DT_query (   Per_Test_Data_t *pt_ptr,
 phead = pt_ptr->Params.phead;
 
 /* Query the IA */
-ret = dat_ia_query (ia,
-&async_evd_hdl,
-&pt_ptr->ia_attr,
-&pt_ptr->provider_attr);
+ret = ia->common.provider->dat_ia_query(ia, &async_evd_hdl,
+   &pt_ptr->ia_attr,
+   &pt_ptr->provider_attr);
 if (ret != DAT_SUCCESS)
 {
DT_Tdep_PT_Printf (phead, "%s: dat_ia_query error: %s\n",
Index: linux-kernel-return/dat-provider/dapl_provider.c
===
--- linux-kernel-return/dat-provider/dapl_provider.c(revision 2573)
+++ linux-kernel-return/dat-provider/dapl_provider.c(working copy)
@@ -67,7 +67,7 @@ static struct dat_provider g_dapl_provid
.extension = NULL,
 
.ia_open_func = &dapl_ia_open,
-   .ia_query_func = &dapl_ia_query,
+   .dat_ia_query = &dapl_ia_query,
.ia_close_func = &dapl_ia_close,
.ia_memtype_hint_func = &dapl_ia_memtype_hint,
 
Index: linux-kernel-return/dat/api.c
===
--- linux-kernel-return/dat/api.c 

Re: [openib-general] [PATCHv2][RFC] kDAPL: use cm timers instead of own

2005-06-08 Thread James Lentini


On Wed, 8 Jun 2005, Sean Hefty wrote:


Hal Rosenstock wrote:

On Wed, 2005-06-08 at 11:44, James Lentini wrote:

We interpreted the above to mean "give the connection protocol as much 
time as it needs to establish a connection, but don't mask errors (no path 
to the remove node, etc.)". For that reason we changed the variable name 
to DAT_TIMEOUT_MAX.



But if the REQ is lost, the timeout is really really long (longer than
most will wait for an error). Transaction test also appears to be using
this as well as the quit test.


My interpretation was that this is a DAPL level timeout and did not 
necessarily relate to a timeout for a single CM REQ.  That is, there could 
still be a different timeout specified to the CM, but the number of retries 
could be infinite.


If there are kernel users in need of an truly inifinite timeout, we 
could do that.


Note that I'm not saying that an infinite timeout makes sense, but the use of 
TIMEOUT_MAX seems reasonable.  To me that indicates that DAPL decides how 
long is needed to establish a timeout, and it manages all retries.


- 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] [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread James Lentini



On Wed, 8 Jun 2005, Tom Duffy wrote:


On Wed, 2005-06-08 at 22:41 +0200, Bernhard Fischer wrote:

On Wed, Jun 08, 2005 at 01:19:41PM -0700, Tom Duffy wrote:

On Wed, 2005-06-08 at 21:48 +0200, Bernhard Fischer wrote:



'if (NULL != this)' and 'if (0 != that)' occurances, too? I personally
would appreciate it, since these variants are harder to read for me.


What do you want to see instead?

if (this) {
/* do stuff */
}


yes, this.


I think James would take these types of patches.


I would.


In any event, going through the code with fine toothed comb will happen
after all the major upheavals, I think.  *I* want to fix all the major
architectural issues that are holding up acceptance before nit-picking.

If I have the time or inclination, I will clean up these things.

-tduffy


___
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] [PATCHv2][RFC] kDAPL: use cm timers instead of own

2005-06-08 Thread James Lentini


On Wed, 8 Jun 2005, Hal Rosenstock wrote:

halr> On Wed, 2005-06-08 at 11:44, James Lentini wrote:
halr> > We interpreted the above to mean "give the connection protocol as 
halr> > much time as it needs to establish a connection, but don't mask 
halr> > errors (no path to the remove node, etc.)". For that reason we changed 
halr> > the variable name to DAT_TIMEOUT_MAX.
halr> 
halr> But if the REQ is lost, the timeout is really really long (longer than
halr> most will wait for an error). 

If a user doesn't want to wait DAT_TIMEOUT_MAX time, it can pass a 
smaller amount of time to dat_ep_connect. Does this satisfy your 
requirements?

halr> Transaction test also appears to be using this as well as the 
halr> quit test.
halr> 
halr> -- Hal
halr> 
___
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] shutdown issue with SDP

2005-06-08 Thread William Jordan
On 6/8/05, Libor Michalek <[EMAIL PROTECTED]> wrote:
> On Wed, Jun 08, 2005 at 01:29:42PM -0400, William Jordan wrote:
> > I'm trying to run netperf over SDP using libsdp. I'm having
> > intermittent success, but usually, I get a failure. The client does a
> > shutdown (SHUT_WR), but the server gets an ECONNRESET, "Connection
> > reset by peer", on the recv instead of a zero length recv.
> >
> > I'm running 2568.
> >
> > Anyone seen similar/different results?
> 
> Bill,
> 
>  Can you try the patch I sent out yesterday? It significantly simplifies
> the connection state machine within SDP. I ran it successfully with a
> number of the netperf tests. (TCP_CC, TCP_CRR, TCP_RR, TCP_STREAM)
> 
> Thanks.
> 
> -Libor
> 

That appears to have fixed it.

Thanks.

-- 
Bill Jordan
SilverStorm Technologies
___
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] [PATCHv2][RFC] kDAPL: use cm timers instead of own

2005-06-08 Thread James Lentini

That would be another way to interpret this: that each time the CM 
times out, DAPL should re-attempt to establish a connection. However, 
the original implementation didn't do this and the feedback I've 
received is that such a feature would not be appropriate for the 
kernel. 

If there are kernel applications that want this, we can add it.

On Wed, 8 Jun 2005, Tom Duffy wrote:

tduffy> On Wed, 2005-06-08 at 11:44 -0400, James Lentini wrote:
tduffy> > We interpreted the above to mean "give the connection protocol as 
tduffy> > much time as it needs to establish a connection, but don't mask 
tduffy> > errors (no path to the remove node, etc.)". For that reason we 
changed 
tduffy> > the variable name to DAT_TIMEOUT_MAX.
tduffy> 
tduffy> Well, let's say the end node is not there yet.  Should the CM keep
tduffy> trying indefinitely waiting for somebody to show up and respond?
tduffy> 
tduffy> -tduffy
tduffy> 
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

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


[openib-general] Re: [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread James Lentini

Committed in revision 2573.
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

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


Re: [openib-general] Re: [PATCHv3] kDAPL: remove use of HANDLE's (vs. r2564)

2005-06-08 Thread James Lentini


The new problem that I'm seeing is below. I don't think that this 
patch caused this though, so I'll go ahead and commit your patch with 
my modifications.


The oops I see is below. By my calculations, the crash is on line 450 
of mthca_cq.c. That line is:


entry->wr_id = (*cur_qp)->wrid[wqe_index];

and the resulting instruction that fails is

b98:   8b 54 d8 04 mov0x4(%eax,%ebx,8),%edx

Does anyone know which part of the C statement that is?

Unable to handle kernel paging request at virtual address 2014
 printing eip:
e0a65008
*pde = 1814d067
Oops:  [#1]
Modules linked in: kdapltest ib_dat_provider dat ib_cm ib_at ib_ipoib 
ib_sa md5 ipv6 parport_pc lp parport autofs4 nfs lockd sunrpc 
i2c_piix4 i2c_core ib_mthca ib_mad ib_core e100 mii floppy sg aic7xxx 
sd_mod scsi_mod

CPU:0
EIP:0060:[]Not tainted VLI
EFLAGS: 00010046   (2.6.11-openib)
EIP is at mthca_poll_cq+0x368/0x760 [ib_mthca]
eax:    ebx: 0402   ecx:    edx: dd6ea000
esi: cdbf7000   edi: cdbf7058   ebp: c0469cc8   esp: c0469c5c
ds: 007b   es: 007b   ss: 0068
Process swapper (pid: 0, threadinfo=c0469000 task=c03bfc20)
Stack:  c046cf1f 0030     

   cdbf5040    c0469d04  0086 
dd8af000
   c0469d04 0001 d1a8d9c0  0046 0001  
cdbf7000

Call Trace:
 [] show_stack+0x7a/0x90
 [] show_registers+0x149/0x1c0
 [] die+0x126/0x2a0
 [] do_page_fault+0x45e/0x644
 [] error_code+0x2b/0x30
 [] dapl_ib_completion_poll+0x3c/0xd1 [ib_dat_provider]
 [] dapl_evd_cq_poll_to_event+0x17/0x3b [ib_dat_provider]
 [] dapl_evd_dequeue+0x277/0x34b [ib_dat_provider]
 [] dapl_evd_upcall_trigger+0x34/0x66 [ib_dat_provider]
 [] dapl_evd_dto_callback+0xd4/0xea [ib_dat_provider]
 [] mthca_cq_event+0x33/0x80 [ib_mthca]
 [] mthca_eq_int+0x3a4/0x580 [ib_mthca]
 [] mthca_tavor_interrupt+0x81/0x350 [ib_mthca]
 [] handle_IRQ_event+0x35/0x70
 [] __do_IRQ+0x108/0x340
 [] do_IRQ+0x96/0xa0
 [] common_interrupt+0x1a/0x20
 [] handle_IRQ_event+0x35/0x70
 [] __do_IRQ+0x108/0x340
 [] do_IRQ+0x5a/0xa0
 ===
 [] common_interrupt+0x1a/0x20
 [] cpu_idle+0x57/0x60
 [] rest_init+0x19/0x20
 [] start_kernel+0x17a/0x1f0
 [] 0xc010019f
Code: 00 00 00 8b 55 b4 0f b6 52 1d 81 e2 80 00 00 00 e9 d3 fd ff ff 
8b 45 b4 8d 7e 58 8b 4f 34 8b 58 18 8b 86 e0 00 00 00 0f cb d3 eb <8b> 
54 d8 04 8b 04 d8 e9 36 fe ff ff 8b 55 b4 8b 4d c4 8b 42 14




On Wed, 8 Jun 2005, Tom Duffy wrote:


On Wed, 2005-06-08 at 13:44 -0700, Tom Duffy wrote:

On Wed, 2005-06-08 at 16:36 -0400, James Lentini wrote:

Do you see any additional stability problems after applying this? I'm
updating my OpenIB tree to see if that is my problem.


This just in!


I think your patch is fine, at least it doesn't introduce any new bugs,
because after a reboot of both machines, restarting the SM, the quit
test and the transaction test work fine.

-tduffy


___
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] [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread Bernhard Fischer
On Wed, Jun 08, 2005 at 01:52:47PM -0700, Tom Duffy wrote:
>On Wed, 2005-06-08 at 22:41 +0200, Bernhard Fischer wrote:
>> On Wed, Jun 08, 2005 at 01:19:41PM -0700, Tom Duffy wrote:
>> >On Wed, 2005-06-08 at 21:48 +0200, Bernhard Fischer wrote:
>> 
>> >> 'if (NULL != this)' and 'if (0 != that)' occurances, too? I personally
>> >> would appreciate it, since these variants are harder to read for me.
>> >
>> >What do you want to see instead?
>> >
>> >if (this) {
>> >/* do stuff */
>> >}
>> 
>> yes, this.
>
>I think James would take these types of patches.
>
>In any event, going through the code with fine toothed comb will happen
>after all the major upheavals, I think.  *I* want to fix all the major
>architectural issues that are holding up acceptance before nit-picking.

certainly.
>
>If I have the time or inclination, I will clean up these things.


Index: TODO
===
--- TODO(revision 2572)
+++ TODO(working copy)
@@ -23,3 +23,7 @@ IB DAT PROVIDER
 *) cache remote peer's address so that it does not need to be retrieved in 
dapl_ep_query.
 *) Replace dapl linked lists with Linux linked lists
+*) referencing
+   http://openib.org/pipermail/openib-general/2005-January/003149.html
+   and only then replace the checks turned up by
+   'grep -r -E "NULL.*!=|!=.*NULL" *' with if(foo)... for better readability
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

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

Re: [openib-general] Re: [PATCHv3] kDAPL: remove use of HANDLE's (vs. r2564)

2005-06-08 Thread Tom Duffy
On Wed, 2005-06-08 at 13:44 -0700, Tom Duffy wrote:
> On Wed, 2005-06-08 at 16:36 -0400, James Lentini wrote:
> > Do you see any additional stability problems after applying this? I'm 
> > updating my OpenIB tree to see if that is my problem.
> 
> This just in!

I think your patch is fine, at least it doesn't introduce any new bugs,
because after a reboot of both machines, restarting the SM, the quit
test and the transaction test work fine.

-tduffy


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

[openib-general] 2.6.11.11 NFS over IPoIB crash

2005-06-08 Thread Troy Benjegerdes
We are running NFS over IPOIB, and are getting kernel panics under heavy 
NFS I/O. This is on a PowerMac G5, and the server is a dual opteron 
running 2.6.11 with the OpenIB code from subversion. It looks like a bug 
in nfs.. but we've only seen it using IPoIB... Is it worth trying to 
reproduce this over gigabit ethernet?


Brett Bode wrote:

Well I finally got 2.6.11.11 running this morning, but crashed it too. 
I guess I will try updating to the latest OpenIB code in subversion? 
Here is the kernel panic:


Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=2 POWERMAC
Modules linked in: ib_ipoib ib_sa eth1394 ib_mthca ib_mad ib_core 
ohci1394 ieee1394
NIP: C0038B58 XER:  LR: C00390C8 CTR: 
C003B340

REGS: c00254c845f0 TRAP: 0300   Not tainted  (2.6.11.11-G5)
MSR: 90001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11 CR: 42028488
DAR: c0060045b218 DSISR: 4001
TASK: c19047d0[2004] 'IOTest.ppc.x' THREAD: c00254c84000 
CPU: 1
GPR00: 00060010 C00254C84870 C045F280 
C19047D0
GPR04: C04B4480  3B9A1A60 
C04B4488
GPR08: C045B208 C00254C84000 C0328C40 
C0328C40
GPR12: 28028428 C037E000 C043B170 
C0470340
GPR16:  0001  
C044EE20
GPR20:   0003 

GPR24: CFCC4000  CFD0B030 
0001
GPR28: C04B3B40 0001 C0391A90 
C00254C84870

NIP [c0038b58] .resched_task+0x38/0xcc
LR [c00390c8] .try_to_wake_up+0x304/0x324
Call Trace:
[c00254c848f0] [c00390c8] .try_to_wake_up+0x304/0x324
[c00254c849d0] [c003b3e0] .__wake_up_common+0x84/0xe8
[c00254c84a90] [c003b4a0] .__wake_up+0x5c/0x94
[c00254c84b40] [c0057840] .__queue_work+0x80/0xb4
[c00254c84be0] [c0057908] .queue_work+0x94/0xb0
[c00254c84c60] [c0280df8] .rpc_make_runnable+0xe0/0x154
[c00254c84cf0] [c0281324] .__rpc_do_wake_up_task+0xc8/0x24c
[c00254c84d80] [c0281608] .rpc_wake_up_task+0xb0/0xd8
[c00254c84e20] [c027e61c] .xprt_complete_rqst+0x90/0x188
[c00254c84ed0] [c027ec3c] .udp_data_ready+0x230/0x290
[c00254c84fa0] [c0236714] .udp_queue_rcv_skb+0x268/0x51c
[c00254c85040] [c0236fc8] .udp_rcv+0x600/0x7f0
[c00254c85160] [c0209e8c] .ip_local_deliver_finish+0xd4/0x35c
[c00254c851f0] [c01fa928] .nf_hook_slow+0x184/0x1bc
[c00254c852d0] [c020a360] .ip_local_deliver+0x24c/0x3bc
[c00254c85360] [c020a6f4] .ip_rcv_finish+0x224/0x378
[c00254c85410] [c01fa928] .nf_hook_slow+0x184/0x1bc
[c00254c854f0] [c020ad30] .ip_rcv+0x4e8/0x610
[c00254c855a0] [c01eac68] .netif_receive_skb+0x2ec/0x3a0
[c00254c85650] [c01eae34] .process_backlog+0x118/0x278
[c00254c85730] [c01eb07c] .net_rx_action+0xe8/0x24c
[c00254c857f0] [c0047ea8] .__do_softirq+0xdc/0x1b8
[c00254c858b0] [c004800c] .do_softirq+0x88/0x90
[c00254c85940] [c00480b4] .local_bh_enable+0xa0/0xa4
[c00254c859c0] [c01ea274] .dev_queue_xmit+0x2f4/0x3a0
[c00254c85a60] [c01f3308] .neigh_connected_output+0x104/0x1a0
[c00254c85b00] [c020e824] .ip_finish_output2+0x100/0x2dc
[c00254c85bc0] [c020fa18] .ip_fragment+0x4d8/0x800
[c00254c85cd0] [c024f768] .ip_refrag+0xa4/0xb0
[c00254c85d70] [c01fa2a4] .nf_iterate+0x128/0x190
[c00254c85e30] [c01fa86c] .nf_hook_slow+0xc8/0x1bc
[c00254c85f10] [c020ebd8] .ip_finish_output+0x1d8/0x36c
[c00254c85fd0] [c020fa18] .ip_fragment+0x4d8/0x800
[c00254c860e0] [c020e1e4] .dst_output+0x4c/0x80
[c00254c86170] [c01fa928] .nf_hook_slow+0x184/0x1bc
[c00254c86250] [c021162c] .ip_push_pending_frames+0x4ec/0x550
[c00254c86300] [c02353b8] 
.udp_push_pending_frames+0x16c/0x260

[c00254c863c0] [c0235af0] .udp_sendmsg+0x644/0x758
[c00254c86570] [c023fdd0] .inet_sendmsg+0x88/0xb8
[c00254c86610] [c01dba14] .sock_sendmsg+0xdc/0x13c
[c00254c86810] [c01dbab0] .kernel_sendmsg+0x3c/0x64
[c00254c868a0] [c01dff94] .sock_no_sendpage+0x9c/0xb8
[c00254c86970] [c0235d88] .udp_sendpage+0x184/0x200
[c00254c86a60] [c023fe9c] .inet_sendpage+0x9c/0x108
[c00254c86b10] [c028cd24] .xdr_sendpages+0x280/0x34c
[c00254c86c80] [c027fad0] .xprt_transmit+0x170/0x550
[c00254c86d50] [c027cfd4] .call_transmit+0x1cc/0x2bc
[c00254c86e00] [c02822fc] .__rpc_execute+0xf4/0x524
[c00254c86f60] [c00ff690] .nfs_execute_write+0x50/0x88
[c00254c87000] [c00ffbc0] .nfs_flush_list+0x4f8/0x644
[c00254

Re: [openib-general] [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread Tom Duffy
On Wed, 2005-06-08 at 22:41 +0200, Bernhard Fischer wrote:
> On Wed, Jun 08, 2005 at 01:19:41PM -0700, Tom Duffy wrote:
> >On Wed, 2005-06-08 at 21:48 +0200, Bernhard Fischer wrote:
> 
> >> 'if (NULL != this)' and 'if (0 != that)' occurances, too? I personally
> >> would appreciate it, since these variants are harder to read for me.
> >
> >What do you want to see instead?
> >
> >if (this) {
> > /* do stuff */
> >}
> 
> yes, this.

I think James would take these types of patches.

In any event, going through the code with fine toothed comb will happen
after all the major upheavals, I think.  *I* want to fix all the major
architectural issues that are holding up acceptance before nit-picking.

If I have the time or inclination, I will clean up these things.

-tduffy


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

[openib-general] Re: [PATCHv3] kDAPL: remove use of HANDLE's (vs. r2564)

2005-06-08 Thread Tom Duffy
On Wed, 2005-06-08 at 16:36 -0400, James Lentini wrote:
> Do you see any additional stability problems after applying this? I'm 
> updating my OpenIB tree to see if that is my problem.

This just in!  Don't know if was caused by your patches or mine, but I
ran the server on 192.168.0.26, and tried to connect with the client, it
didn't connect right away, so I did a control-c.  Then, the kernel
panic'ed:

[EMAIL PROTECTED] ~]# ./kdapltest -T Q -d -s 192.168.0.26 -D mthca0a
Server Name: 192.168.0.26
Server Net Address: 192.168.0.26
DT_cs_Client: Starting Test ...
DT_cs_Client: IA mthca0a opened
DT_cs_Client: EP created
*  DAPL  Characteristics  *
Provider: mthca0a  Version 1.0  DAPL 1.2
Adapter: Generic InfiniBand HCA by Linux Version 0.0
Supporting:
64512 EPs with 65535 DTOs and 0 in RDMA/RDs and 0ut RDMA/RDs each
65408 EVDs of up to 65535 entries  (default S/R size is 256/256)
IOVs of up to 28 elements
131056 LMRs (and 131056 RMRs) of up to 0x bytes
Maximum MTU 0x8000 bytes, RDMA 0x8000 bytes
Maximum Private data size 92 bytes
* * * * * *
DT_cs_Client: Posting 1 recv buffer
DT_cs_Client: Connect Endpoint
DT_cs_Client: Await connection ...

<--- I DID A CONTROL-C HERE --->

[EMAIL PROTECTED] ~]# dapl_path_comp_handler: path resolution failed -110 retry 
1802201964!!!
dl_ibpa_atht:_c romeqp__henand:dl peren: d epff_pfftr81 
000x65ab622b6bbe46b0 6bal6bre6bad6by
completed? status 3
dapl_path_comp_handler: path resolution failed -110 retry 1802201965!!!
dapl_path_comp_handler: ep_ptr 0x6b6b6b6b6b6b6b6b
general protection fault:  [1] SMP
CPU 0
Modules linked in: kdapltest ib_dat_provider dat ib_at ib_ipoib ib_sdp ib_cm 
md5 ipv6 parport_pc lp parport autofs4 nfs lockd rfcomm l2cap bluetooth pcmcia 
yenta_socket rsrc_nonstatic pcmcia_core sunrpc ext3 jbd dm_mod video container 
button battery ac ohci_hcd tpm_nsc tpm i2c_amd756 i2c_core ib_mthca ib_sa 
ib_mad ib_core tg3 floppy xfs exportfs mptscsih mptbase sd_mod scsi_mod
Pid: 11881, comm: ib_at_wq/0 Not tainted 2.6.12-rc6openib
RIP: 0010:[] 
{:ib_dat_provider:dapl_evd_connection_callback+67}
RSP: 0018:8100218b9dc8  EFLAGS: 00010296
RAX: 6b6b6b6b6b6b6b6b RBX: 81005a22be40 RCX: 4008
RDX: 810075baaaf8 RSI: 883141a0 RDI: 0048
RBP: 81005a22be70 R08: 6b6b6b6b6b6b6b6b R09: 
R10: 0010 R11: 0010 R12: 81007d9b8c50
R13: 81005a22be40 R14: 0292 R15: 882f5280
FS:  2aad7d60() GS:804e7880() knlGS:
CS:  0010 DS: 0018 ES: 0018 CR0: 8005003b
CR2: 7fd1dce6 CR3: 769db000 CR4: 06e0
Process ib_at_wq/0 (pid: 11881, threadinfo 8100218b8000, task 
81004167caa0)
Stack: 81004167caa0 6b6b6b6b6b6b6b6b  4008006e
   810075baaaf8 81003fdc8f10  0003
   8100218b9e48 88302d18
Call Trace:{:ib_dat_provider:dapl_path_comp_handler+416}
   {:ib_at:req_comp_work+27} 
{worker_thread+476}
   {default_wake_function+0} 
{keventd_create_kthread+0}
   {worker_thread+0} 
{keventd_create_kthread+0}
   {kthread+217} {schedule_tail+64}
   {child_rip+8} 
{keventd_create_kthread+0}
   {kthread+0} {child_rip+0}


Code: 48 8b 80 90 00 00 00 48 89 44 24 28 c7 44 24 30 00 00 00 00
RIP {:ib_dat_provider:dapl_evd_connection_callback+67} RSP 

 <<0>3>geSlneabra cl orprruotpteciotin:on s ftaaurtlt=f: ff00f80010 [072]5b 
aa<4af>S8,MP l en
51CP2=
1R eon
e:M 0odx5ula2escf l07in1/ke0xd 5ain2c:f0 k71da.
teLastst  iusb_erda: t_[_a]t( 
daibpl_i_dpoesibtro iy_b_cms_dpid +0ibxb_c9/m0 xbmde 5[ ibip_dv6at 
_pparorpviordter_p])c l
p<04>f0 p:a rp6bor t6 ba ut6bofs 64b n 6fsb  l6bock 6db  rf6bco mm6d l 62cba 
p6b bl 6uebto 6otbh  6bpc m6ciba  6bye
aP_sreocv keobtj:<4 s> tarsrtrc=f_nffonf8st10at07ic5b aapc8emc0,ia l_cenor=5e1 
2 nRrpedcz : ex0xt3170 jfcbd2a 5/dm0x_m17od0fc v2aid5.eo
 Lcoasntt aiusneerr:  [bu] (ohkmciem_h_acdllo 
tc+pm0x_n61sc/0 xetp0 m[ xfi2s]c_)am
d750060: i2 0c_0co 0re0  i00b_ m0th0ca 00 i b_00sa  00ib _m00ad 0 i1b _c00or ec 
0tg a32  fl0o6pp 0y0  xf00s  0ex0p
tf01s0 :mp 0ts0c si02h  m00ptb 0as0e  00sd _m00od 0 s0c si00_mo 0d2
4>Pi 0d:0 <114>88 82,0  coa3mm : 06ib_ 0at0_w 0q/01  N00ot <
taiNentxted o 2bj.6:. s12ta-rrtc6=fopffenf8ib10
075RIbaP:ad 01001, 0:le[]x1 70<4fc><2af5f/ff0xff17ff0f88c230a59c.
>L{:asibt _dusater_p: 
>ro[]nec(ktimeonm__calallolbc+ac0xk+6167/0}xe
0 R[xSPfs:] 0)01<48:>
f0f80010:0 5900c3 dd0c08  0 E0F LA00GS : 0 010029 06
 0R0AX:<4 6> b601b6 b600b6b a6b06b f6be  RB00X:  f04fff 081000 05a02
e4010 0:RC X:00 00 000200 0 04 82b
 00RD f 0ff0f 81 750b1aa 0af08  R00SI : cbfff 0ff5ff f0488 310041a 00 
0RD
I: 0048
RBP: 81
Message from [EMAIL PROTECTED] at Wed 0Jun  8 13:36:54 2005 ...
sins-5stinger-10 kerneal: general protectio

Re: [openib-general] [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread Bernhard Fischer
On Wed, Jun 08, 2005 at 01:19:41PM -0700, Tom Duffy wrote:
>On Wed, 2005-06-08 at 21:48 +0200, Bernhard Fischer wrote:

>> 'if (NULL != this)' and 'if (0 != that)' occurances, too? I personally
>> would appreciate it, since these variants are harder to read for me.
>
>What do you want to see instead?
>
>if (this) {
>   /* do stuff */
>}

yes, this.

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

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


[openib-general] Re: [PATCHv3] kDAPL: remove use of HANDLE's (vs. r2564)

2005-06-08 Thread Tom Duffy
On Wed, 2005-06-08 at 16:36 -0400, James Lentini wrote:
> Do you see any additional stability problems after applying this? I'm 
> updating my OpenIB tree to see if that is my problem.

Sorry, I just looked at the code, didn't actually test it.  Lemme give
it a whirl...

-tduffy


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

[openib-general] Re: [PATCH][SDP] state transition simplification.

2005-06-08 Thread Michael S. Tsirkin
Quoting r. Libor Michalek <[EMAIL PROTECTED]>:
> Subject: [PATCH][SDP] state transition simplification.
> 
> 
>   This patch simplifies the state transitions for connection management
> within SDP. Previously the connection state was maintained using two
> variables 'istate' and 'state' with a combined total of 34 different
> values. The patch merges the two into a single variable 'state' and 
> removes redundancy for a total of 16 state values. Also the file
> sdp_wall.c is removed who's original purpose was to keep the two state
> variables synchronized.
> 
>   The simplification also paves the way for the next step, which is to
> use the CM event for transitions instead of the current incorrest use
> of CM state.
> 
>   The CQ event pending flags were moved from the connection flags field
> to a new field in the event lock.
> 
>   Finally, I needed to ifdef out one of the send_dreq calls, because
> I was seeing a problem when two DREQs would cross in flight and both
> sides responded with a DREP.
> 
>   13 files changed, 404 insertions(+), 1045 deletions(-)
> 
> -Libor

Works fine for me so far.

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

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


[openib-general] Re: [PATCHv3] kDAPL: remove use of HANDLE's (vs. r2564)

2005-06-08 Thread James Lentini


Do you see any additional stability problems after applying this? I'm 
updating my OpenIB tree to see if that is my problem.


james

On Wed, 8 Jun 2005, Tom Duffy wrote:


On Wed, 2005-06-08 at 15:48 -0400, James Lentini wrote:

I like this update Tom.

I'd propse a few changes:

 - remove dat_cno because it is not part of the kDAPL API

 - remove DAT_HANDLE_TO_PROVIDER

 - we can provide the functionality of dat_set_consumer_context and
   dat_get_consumer_context very easily by creating a dat_common
   structure (see my patch). In that case we can remove
   the user_context member from the dapl_common structure.

 - I've added the symbols removed from dat.h to kdat.h for legacy
   support.

Let me know what you think.


This looks real good, James.  I agree with all of your changes.

-tduffy


___
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] openib-commits administrative

2005-06-08 Thread Bernhard Fischer
Hi,

May i as ask if diffs sent to the -commits list may be changed to be
generated with the --show-c-fun option to diff?

Something along the lines of
svn diff --diff-cmd diff -x -urNp ..
works for me.

Knowing the function the change was based against simply makes it
easier to follow.


PS: yes, OT. But as #openib is completely orphaned (which is a pity, one
would expect that folks at least once a week would check the logs they
gather from reading there, but well) i know no other addr i could send
that plea too. Sorry to the not concerned majority who i had to mux.

PPS: having a cia-bot in #openib would be great, too, but i have no
illusion that anyone would be willing to setup this. Prove me wrong.

thank you,
___
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] [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread Tom Duffy
On Wed, 2005-06-08 at 21:48 +0200, Bernhard Fischer wrote:
> Tom, just curious..
> Do you plan to iterate over those disturbing
> 'if (NULL != this)' and 'if (0 != that)' occurances, too? I personally
> would appreciate it, since these variants are harder to read for me.

What do you want to see instead?

if (this) {
/* do stuff */
}

or were you thinking:

if (this != NULL) {
/* do stuff */
}

> But then i also tend to prefer '* 4711e-0815' over '/ 0x10'

Come again?


-tduffy


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

[openib-general] Re: [PATCHv3] kDAPL: remove use of HANDLE's (vs. r2564)

2005-06-08 Thread Tom Duffy
On Wed, 2005-06-08 at 15:48 -0400, James Lentini wrote:
> I like this update Tom. 
> 
> I'd propse a few changes:
> 
>  - remove dat_cno because it is not part of the kDAPL API 
> 
>  - remove DAT_HANDLE_TO_PROVIDER
> 
>  - we can provide the functionality of dat_set_consumer_context and 
>dat_get_consumer_context very easily by creating a dat_common 
>structure (see my patch). In that case we can remove
>the user_context member from the dapl_common structure.
> 
>  - I've added the symbols removed from dat.h to kdat.h for legacy
>support.
> 
> Let me know what you think.

This looks real good, James.  I agree with all of your changes.

-tduffy


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] [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread James Lentini


I had all day meetings Monday and Tuesday that left me 2 days behind 
on email. I've just finished going through this.


On Wed, 8 Jun 2005, Sean Hefty wrote:


Tom Duffy wrote:

On Wed, 2005-06-08 at 12:35 -0400, James Lentini wrote:


Committed in revision 2572.


Updated patch against 2572.

Signed-off-by: Tom Duffy <[EMAIL PROTECTED]>


James, is there a specific hold-up for this patch?

- 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] [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread Bernhard Fischer
On Wed, Jun 08, 2005 at 11:10:03AM -0700, Sean Hefty wrote:
>Tom Duffy wrote:
>>On Wed, 2005-06-08 at 12:35 -0400, James Lentini wrote:
>>
>>>Committed in revision 2572.
>>
>>Updated patch against 2572.
>>
>>Signed-off-by: Tom Duffy <[EMAIL PROTECTED]>
>
>James, is there a specific hold-up for this patch?
>
Tom, just curious..
Do you plan to iterate over those disturbing
'if (NULL != this)' and 'if (0 != that)' occurances, too? I personally
would appreciate it, since these variants are harder to read for me.

But then i also tend to prefer '* 4711e-0815' over '/ 0x10'
___
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] shutdown issue with SDP

2005-06-08 Thread Libor Michalek
On Wed, Jun 08, 2005 at 01:29:42PM -0400, William Jordan wrote:
> I'm trying to run netperf over SDP using libsdp. I'm having
> intermittent success, but usually, I get a failure. The client does a
> shutdown (SHUT_WR), but the server gets an ECONNRESET, "Connection
> reset by peer", on the recv instead of a zero length recv.
> 
> I'm running 2568.
> 
> Anyone seen similar/different results?

Bill,

  Can you try the patch I sent out yesterday? It significantly simplifies
the connection state machine within SDP. I ran it successfully with a 
number of the netperf tests. (TCP_CC, TCP_CRR, TCP_RR, TCP_STREAM)

Thanks.

-Libor
___
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] [PATCHv4] kdapl: remove use of HANDLE's (vs. r2572)

2005-06-08 Thread Sean Hefty

Tom Duffy wrote:

On Wed, 2005-06-08 at 12:35 -0400, James Lentini wrote:


Committed in revision 2572.


Updated patch against 2572.

Signed-off-by: Tom Duffy <[EMAIL PROTECTED]>


James, is there a specific hold-up for this patch?

- 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] shutdown issue with SDP

2005-06-08 Thread William Jordan
I'm trying to run netperf over SDP using libsdp. I'm having
intermittent success, but usually, I get a failure. The client does a
shutdown (SHUT_WR), but the server gets an ECONNRESET, "Connection
reset by peer", on the recv instead of a zero length recv.

I'm running 2568.

Anyone seen similar/different results?

-- 
Bill Jordan
SilverStorm Technologies
___
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] RMPP and timeouts/retries

2005-06-08 Thread Sean Hefty

Hal Rosenstock wrote:

Let me clarify a little:
The no timeout is set based on resp_expected flag which is set at a
higher level (presumably method based).

When I did have retries set, things did not work properly. Unfortunately
I was unable to get IB traces yesterday of what was going on but will
try again once the analyzer is straightened out. I did have retries on
with the original traces I obtained and discussed on the list where
there were bigger problems than the ones observed by Tom yesterday.


If you could just describe what you did/saw, I will take a look at the code 
to see if I can find anything.  Traces are helpful, but not necessary.


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

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


[openib-general] Re: [PATCH] kdapltest: fix pointer to pointer bug

2005-06-08 Thread James Lentini

Committed in revision 2572.

On Thu, 2 Jun 2005, Tom Duffy wrote:

tduffy> In my work going through trying to get rid of the opaque dat handles, I
tduffy> came across what looks like a bug in kdapltest.  I don't think
tduffy> DT_Performance_Test_Create() and DT_Performance_Test_Client() should
tduffy> take a DAT_IA_HANDLE * as an argument as this would be a pointer to a
tduffy> pointer.
tduffy> 
tduffy> Of course, the compiler didn't catch it until I changed it to a real
tduffy> struct pointers thus showing one of the problems with using opaques.
tduffy> 
tduffy> Signed-off-by: Tom Duffy <[EMAIL PROTECTED]>
tduffy> 
tduffy> Index: linux-kernel-clean/test/dapltest/test/dapl_performance_util.c
tduffy> ===
tduffy> --- linux-kernel-clean/test/dapltest/test/dapl_performance_util.c   
(revision 2532)
tduffy> +++ linux-kernel-clean/test/dapltest/test/dapl_performance_util.c   
(working copy)
tduffy> @@ -33,7 +33,7 @@
tduffy>  boolean_t
tduffy>  DT_Performance_Test_Create (
tduffy>  Per_Test_Data_t*pt_ptr,
tduffy> -DAT_IA_HANDLE  *ia_handle,
tduffy> +DAT_IA_HANDLE  ia_handle,
tduffy>  struct sockaddr *  remote_ia_addr,
tduffy>  boolean_t  is_server,
tduffy>  boolean_t  is_remote_little_endian,
tduffy> Index: linux-kernel-clean/test/dapltest/test/dapl_performance_client.c
tduffy> ===
tduffy> --- linux-kernel-clean/test/dapltest/test/dapl_performance_client.c 
(revision 2532)
tduffy> +++ linux-kernel-clean/test/dapltest/test/dapl_performance_client.c 
(working copy)
tduffy> @@ -34,7 +34,7 @@ int
tduffy>  DT_Performance_Test_Client (
tduffy>  Params_t   *params_ptr,
tduffy>  Per_Test_Data_t*pt_ptr,
tduffy> -DAT_IA_HANDLE  *ia_handle,
tduffy> +DAT_IA_HANDLE  ia_handle,
tduffy>  struct sockaddr *  remote_ia_addr)
tduffy>  {
tduffy>  Performance_Test_t *test_ptr = NULL;
tduffy> Index: linux-kernel-clean/test/dapltest/include/dapl_proto.h
tduffy> ===
tduffy> --- linux-kernel-clean/test/dapltest/include/dapl_proto.h   
(revision 2532)
tduffy> +++ linux-kernel-clean/test/dapltest/include/dapl_proto.h   
(working copy)
tduffy> @@ -236,7 +236,7 @@ voidDT_Performance_Cmd_Endia
tduffy>  /* dapl_performance_client.c */
tduffy>  int DT_Performance_Test_Client (   Params_t
*params_ptr,
tduffy>Per_Test_Data_t * pt_ptr,
tduffy> -  DAT_IA_HANDLE * 
ia_handle,
tduffy> +  DAT_IA_HANDLE ia_handle,
tduffy>struct sockaddr *remote);
tduffy>  
tduffy>  boolean_tDT_Performance_Test_Client_Connect (
tduffy> @@ -261,7 +261,7 @@ boolean_tDT_Performance_Test
tduffy>  
tduffy>  /* dapl_performance_util.c */
tduffy>  boolean_tDT_Performance_Test_Create (Per_Test_Data_t * 
pt_ptr,
tduffy> -  DAT_IA_HANDLE * ia_handle,
tduffy> +  DAT_IA_HANDLE ia_handle,
tduffy>struct sockaddr 
*remote_ia_addr,
tduffy>boolean_t is_server,
tduffy>boolean_t 
is_remote_little_endian,
tduffy> 
___
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] uverbs performance; ibv_pingpong poll vs sleep

2005-06-08 Thread Roland Dreier
Steven> I have compaired the data rates using ibv_pingpong with
Steven> and without the -e option. Therefore, using polling and
Steven> waiting the CQ events (sleeping).

Steven> Is there any way to trade off the data rate with the CPU
Steven> usage (I was thinking of some timeout from polling).

I suppose you could have some sort of adaptive polling scheme that
spins polling for a while and then sleeps waiting for an event.
However, as Michael said, it's probably better to use pipelining and
post multiple send work requests.  This hides the latency of getting a
completion event by keeping the HCA busy.

 - 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] RMPP and timeouts/retries

2005-06-08 Thread Sean Hefty

Hal Rosenstock wrote:

Setting timeout > 0 when sending indicates that a MAD should be received with
the response bit set that is in reply to the request.  If timeout = 0 but RMPP
is marked active, the MAD will still invoke RMPP and not complete until all
segments have been ACKed.  (I.e. the completion of an RMPP send indicates that
the MAD was received.)


If timeout = 0, does RMPP still indicate a timeout if an ACK is lost and
the other end does not reACK ?


It should, yes.  The send will complete with a timeout error.


Retries is a little more complex.  It indicates the number of times to send a
request in hopes of receiving a response (if one is expected) or an ACK (if
using RMPP).


Any effect on ABORT and/or STOP ?


I wouldn't think so, receiving an ABORT or STOP should fail the send 
immediately.



I will try that. Using retry and timeout on the SA side is definitely
problematic. Right now it is set to no retries and no timeout on the SA
side. I will change and retest.


This should work, but will not be able to recover from a lost or delayed MAD.

- 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] [PATCHv2][RFC] kDAPL: use cm timers instead of own

2005-06-08 Thread Sean Hefty

Hal Rosenstock wrote:

On Wed, 2005-06-08 at 11:44, James Lentini wrote:

We interpreted the above to mean "give the connection protocol as 
much time as it needs to establish a connection, but don't mask 
errors (no path to the remove node, etc.)". For that reason we changed 
the variable name to DAT_TIMEOUT_MAX.



But if the REQ is lost, the timeout is really really long (longer than
most will wait for an error). Transaction test also appears to be using
this as well as the quit test.


My interpretation was that this is a DAPL level timeout and did not 
necessarily relate to a timeout for a single CM REQ.  That is, there could 
still be a different timeout specified to the CM, but the number of retries 
could be infinite.


Note that I'm not saying that an infinite timeout makes sense, but the use 
of TIMEOUT_MAX seems reasonable.  To me that indicates that DAPL decides how 
long is needed to establish a timeout, and it manages all retries.


- 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] [PATCHv2][RFC] kDAPL: use cm timers instead of own

2005-06-08 Thread Hal Rosenstock
On Wed, 2005-06-08 at 11:44, James Lentini wrote:
> We interpreted the above to mean "give the connection protocol as 
> much time as it needs to establish a connection, but don't mask 
> errors (no path to the remove node, etc.)". For that reason we changed 
> the variable name to DAT_TIMEOUT_MAX.

But if the REQ is lost, the timeout is really really long (longer than
most will wait for an error). Transaction test also appears to be using
this as well as the quit test.

-- Hal

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

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


RE: [openib-general] [PATCHv2][RFC] kDAPL: use cm timers instead of own

2005-06-08 Thread Tom Duffy
On Wed, 2005-06-08 at 11:44 -0400, James Lentini wrote:
> We interpreted the above to mean "give the connection protocol as 
> much time as it needs to establish a connection, but don't mask 
> errors (no path to the remove node, etc.)". For that reason we changed 
> the variable name to DAT_TIMEOUT_MAX.

Well, let's say the end node is not there yet.  Should the CM keep
trying indefinitely waiting for somebody to show up and respond?

-tduffy


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] [PATCHv2][RFC] kDAPL: use cm timers instead of own

2005-06-08 Thread James Lentini


On Tue, 7 Jun 2005, Hal Rosenstock wrote:


On Tue, 2005-05-31 at 14:17, James Lentini wrote:

Here's the specification's exact description:

  timeout: Duration of time, in microseconds, that a consumer waits for
   connection establishment. The value of DAT_TIMEOUT_INFINITE
   represents no timeout, indefinite wait. Values must be
   positive.


What is the purpose of an infinite timeout (other than the obvious) ?
The quit test uses this feature. Not sure if other tests do as well.
What happens if the REQ is lost ? Why would someone want an infinite
timeout ?


We interpreted the above to mean "give the connection protocol as 
much time as it needs to establish a connection, but don't mask 
errors (no path to the remove node, etc.)". For that reason we changed 
the variable name to DAT_TIMEOUT_MAX.

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

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


[openib-general] RE: [ib_at] oops in ib_at when running kdapltest

2005-06-08 Thread Hal Rosenstock
On Tue, 2005-06-07 at 11:56, Itamar Rabenstein wrote: 
> attached is the output of /var/log/messages that contain ib_at oops with
> ib_at debug trun on.
> svn rev 2564 (ib + kdapl + at from users/jlentini)
> test is : ./kdapltest -T T -s 11.1.4.43 -D mthca0a -d -t 2 -w 8 -i 20 client
> SR server SR
> i run the test 4-5 times before the oops occur 
> (In order to get the oops your kernel must be compiled with
> CONFIG_DEBUG_PAGEALLOC)

I've done this over 30 times and still not recreated this :-( My kernel
is compiled with CONFIG_DEBUG_PAGEALLOC ever since the last time... The
only difference now is my CM is instrumented which may change the timing
slightly if this is due to a timing window. Out of curiousity, what SM
are you using ?

The sequence appears the same as all the ones which work prior to this.
Also, in looking at resolve_path, I do not see a way for this to occur
as long at the pointer to the path_rec struct is valid other than some
scribbling problem (stack trashed somehow ?).

So, can you redo this with one more change as follows:
In resolve_path right before the call to ib_sa_path_rec_get insert the
line:
DEBUG("ib_sa_path_rec_get");

I want to rule in or out a possible theory. Thanks.

-- Hal








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

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


[openib-general] Re: uverbs performance; ibv_pingpong poll vs sleep

2005-06-08 Thread Michael S. Tsirkin

Quoting r. Steven Wooding <[EMAIL PROTECTED]>:
> Subject: uverbs performance; ibv_pingpong poll vs sleep
> 
> Hi,
>  
> I wonder if anyone could help me with uverbs performance.
>  
> I have compaired the data rates using ibv_pingpong with and without the -e
> option. Therefore, using polling and waiting the CQ events (sleeping).
>  
> For a data message size of 16K I get the following results:
>  
> Poll: 718 MB/s with CPU at 100%
> Sleep: 479 MB/s with CPU at 16%

What do you do for CPU utilisation measurement?

> I suppose the decrease in throughput is due to the time it takes to get the CQ
> event.

Yes, pingpong is not really a bandwidth benchmark.
It never has more than one outstanding transaction on a qp,
so its bandwidth is very sensitive to roundtrip times.

> Is there any way to trade off the data rate with the CPU usage (I was thinking
> of some timeout from polling).
>  
> Any suggests would be very welcome.
>  
> Regards,
>  
> Steve.

Steve, I think an application should create some kind of
pipelining, performing multiple sends before waiting for
events.

I have a working example of how this can be done, but unfortunately
its not yet ready for publication.

The idea basically is to have n outstanding buffers and tx of size n.
Count the number of send requests sent and completed.
Now basically replace each post send with

while (send - completed < n)
post send


As n grows, you shall see different cpu utilization/bandwidth points.


-- 
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] uverbs performance; ibv_pingpong poll vs sleep

2005-06-08 Thread Steven Wooding
Hi,
 
I wonder if anyone could help me with uverbs performance.
 
I have compaired the data rates using ibv_pingpong with and without the -e option. Therefore, using polling and waiting the CQ events (sleeping).
 
For a data message size of 16K I get the following results:
 
Poll: 718 MB/s with CPU at 100%
Sleep: 479 MB/s with CPU at 16%
 
I suppose the decrease in throughput is due to the time it takes to get the CQ event.
 
Is there any way to trade off the data rate with the CPU usage (I was thinking of some timeout from polling).
 
Any suggests would be very welcome.
 
Regards,
 
Steve.
		How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos. Get Yahoo! 
Photos___
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] RMPP and timeouts/retries

2005-06-08 Thread Hal Rosenstock
On Wed, 2005-06-08 at 06:58, Hal Rosenstock wrote:
> Right now it is set to no retries and no timeout on the SA
> side. I will change and retest.

Let me clarify a little:
The no timeout is set based on resp_expected flag which is set at a
higher level (presumably method based).

When I did have retries set, things did not work properly. Unfortunately
I was unable to get IB traces yesterday of what was going on but will
try again once the analyzer is straightened out. I did have retries on
with the original traces I obtained and discussed on the list where
there were bigger problems than the ones observed by Tom yesterday.

-- Hal

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

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


RE: [openib-general] RMPP and timeouts/retries

2005-06-08 Thread Hal Rosenstock
On Wed, 2005-06-08 at 01:04, Sean Hefty wrote:
> >> I'm having some trouble using timeouts and retries with RMPP. The issue
> >> I see is that what constitutes a response is different than normal MADs
> >> for RMPP. With the current "definition" of response, is the
> >> timeout/retry only usable on the SA client side where the normal
> >> definition is more closely followed ? If so, is there still an issue
> >> with SA GetTable as the initial request is not RMPP ?
> 
> The SA client should set the timeout > 0 to indicate that a response MAD is
> expected.  It can set retries, but isn't required to do so.

OK.

> >Is the response not at the RMPP level ? So a response would be for dual
> >ended RMPP ?
> 
> Request/response is separate from RMPP.  Request/response is defined at the
> message level from the viewpoint of the user of the MAD layer.  (I.e. is the
> response bit set in the MAD header, regardless of the size of the MAD.)

Understood. It's method based (response bit and trap repress).

> Setting timeout > 0 when sending indicates that a MAD should be received with
> the response bit set that is in reply to the request.  If timeout = 0 but RMPP
> is marked active, the MAD will still invoke RMPP and not complete until all
> segments have been ACKed.  (I.e. the completion of an RMPP send indicates that
> the MAD was received.)

If timeout = 0, does RMPP still indicate a timeout if an ACK is lost and
the other end does not reACK ?

> Retries is a little more complex.  It indicates the number of times to send a
> request in hopes of receiving a response (if one is expected) or an ACK (if
> using RMPP).

Any effect on ABORT and/or STOP ?

> >> On the SA side, there does not appear to be a way to use this feature.
> >> Is that correct ?
> 
> For the SA side responding to a request, you would want to set retries > 1, 
> but
> timeout = 0.  Timeout of 0 indicates that no response is expected, since the 
> SA
> is sending the response.  Having a retry count would allow a retransmission if
> an ACK were lost.

I will try that. Using retry and timeout on the SA side is definitely
problematic. Right now it is set to no retries and no timeout on the SA
side. I will change and retest.

> You should be able to mix RMPP and non-RMPP MADs without restriction: non-RMPP
> request - RMPP response, RMPP request - non-RMPP response, RMPP request and
> response, non-RMPP request and response.  If one of these conditions doesn't
> work, then there's a bug in the code.  I'm pretty sure that I tested all of
> these combinations, but that doesn't mean that it won't hit a bug talking with
> another RMPP implementation.

The main new one right now is non RMPP request - RMPP response. SA does
not currently support any of the dual sided RMPP methods (so there is no
RMPP request - RMPP response). (Non RMPP request - non RMPP response is
what is mainly used). I'm not sure the other combination has a use.

Thanks.

-- Hal

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

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


RE: [openib-general] [PATCH] [CM] add OS administered service IDs

2005-06-08 Thread Itamar Rabenstein
Thanks Sean,
I will update the kdapl code soon.

 -Itamar

> -Original Message-
> From: Sean Hefty [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, June 07, 2005 8:50 PM
> To: openib-general@openib.org
> Subject: [openib-general] [PATCH] [CM] add OS administered service IDs
> 
> 
> The following patch adds support for OS administered service IDs.
> 
> Signed-off-by: Sean Hefty <[EMAIL PROTECTED]>
> 
> 
> Index: include/ib_cm.h
> ===
> --- include/ib_cm.h   (revision 2563)
> +++ include/ib_cm.h   (working copy)
> @@ -311,16 +311,20 @@ struct ib_cm_id *ib_create_cm_id(ib_cm_h
>   */
>  void ib_destroy_cm_id(struct ib_cm_id *cm_id);
>  
> +#define IB_CM_ASSIGN_SERVICE_ID  
> __constant_cpu_to_be64(0x0200ULL)
> +
>  /**
>   * ib_cm_listen - Initiates listening on the specified service ID for
>   *   connection and service ID resolution requests.
>   * @cm_id: Connection identifier associated with the listen request.
>   * @service_id: Service identifier matched against incoming 
> connection
>   *   and service ID resolution requests.  The service ID 
> should be specified
> - *   network-byte order.
> + *   network-byte order.  If set to IB_CM_ASSIGN_SERVICE_ID, 
> the CM will
> + *   assign a service ID to the caller.
>   * @service_mask: Mask applied to service ID used to listen across a
>   *   range of service IDs.  If set to 0, the service ID is matched
> - *   exactly.
> + *   exactly.  This parameter is ignored if %service_id is set to
> + *   IB_CM_ASSIGN_SERVICE_ID.
>   */
>  int ib_cm_listen(struct ib_cm_id *cm_id,
>u64 service_id,
> Index: core/cm.c
> ===
> --- core/cm.c (revision 2563)
> +++ core/cm.c (working copy)
> @@ -64,6 +64,7 @@ static struct ib_cm {
>   struct list_head device_list;
>   rwlock_t device_lock;
>   struct rb_root listen_service_table;
> + u64 listen_service_id;
>   /* struct rb_root peer_service_table; todo: fix peer to peer */
>   struct rb_root remote_qp_table;
>   struct rb_root remote_id_table;
> @@ -718,14 +719,23 @@ int ib_cm_listen(struct ib_cm_id *cm_id,
>   unsigned long flags;
>   int ret = 0;
>  
> + if ((service_id & IB_CM_ASSIGN_SERVICE_ID) == 
> IB_CM_ASSIGN_SERVICE_ID &&
> + (service_id != IB_CM_ASSIGN_SERVICE_ID))
> + return -EINVAL;
> +
>   cm_id_priv = container_of(cm_id, struct cm_id_private, id);
>   BUG_ON(cm_id->state != IB_CM_IDLE);
>  
>   cm_id->state = IB_CM_LISTEN;
> - cm_id->service_id = service_id;
> - cm_id->service_mask = service_mask ? service_mask : ~0ULL;
>  
>   spin_lock_irqsave(&cm.lock, flags);
> + if (service_id == IB_CM_ASSIGN_SERVICE_ID) {
> + cm_id->service_id = 
> __cpu_to_be64(cm.listen_service_id++);
> + cm_id->service_mask = ~0ULL;
> + } else {
> + cm_id->service_id = service_id;
> + cm_id->service_mask = service_mask ? 
> service_mask : ~0ULL;
> + }
>   cur_cm_id_priv = cm_insert_listen(cm_id_priv);
>   spin_unlock_irqrestore(&cm.lock, flags);
>  
> @@ -3251,6 +3261,7 @@ static int __init ib_cm_init(void)
>   rwlock_init(&cm.device_lock);
>   spin_lock_init(&cm.lock);
>   cm.listen_service_table = RB_ROOT;
> + cm.listen_service_id = 
> __constant_be64_to_cpu(IB_CM_ASSIGN_SERVICE_ID);
>   cm.remote_id_table = RB_ROOT;
>   cm.remote_qp_table = RB_ROOT;
>   cm.remote_sidr_table = RB_ROOT;
> 
> 
> 
> ___
> openib-general mailing list
> openib-general@openib.org
> http://openib.org/mailman/listinfo/openib-general
> 
> To unsubscribe, please visit 
> http://openib.org/mailman/listinfo/openib-general
> 
___
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

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


[openib-general] RE: [patch][kdapl] enable kdapltest -T P

2005-06-08 Thread Itamar Rabenstein
> > Current openib gen2 code is not reporting the max cq size 
> and i dont think
> > that we should put
> > a fix number .
> > if we want to get the number we need Roland to fill this 
> number in mthca but
> > as Roland said before
> > "what real App will meed this number?"
> 
> I see the initialization code you are refering to in 
> mthca_query_device of mthca_provider.c.
> 
> I think a "real app" would use this number in exactly the same way 
> that dapltest's performance subtest uses it:
> 
>   pipeline_length = min(max_cqe, max_qp_wr)
> 
> Why would a limit like the one above be unnecessary?

you can try to printk the value and you will see it is not initialized.
it is not enough to assign value to the output attr struct 
if this value is not initialized (;-)  
i dont mind if Roland will implement it but for now it is not implemented.
Please ci the patch for now in order to enable kdapltest -T P 
and if Roland will implement it then unremark the lines.


> >>
> >> Was this also a problem in the transaction test?
> >>
> >
> > Yes but in order to fall on the bug you need to alloc a 
> very small buffer
> > (like 12 byte)
> > and this is only in -T P .
> 
> So is it only in the performance test or would it occur in the 
> transaction test if I specified a small buffer?

It will fail for every small buffer (include in -T T )

> 
> Why do we need to translate the virtual address to a physical address 
> in all cases? Will this interact properly with the transaction test's 
> -M (memory type) option?

Current openib gen2 register only physical memory.
the code will work also for any -M option .

  -Itamar


___
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