History log of /freebsd-10-stable/sys/dev/ntb/ntb_transport.c
Revision Date Author Comments
# 304407 18-Aug-2016 mav

MFC r303514: Fix NTBT_QP_LINKS negotiation.

I believe it never worked correctly for more the one queue even in Linux.
This fixes case when one of consumer drivers is not loaded on one side,
but its queues still announced as ready if something else brought link up.

While there, remove some pointless NULL checks.


# 304405 18-Aug-2016 mav

MFC r303494: Once more refactor KPI between ntb_transport(4) and if_ntb(4).

New design allows to attach multiple consumers to ntb_transport(4) instance.
Previous design obtained from Linux theoretically allowed that, but was not
practically usable (Linux also has only one consumer driver now).


# 304404 18-Aug-2016 mav

MFC r303429, r303437, r303551:
Once more refactor KPI between NTB hardware and consumers.

New design allows hardware resources to be split between several consumers.
For example, one BAR can be dedicated for remote memory access, while other
resources can be used for packet transport for virtual Ethernet interface.
And even without resource split, this code allows to specify which consumer
driver should attach the hardware.

From some points this makes the code even closer to Linux one, even though
Linux does not provide the described flexibility.


# 304400 18-Aug-2016 mav

MFC r302622 (by sephe): ntb: Fix LINT


# 304397 18-Aug-2016 mav

MFC r302529: Remove callout_reset(link_work) from ntb_transport_attach().

At that point link is quite likely not established yet, so messing with
scratch registers is premature there. Original commit message mentioned
code diff reduction from Linux, but this line is not present in Linux now.


# 304390 18-Aug-2016 mav

MFC r302495: Improve memory allocation errors handling on receive.


# 304389 18-Aug-2016 mav

MFC r302494: Synchronize MTU code with Linux.

It is mandatory for transport compatibility.


# 304388 18-Aug-2016 mav

MFC r302493: Reimplement doorbell register emulation for NTB_SB01BASE_LOCKUP.

This allows at least first three doorbells to work very close to normal
hardware, properly signaling events to upper layers without spurious or
lost events. Doorbells above the first three may still report spurious
events due to lack of reliable information, but they are rarely used.


# 304387 18-Aug-2016 mav

MFC r302492: Bring some more order into link and qp state handling.

Do not touch scratchpad registers until link is reported up.
Mask and do not handle doorbell events until respective qp is up.


# 304385 18-Aug-2016 mav

MFC r302490: Create separate RX taskqueue for each qp.


# 304384 18-Aug-2016 mav

MFC r302489: Remove rx_completion_task taskqueue.

It is not needed after RX lock removed in previous commit.


# 304383 18-Aug-2016 mav

MFC r302488: Remove unneeded RX lock, and make TX lock per-qp.


# 304382 18-Aug-2016 mav

MFC r302487: Reduce code divergence from Linux, preparing for DMA support.


# 304381 18-Aug-2016 mav

MFC r302486: Fix operation with multiple qps.


# 304380 18-Aug-2016 mav

MFC r302484: NewBus'ify NTB subsystem.

This follows NTB subsystem modularization in Linux, tuning it to FreeBSD
native NewBus interfaces. This change allows to support different types
of hardware with different drivers, support multiple NTB instances in a
system, ntb_transport module use for needs other then if_ntb, etc.

Sponsored by: iXsystems, Inc.