#
7c66482c |
| 27-May-2009 |
Adrian Chadd <adrian@FreeBSD.org> |
Enforce that there are actually enough xenbus TX ring descriptors available before attempting to queue the packet.
|
#
3fb28bbb |
| 27-May-2009 |
Adrian Chadd <adrian@FreeBSD.org> |
Comment tidyup; comment where the next explicit check should appear.
|
#
a4ec37f5 |
| 27-May-2009 |
Adrian Chadd <adrian@FreeBSD.org> |
Ensure that there are enough TX mbuf ring slots available before beginning to dequeue a packet.
The tx path was trying to ensure that enough Xenbus TX ring slots existed but it didn't check to see w
Ensure that there are enough TX mbuf ring slots available before beginning to dequeue a packet.
The tx path was trying to ensure that enough Xenbus TX ring slots existed but it didn't check to see whether the mbuf TX ring slots were also available. They get freed in xn_txeof() which occurs after transmission, rather than earlier on in the process. (The same happens under Linux too.)
Due to whatever reason (CPU use, scheduling, memory constraints, whatever) the mbuf TX ring may not have enough slots free and would allocate slot 0. This is used as the freelist head pointer to represent "free" mbuf TX ring slots; setting this to an actual mbuf value rather than an id crashes the code.
This commit introduces some basic code to track the TX mbuf ring use and then (hopefully!) ensures that enough slots are free in said TX mbuf ring before it enters the actual work loop.
A few notes:
* Similar logic needs to be introduced to check there are enough actual slots available in the xenbuf TX ring. There's some logic which is invoked earlier but it doesn't hard-check against the number of available ring slots. Its trivial to do; I'll do it in a subsequent commit.
* As I've now commented in the source, it is likely possible to deadlock the driver under certain conditions where the rings aren't receiving any changes (which I should enumerate) and thus Xen doesn't send any further software interrupts. I need to make sure that the timer(s) are running right and the queues are periodically kicked.
PR: 134926
show more ...
|
#
2d8fae98 |
| 27-May-2009 |
Adrian Chadd <adrian@FreeBSD.org> |
Do the invariant check before the mbuf is dereferenced.
|
#
c099cafa |
| 27-May-2009 |
Adrian Chadd <adrian@FreeBSD.org> |
Flesh out some inline documentation which hopefully reflect the intended reality of these functions.
|
#
0e6993e4 |
| 27-May-2009 |
Adrian Chadd <adrian@FreeBSD.org> |
Add in some INVARIANT checks in the TX mbuf descriptor "freelist" management code.
Slot 0 must always remain "free" and be a pointer to the first free entry in the mbuf descriptor list. It is thus a
Add in some INVARIANT checks in the TX mbuf descriptor "freelist" management code.
Slot 0 must always remain "free" and be a pointer to the first free entry in the mbuf descriptor list. It is thus an error to have code allocate or push slot 0 back into the list.
show more ...
|
#
2e370a5c |
| 26-May-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
Merge from HEAD
|
#
3a539122 |
| 18-May-2009 |
Adrian Chadd <adrian@FreeBSD.org> |
The merge in r189699 reverted part of the work done in a previous commit (r188036.)
Re-revert that change so the Xen networking functions again.
|
Revision tags: release/7.2.0_cvs, release/7.2.0 |
|
#
1829d5da |
| 12-Mar-2009 |
Warner Losh <imp@FreeBSD.org> |
Update the projects tree to a newer FreeBSD current.
|
#
12678024 |
| 11-Mar-2009 |
Doug Rabson <dfr@FreeBSD.org> |
Merge in support for Xen HVM on amd64 architecture.
|
#
532700bd |
| 05-Feb-2009 |
Kip Macy <kmacy@FreeBSD.org> |
fix non-witness compile
|
#
a392a271 |
| 03-Feb-2009 |
Kip Macy <kmacy@FreeBSD.org> |
break out of loop if we run out of mbufs
|
Revision tags: release/7.1.0_cvs, release/7.1.0 |
|
#
3a6d1fcf |
| 29-Dec-2008 |
Kip Macy <kmacy@FreeBSD.org> |
merge 186535, 186537, and 186538 from releng_7_xen
Log: - merge in latest xenbus from dfr's xenhvm - fix race condition in xs_read_reply by converting tsleep to mtx_sleep
Log: unmask evtchn in b
merge 186535, 186537, and 186538 from releng_7_xen
Log: - merge in latest xenbus from dfr's xenhvm - fix race condition in xs_read_reply by converting tsleep to mtx_sleep
Log: unmask evtchn in bind_{virq, ipi}_to_irq
Log: - remove code for handling case of not being able to sleep - eliminate tsleep - make sleeps atomic
show more ...
|
#
23dc5621 |
| 04-Dec-2008 |
Kip Macy <kmacy@FreeBSD.org> |
Integrate 185578 from dfr Use newbus to managed devices
|
#
49906218 |
| 30-Nov-2008 |
Doug Rabson <dfr@FreeBSD.org> |
Don't call ether_ioctl() with locks held. Loop in xn_rxeof() until the backend stops adding stuff to the ring otherwise we miss RX interrupts which kills performance.
|
Revision tags: release/6.4.0_cvs, release/6.4.0 |
|
#
920ba15b |
| 26-Sep-2008 |
Kip Macy <kmacy@FreeBSD.org> |
Update xen/interface includes to the latest in mercurial
MFC after: 1 month
|
#
646787d9 |
| 25-Sep-2008 |
Kip Macy <kmacy@FreeBSD.org> |
reflect header change in netfront
MFC after: 1 month
|
#
83b92f6e |
| 21-Aug-2008 |
Kip Macy <kmacy@FreeBSD.org> |
For reasons that I have not delved in to Xen 3.2 netback now does header splitting so packets > 128 bytes are now split in to multiple buffer. This fixes netfront to handle multiple buffers per rx pa
For reasons that I have not delved in to Xen 3.2 netback now does header splitting so packets > 128 bytes are now split in to multiple buffer. This fixes netfront to handle multiple buffers per rx packet.
MFC after: 1 month
show more ...
|
#
6ae0e31b |
| 20-Aug-2008 |
Kip Macy <kmacy@FreeBSD.org> |
change netfront to match xen31_6 fix console locking
|
#
980c7178 |
| 20-Aug-2008 |
Kip Macy <kmacy@FreeBSD.org> |
include vmparam.h for KERNBASE and fix typo
|
#
7a5048f1 |
| 20-Aug-2008 |
Kip Macy <kmacy@FreeBSD.org> |
register netfront before xenbus does its probing
MFC after: 1 month
|
#
89e0f4d2 |
| 12-Aug-2008 |
Kip Macy <kmacy@FreeBSD.org> |
Import Xen paravirtual drivers.
MFC after: 2 weeks
|