-
Notifications
You must be signed in to change notification settings - Fork 315
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added full duplex capability #31
Open
buttercutter
wants to merge
9
commits into
KastnerRG:master
Choose a base branch
from
buttercutter:full_duplex
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Modified iteration stop limit
added "make unload" and "make load" because "make install" does not unload the old driver
CHNL_TX_DATA_REN signal is redefined for full duplex such that it does not depend directly on CHNL_TX signal
whenever chnl_send() or chnl_recv() threads encountered timeout situation for pop_circ_queue(), do not execute free_sg_buf() so that the threads are given more chances to survive since for a specific full-duplex condition (that is loopback), receiver might need to wait until transmitter had actually sent some data
CHNL_TX is modified such that it is asserted whenever CHNL_RX is first asserted. This modification ensures that https://github.com/promach/riffa/blob/master/fpga/riffa_hdl/interrupt.v#L57 (new TX transaction) triggers the interrupt signal for https://github.com/promach/riffa/blob/full_duplex/driver/linux/riffa_driver.c#L319 (subsequent linux driver preparatory actions on new TX transactions) at an earlier timestep, so that in the case loopback, FPGA Tx side (or equivalently PC chnl_recv() side) won't be late to receive the actual data from FPGA Rx side (or equivalently PC chnl_send() side).
Eliminated the need to process another chnl_recv() event which is EVENT_TXN_LEN before the actual data receive transaction
Current linux driver code modification could support full duplex transaction at defined PCIe speed specification The key point of this commit modification is the use of wake_up() call to speed up the call of wait_event_interruptible_timeout() function
this is to avoid premature circular queue overflow issue for repetitive transactions of large data batch size (or length)
@marzoul I really appreciate if you could comment on methods for further bandwidth optimization of this patch. |
fengguang
pushed a commit
to 0day-ci/linux
that referenced
this pull request
Nov 27, 2018
This patch adds RIFFA PCIe linux driver for https://github.com/promach/riffa/tree/full_duplex/driver/linux This staging driver is modified from this upstream driver at https://github.com/KastnerRG/riffa/tree/master/driver/linux For further details, please refer to KastnerRG/riffa#31 Signed-off-by: Cheng Fei Phung <[email protected]>
fengguang
pushed a commit
to 0day-ci/linux
that referenced
this pull request
Dec 4, 2018
This patch adds RIFFA PCIe linux driver for https://github.com/promach/riffa/tree/full_duplex/driver/linux This staging driver is modified from this upstream driver at https://github.com/KastnerRG/riffa/tree/master/driver/linux For further details, please refer to KastnerRG/riffa#31 Signed-off-by: Cheng Fei Phung <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This patch helps to enable bi-directional PCIe communication at PCIe gen2 speed grade
Major change in this patch is the enabling of chnl_recv() scatter-gather list first in the case of loopback.
Some other changes include splitting TX and RX into two separate FSMs in two always blocks as you can see in chnl_tester.v
Also, I need to give credit to @marzoul for #18 which I have already included in this patch altogether.
TODO
Improves loopback bandwidth measurement result with respect to simplex bandwidth result (still slower with an approximate factor of 2). There is a latency between the moment a data transaction is possible to when it's carried out, which leads to a very uneven data transport. This, in turn, yields suboptimal bandwidth performance for loopback setup.
Refactors code which does not fit standard code styling and removes unnecessary dead code accordingly