forked from Freescale/linux-fslc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
NTB: Split ntb_hw_intel and ntb_transport drivers
Change ntb_hw_intel to use the new NTB hardware abstraction layer. Split ntb_transport into its own driver. Change it to use the new NTB hardware abstraction layer. Signed-off-by: Allen Hubbe <[email protected]> Signed-off-by: Jon Mason <[email protected]>
- Loading branch information
Showing
13 changed files
with
2,589 additions
and
2,195 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7007,6 +7007,14 @@ F: drivers/net/ntb_netdev.c | |
F: include/linux/ntb.h | ||
F: include/linux/ntb_transport.h | ||
|
||
NTB INTEL DRIVER | ||
M: Jon Mason <[email protected]> | ||
M: Dave Jiang <[email protected]> | ||
S: Supported | ||
W: https://github.com/jonmason/ntb/wiki | ||
T: git git://github.com/jonmason/ntb.git | ||
F: drivers/ntb/hw/intel/ | ||
|
||
NTFS FILESYSTEM | ||
M: Anton Altaparmakov <[email protected]> | ||
L: [email protected] | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,7 @@ | |
* GPL LICENSE SUMMARY | ||
* | ||
* Copyright(c) 2012 Intel Corporation. All rights reserved. | ||
* Copyright (C) 2015 EMC Corporation. All Rights Reserved. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of version 2 of the GNU General Public License as | ||
|
@@ -13,6 +14,7 @@ | |
* BSD LICENSE | ||
* | ||
* Copyright(c) 2012 Intel Corporation. All rights reserved. | ||
* Copyright (C) 2015 EMC Corporation. All Rights Reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions | ||
|
@@ -40,7 +42,7 @@ | |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
* Intel PCIe NTB Network Linux driver | ||
* PCIe NTB Network Linux driver | ||
* | ||
* Contact Information: | ||
* Jon Mason <[email protected]> | ||
|
@@ -49,6 +51,7 @@ | |
#include <linux/ethtool.h> | ||
#include <linux/module.h> | ||
#include <linux/pci.h> | ||
#include <linux/ntb.h> | ||
#include <linux/ntb_transport.h> | ||
|
||
#define NTB_NETDEV_VER "0.7" | ||
|
@@ -70,26 +73,19 @@ struct ntb_netdev { | |
|
||
static LIST_HEAD(dev_list); | ||
|
||
static void ntb_netdev_event_handler(void *data, int status) | ||
static void ntb_netdev_event_handler(void *data, int link_is_up) | ||
{ | ||
struct net_device *ndev = data; | ||
struct ntb_netdev *dev = netdev_priv(ndev); | ||
|
||
netdev_dbg(ndev, "Event %x, Link %x\n", status, | ||
netdev_dbg(ndev, "Event %x, Link %x\n", link_is_up, | ||
ntb_transport_link_query(dev->qp)); | ||
|
||
switch (status) { | ||
case NTB_LINK_DOWN: | ||
if (link_is_up) { | ||
if (ntb_transport_link_query(dev->qp)) | ||
netif_carrier_on(ndev); | ||
} else { | ||
netif_carrier_off(ndev); | ||
break; | ||
case NTB_LINK_UP: | ||
if (!ntb_transport_link_query(dev->qp)) | ||
return; | ||
|
||
netif_carrier_on(ndev); | ||
break; | ||
default: | ||
netdev_warn(ndev, "Unsupported event type %d\n", status); | ||
} | ||
} | ||
|
||
|
@@ -160,8 +156,6 @@ static netdev_tx_t ntb_netdev_start_xmit(struct sk_buff *skb, | |
struct ntb_netdev *dev = netdev_priv(ndev); | ||
int rc; | ||
|
||
netdev_dbg(ndev, "%s: skb len %d\n", __func__, skb->len); | ||
|
||
rc = ntb_transport_tx_enqueue(dev->qp, skb, skb->data, skb->len); | ||
if (rc) | ||
goto err; | ||
|
@@ -322,20 +316,26 @@ static const struct ntb_queue_handlers ntb_netdev_handlers = { | |
.event_handler = ntb_netdev_event_handler, | ||
}; | ||
|
||
static int ntb_netdev_probe(struct pci_dev *pdev) | ||
static int ntb_netdev_probe(struct device *client_dev) | ||
{ | ||
struct ntb_dev *ntb; | ||
struct net_device *ndev; | ||
struct pci_dev *pdev; | ||
struct ntb_netdev *dev; | ||
int rc; | ||
|
||
ndev = alloc_etherdev(sizeof(struct ntb_netdev)); | ||
ntb = dev_ntb(client_dev->parent); | ||
pdev = ntb->pdev; | ||
if (!pdev) | ||
return -ENODEV; | ||
|
||
ndev = alloc_etherdev(sizeof(*dev)); | ||
if (!ndev) | ||
return -ENOMEM; | ||
|
||
dev = netdev_priv(ndev); | ||
dev->ndev = ndev; | ||
dev->pdev = pdev; | ||
BUG_ON(!dev->pdev); | ||
ndev->features = NETIF_F_HIGHDMA; | ||
|
||
ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE; | ||
|
@@ -349,7 +349,8 @@ static int ntb_netdev_probe(struct pci_dev *pdev) | |
ndev->netdev_ops = &ntb_netdev_ops; | ||
ndev->ethtool_ops = &ntb_ethtool_ops; | ||
|
||
dev->qp = ntb_transport_create_queue(ndev, pdev, &ntb_netdev_handlers); | ||
dev->qp = ntb_transport_create_queue(ndev, client_dev, | ||
&ntb_netdev_handlers); | ||
if (!dev->qp) { | ||
rc = -EIO; | ||
goto err; | ||
|
@@ -372,12 +373,17 @@ static int ntb_netdev_probe(struct pci_dev *pdev) | |
return rc; | ||
} | ||
|
||
static void ntb_netdev_remove(struct pci_dev *pdev) | ||
static void ntb_netdev_remove(struct device *client_dev) | ||
{ | ||
struct ntb_dev *ntb; | ||
struct net_device *ndev; | ||
struct pci_dev *pdev; | ||
struct ntb_netdev *dev; | ||
bool found = false; | ||
|
||
ntb = dev_ntb(client_dev->parent); | ||
pdev = ntb->pdev; | ||
|
||
list_for_each_entry(dev, &dev_list, list) { | ||
if (dev->pdev == pdev) { | ||
found = true; | ||
|
@@ -396,7 +402,7 @@ static void ntb_netdev_remove(struct pci_dev *pdev) | |
free_netdev(ndev); | ||
} | ||
|
||
static struct ntb_client ntb_netdev_client = { | ||
static struct ntb_transport_client ntb_netdev_client = { | ||
.driver.name = KBUILD_MODNAME, | ||
.driver.owner = THIS_MODULE, | ||
.probe = ntb_netdev_probe, | ||
|
@@ -407,7 +413,7 @@ static int __init ntb_netdev_init_module(void) | |
{ | ||
int rc; | ||
|
||
rc = ntb_register_client_dev(KBUILD_MODNAME); | ||
rc = ntb_transport_register_client_dev(KBUILD_MODNAME); | ||
if (rc) | ||
return rc; | ||
return ntb_transport_register_client(&ntb_netdev_client); | ||
|
@@ -417,6 +423,6 @@ module_init(ntb_netdev_init_module); | |
static void __exit ntb_netdev_exit_module(void) | ||
{ | ||
ntb_transport_unregister_client(&ntb_netdev_client); | ||
ntb_unregister_client_dev(KBUILD_MODNAME); | ||
ntb_transport_unregister_client_dev(KBUILD_MODNAME); | ||
} | ||
module_exit(ntb_netdev_exit_module); |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,26 @@ | ||
config NTB | ||
tristate "Intel Non-Transparent Bridge support" | ||
depends on PCI | ||
depends on X86 | ||
help | ||
The PCI-E Non-transparent bridge hardware is a point-to-point PCI-E bus | ||
connecting 2 systems. When configured, writes to the device's PCI | ||
mapped memory will be mirrored to a buffer on the remote system. The | ||
ntb Linux driver uses this point-to-point communication as a method to | ||
transfer data from one system to the other. | ||
|
||
If unsure, say N. | ||
menuconfig NTB | ||
tristate "Non-Transparent Bridge support" | ||
depends on PCI | ||
help | ||
The PCI-E Non-transparent bridge hardware is a point-to-point PCI-E bus | ||
connecting 2 systems. When configured, writes to the device's PCI | ||
mapped memory will be mirrored to a buffer on the remote system. The | ||
ntb Linux driver uses this point-to-point communication as a method to | ||
transfer data from one system to the other. | ||
|
||
If unsure, say N. | ||
|
||
if NTB | ||
|
||
source "drivers/ntb/hw/Kconfig" | ||
|
||
config NTB_TRANSPORT | ||
tristate "NTB Transport Client" | ||
help | ||
This is a transport driver that enables connected systems to exchange | ||
messages over the ntb hardware. The transport exposes a queue pair api | ||
to client drivers. | ||
|
||
If unsure, say N. | ||
|
||
endif # NTB |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,2 @@ | ||
obj-$(CONFIG_NTB) += ntb.o | ||
obj-$(CONFIG_NTB) += ntb_hw_intel.o | ||
|
||
ntb_hw_intel-objs := hw/intel/ntb_hw_intel.o ntb_transport.o | ||
obj-$(CONFIG_NTB) += ntb.o hw/ | ||
obj-$(CONFIG_NTB_TRANSPORT) += ntb_transport.o |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
source "drivers/ntb/hw/intel/Kconfig" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
obj-$(CONFIG_NTB_INTEL) += intel/ |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
config NTB_INTEL | ||
tristate "Intel Non-Transparent Bridge support" | ||
depends on X86_64 | ||
help | ||
This driver supports Intel NTB on capable Xeon and Atom hardware. | ||
|
||
If unsure, say N. |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
obj-$(CONFIG_NTB_INTEL) += ntb_hw_intel.o |
Oops, something went wrong.