discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] max capacity per USB channel


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] max capacity per USB channel
Date: Mon, 9 Apr 2007 14:08:42 -0700
User-agent: Mutt/1.5.9i

On Mon, Apr 09, 2007 at 04:24:23PM -0400, George Nychis wrote:
> Eric Blossom wrote:
> >Uhh, 30 requests of .5 is only 15MB/s, so there would be no problem
> >with additional requests up to an additional 17MB/s.  The tx and rx
> >channels are allocated indepently of each other, though all capacity
> >requests are changed against the same pool.
> 
> Right, it was part of the example.
> 
> Based on your response... I think we have a problem with our interface.

Take a look at usrp/host/lib/inband/usrp_server.mbh.
That's the real interface.  FYI, I've put a note in
inband-signaling-usb-host pointing to that file.


;; ----------------------------------------------------------------
;; usrp-channel
;;
;; The protocol class is defined from the client's point-of-view.
;; (The client port is unconjugated, the server port is conjugated.)

(define-protocol-class usrp-channel

  (:outgoing

   (cmd-allocate-channel invocation-handle capacity-reservation)

   ;; The cmd-allocate-channel message requests that the server
   ;; allocates a logical channel in the FPGA for use.
   ;; capacity-reservation specifies the number of bytes/s of
   ;; interconnect capacity (USB or ethernet) to reserve for this
   ;; channel.  (The reservation is just a sanity check, no OS
   ;; specific mechanism is used.)

   (cmd-deallocate-channel invocation-handle channel)

   ;; The integer channel specifies the channel to deallocate.

   )

  (:incoming


   (response-allocate-channel invocation-handle status channel)

   ;; If successful, a channel the specified capacity was allocated.
   ;; channel, an integer, indicates which channel was allocated.

   (response-deallocate-channel invocation-handle status)

   ;; If successful, the specified channel and associated interconnect
   ;; capacity were deallocated.

   )
  )


> Regardless of whether we return a channel to the user, or the user 
> specifies a desired channel...
> 
> How does cmd_deallocate_channel() know how much to de-allocate?

It deallocates the amount that was originally allocated.  What's the problem?

> If these  are hardware channels we are talking about (currently 2 in 
> hardware), and I 
> now want to deallocate my channel and i say cmd_deallocate_channel(blah, 1) 
> ... I am going to deallocate all of channel 1 which is incorrect. The 
> capacity I reserved should be deallocated.

I think there's some confusion here.  When a user requests an rx or tx
channel with (cmd-allocate-channel invocation-handle
capacity-reservation), they are given a channel on an exclusive basis.
The returned channel number is given in the response-allocate-channel
message.

When they send (cmd-deallocate-channel invocation-handle channel) the
server (after checking that this port actually _does_ own channel)
frees the channel and gives the associated capacity reservation back to
the pool.

> So then is it required for the requester to keep track of how much they 
> requested to pass to our deallocation method?

No, the server keeps track of how much it assigned to each rx and tx
channel.

Does this make sense?

Eric




reply via email to

[Prev in Thread] Current Thread [Next in Thread]