linux/drivers/net/ethernet
Yevgeny Petrilin e8f081aacd net/mlx4_core: Implement the master-slave communication channel
When SRIOV is enabled, pf and vfs communicate via shared comm channel.
The vf gets its side of the comm channel via a VF BAR.
Each VF (slave) creates its vHCR (virtual HCA Command Register),
Its DMA address is passed to the PF (master) using Communication Channel Register.
The same Register is used to notify the master of commands posted by the
slaves and for the master to pass events to the slaves, such as command completions
and asynchronous events.

The vHCR format is identical to the HCR format, except for the 'go' and 't' bits,
which are reserved in the vHCR. Posting commands to the vHCR is identical to
the way it is done with the HCR, albeit that the function/PF token fields are
used instead of the HCR go bit.
Specifically:
- When the function prepares a new command in the vHCR, it issues the Post_vHCR_cmd
  communication channel command and toggles the value of the function token;
  when PF token has an equal value, the command has been accepted and a new command may be posted.
- When the PF detects a Post_vHCR_cmd command, it concludes that a new command is available in the vHCR;
  after processing the command, the PF toggles the PF token to match the function token.

When the 'e' bit is not set, the completion of a Post_vHCR_cmd command also indicates
the completion the vHCR command. If, however, the 'e' bit is set, the completion of a
Post_vHCR_cmd command only indicates that the vHCR command has been accepted for execution by the PF.

Function commands are processed by the PF as follows:
-DMA (using the ACCESS_MEM command) the vHCR image into a shadow buffer.
-Validate that the opcode is non-privileged, and that the opcode- and input-modifiers are legal.
-DMA the in-box (if required) into a shadow buffer.
-Validate the command:
	o Resource ranges (e.g., QP ranges).
	o Partition key.
	o Ranges of referenced resources (e.g., CQs within QP contexts).
-If the 'e' bit is set
	o complete the Post_vHCR_cmd command
-Execute the command on the HCR.
-DMA the results to the vHCR out-box (if required).
-If the 'e' bit is set
	o Indicate command completion by generating a completion event using the GEN_EQE command
-Otherwise
	o DMA the command status to the vHCR
	o Complete the Post_vHCR_cmd command

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Yevgeny Petrillin <yevgenyp@mellanox.com>
Signed-off-by: Liran Liss <liranl@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-12-13 13:56:05 -05:00
..
3com sweep the floors and convert some .get_drvinfo routines to strlcpy 2011-11-08 15:11:57 -05:00
8390 net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
adaptec net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
adi
aeroflex net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
alteon
amd net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
apple
atheros Sweep away N/A fw_version dustbunnies from the .get_drvinfo routine of a number of drivers 2011-11-22 16:43:32 -05:00
broadcom bnx2x: properly update skb when mtu > 1500 2011-12-13 13:30:45 -05:00
brocade net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
cadence net/cadence: enable by default NET_ATMEL 2011-11-16 17:33:50 -05:00
calxeda net: add calxeda xgmac ethernet driver 2011-11-29 01:15:24 -05:00
chelsio cxgb3: Handle NULL dst neighbour in cxgb3_offload.c 2011-12-05 15:20:19 -05:00
cirrus
cisco net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
davicom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2011-12-02 13:49:21 -05:00
dec sweep the floors and convert some .get_drvinfo routines to strlcpy 2011-11-08 15:11:57 -05:00
dlink sweep the floors and convert some .get_drvinfo routines to strlcpy 2011-11-08 15:11:57 -05:00
emulex be2net: refactor/cleanup vf configuration code 2011-12-13 13:34:26 -05:00
faraday
freescale net/fec: make FEC driver buildable as module 2011-12-08 19:51:30 -05:00
fujitsu net: sweep-up some straglers in strlcpy conversion of .get_drvinfo routines 2011-11-16 17:38:55 -05:00
hp
i825xx sweep the floors and convert some .get_drvinfo routines to strlcpy 2011-11-08 15:11:57 -05:00
ibm net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
icplus icplus: mdio_write(), remove unnecessary for loop 2011-12-01 12:54:46 -05:00
intel net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
marvell sky2: add bql support 2011-11-29 20:49:21 -05:00
mellanox net/mlx4_core: Implement the master-slave communication channel 2011-12-13 13:56:05 -05:00
micrel net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
microchip
myricom net: introduce and use netdev_features_t for device features sets 2011-11-16 17:43:10 -05:00
natsemi net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
neterion net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
nuvoton net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
nvidia forcedeath: Fix bql support for forcedeath 2011-12-02 12:39:12 -05:00
octeon
oki-semi Sweep away N/A fw_version dustbunnies from the .get_drvinfo routine of a number of drivers 2011-11-22 16:43:32 -05:00
packetengines
pasemi pasemi_mac: Fix building as module 2011-12-06 00:48:59 -05:00
qlogic net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
racal
rdc r6040: fix check against MCRO_HASHEN bit in r6040_multicast_list 2011-11-16 20:24:52 -05:00
realtek Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2011-12-06 21:10:05 -05:00
renesas net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
seeq net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
sfc sfc: Use kcalloc instead of kzalloc to allocate array 2011-12-04 01:32:06 -05:00
sgi net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
silan
sis ethernet: Convert MAC_ADDR_LEN uses to ETH_ALEN 2011-11-16 20:23:17 -05:00
smsc net/smsc911x: Add regulator support 2011-11-29 18:36:56 -05:00
stmicro net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
sun niu: Fix typo in comment. 2011-12-02 12:37:33 -05:00
tehuti net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
ti
tile
toshiba
tundra net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
via net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
xilinx ll_temac: Use kcalloc instead of kzalloc to allocate array 2011-12-04 01:32:06 -05:00
xircom sweep the floors and convert some .get_drvinfo routines to strlcpy 2011-11-08 15:11:57 -05:00
xscale
dnet.c net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
dnet.h
ethoc.c net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
fealnx.c sweep the floors and convert some .get_drvinfo routines to strlcpy 2011-11-08 15:11:57 -05:00
jme.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2011-12-02 13:49:21 -05:00
jme.h jme: PHY configuration for compatible issue 2011-11-27 19:21:09 -05:00
Kconfig net: add calxeda xgmac ethernet driver 2011-11-29 01:15:24 -05:00
korina.c net/ethernet: convert drivers/net/ethernet/* to use module_platform_driver() 2011-11-29 00:25:05 -05:00
lantiq_etop.c NET: MIPS: lantiq: fix etop compile error 2011-11-14 14:34:54 -05:00
Makefile net: add calxeda xgmac ethernet driver 2011-11-29 01:15:24 -05:00
mipsnet.c
netx-eth.c
s6gmac.c