diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-05 17:54:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-05 17:54:29 -0400 |
commit | cc998ff8811530be521f6b316f37ab7676a07938 (patch) | |
tree | a054b3bf4b2ef406bf756a6cfc9be2f9115f17ae /drivers/pci | |
parent | 57d730924d5cc2c3e280af16a9306587c3a511db (diff) | |
parent | 0d40f75bdab241868c0eb6f97aef9f8b3a66f7b3 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
Pull networking changes from David Miller:
"Noteworthy changes this time around:
1) Multicast rejoin support for team driver, from Jiri Pirko.
2) Centralize and simplify TCP RTT measurement handling in order to
reduce the impact of bad RTO seeding from SYN/ACKs. Also, when
both timestamps and local RTT measurements are available prefer
the later because there are broken middleware devices which
scramble the timestamp.
From Yuchung Cheng.
3) Add TCP_NOTSENT_LOWAT socket option to limit the amount of kernel
memory consumed to queue up unsend user data. From Eric Dumazet.
4) Add a "physical port ID" abstraction for network devices, from
Jiri Pirko.
5) Add a "suppress" operation to influence fib_rules lookups, from
Stefan Tomanek.
6) Add a networking development FAQ, from Paul Gortmaker.
7) Extend the information provided by tcp_probe and add ipv6 support,
from Daniel Borkmann.
8) Use RCU locking more extensively in openvswitch data paths, from
Pravin B Shelar.
9) Add SCTP support to openvswitch, from Joe Stringer.
10) Add EF10 chip support to SFC driver, from Ben Hutchings.
11) Add new SYNPROXY netfilter target, from Patrick McHardy.
12) Compute a rate approximation for sending in TCP sockets, and use
this to more intelligently coalesce TSO frames. Furthermore, add
a new packet scheduler which takes advantage of this estimate when
available. From Eric Dumazet.
13) Allow AF_PACKET fanouts with random selection, from Daniel
Borkmann.
14) Add ipv6 support to vxlan driver, from Cong Wang"
Resolved conflicts as per discussion.
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1218 commits)
openvswitch: Fix alignment of struct sw_flow_key.
netfilter: Fix build errors with xt_socket.c
tcp: Add missing braces to do_tcp_setsockopt
caif: Add missing braces to multiline if in cfctrl_linkup_request
bnx2x: Add missing braces in bnx2x:bnx2x_link_initialize
vxlan: Fix kernel panic on device delete.
net: mvneta: implement ->ndo_do_ioctl() to support PHY ioctls
net: mvneta: properly disable HW PHY polling and ensure adjust_link() works
icplus: Use netif_running to determine device state
ethernet/arc/arc_emac: Fix huge delays in large file copies
tuntap: orphan frags before trying to set tx timestamp
tuntap: purge socket error queue on detach
qlcnic: use standard NAPI weights
ipv6:introduce function to find route for redirect
bnx2x: VF RSS support - VF side
bnx2x: VF RSS support - PF side
vxlan: Notify drivers for listening UDP port changes
net: usbnet: update addr_assign_type if appropriate
driver/net: enic: update enic maintainers and driver
driver/net: enic: Exposing symbols for Cisco's low latency driver
...
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/pci.c | 43 | ||||
-rw-r--r-- | drivers/pci/pci.h | 3 | ||||
-rw-r--r-- | drivers/pci/probe.c | 4 |
3 files changed, 48 insertions, 2 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index b821a62958fd..e8ccf6c0f08a 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -3998,6 +3998,49 @@ int pcie_set_mps(struct pci_dev *dev, int mps) | |||
3998 | } | 3998 | } |
3999 | 3999 | ||
4000 | /** | 4000 | /** |
4001 | * pcie_get_minimum_link - determine minimum link settings of a PCI device | ||
4002 | * @dev: PCI device to query | ||
4003 | * @speed: storage for minimum speed | ||
4004 | * @width: storage for minimum width | ||
4005 | * | ||
4006 | * This function will walk up the PCI device chain and determine the minimum | ||
4007 | * link width and speed of the device. | ||
4008 | */ | ||
4009 | int pcie_get_minimum_link(struct pci_dev *dev, enum pci_bus_speed *speed, | ||
4010 | enum pcie_link_width *width) | ||
4011 | { | ||
4012 | int ret; | ||
4013 | |||
4014 | *speed = PCI_SPEED_UNKNOWN; | ||
4015 | *width = PCIE_LNK_WIDTH_UNKNOWN; | ||
4016 | |||
4017 | while (dev) { | ||
4018 | u16 lnksta; | ||
4019 | enum pci_bus_speed next_speed; | ||
4020 | enum pcie_link_width next_width; | ||
4021 | |||
4022 | ret = pcie_capability_read_word(dev, PCI_EXP_LNKSTA, &lnksta); | ||
4023 | if (ret) | ||
4024 | return ret; | ||
4025 | |||
4026 | next_speed = pcie_link_speed[lnksta & PCI_EXP_LNKSTA_CLS]; | ||
4027 | next_width = (lnksta & PCI_EXP_LNKSTA_NLW) >> | ||
4028 | PCI_EXP_LNKSTA_NLW_SHIFT; | ||
4029 | |||
4030 | if (next_speed < *speed) | ||
4031 | *speed = next_speed; | ||
4032 | |||
4033 | if (next_width < *width) | ||
4034 | *width = next_width; | ||
4035 | |||
4036 | dev = dev->bus->self; | ||
4037 | } | ||
4038 | |||
4039 | return 0; | ||
4040 | } | ||
4041 | EXPORT_SYMBOL(pcie_get_minimum_link); | ||
4042 | |||
4043 | /** | ||
4001 | * pci_select_bars - Make BAR mask from the type of resource | 4044 | * pci_select_bars - Make BAR mask from the type of resource |
4002 | * @dev: the PCI device for which BAR mask is made | 4045 | * @dev: the PCI device for which BAR mask is made |
4003 | * @flags: resource type mask to be selected | 4046 | * @flags: resource type mask to be selected |
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 816c297f170c..8a00c063d7bc 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h | |||
@@ -6,6 +6,9 @@ | |||
6 | #define PCI_CFG_SPACE_SIZE 256 | 6 | #define PCI_CFG_SPACE_SIZE 256 |
7 | #define PCI_CFG_SPACE_EXP_SIZE 4096 | 7 | #define PCI_CFG_SPACE_EXP_SIZE 4096 |
8 | 8 | ||
9 | extern const unsigned char pcix_bus_speed[]; | ||
10 | extern const unsigned char pcie_link_speed[]; | ||
11 | |||
9 | /* Functions internal to the PCI core code */ | 12 | /* Functions internal to the PCI core code */ |
10 | 13 | ||
11 | int pci_create_sysfs_dev_files(struct pci_dev *pdev); | 14 | int pci_create_sysfs_dev_files(struct pci_dev *pdev); |
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index eeb50bd62402..4f9cc93c3b59 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
@@ -518,7 +518,7 @@ static struct pci_host_bridge *pci_alloc_host_bridge(struct pci_bus *b) | |||
518 | return bridge; | 518 | return bridge; |
519 | } | 519 | } |
520 | 520 | ||
521 | static unsigned char pcix_bus_speed[] = { | 521 | const unsigned char pcix_bus_speed[] = { |
522 | PCI_SPEED_UNKNOWN, /* 0 */ | 522 | PCI_SPEED_UNKNOWN, /* 0 */ |
523 | PCI_SPEED_66MHz_PCIX, /* 1 */ | 523 | PCI_SPEED_66MHz_PCIX, /* 1 */ |
524 | PCI_SPEED_100MHz_PCIX, /* 2 */ | 524 | PCI_SPEED_100MHz_PCIX, /* 2 */ |
@@ -537,7 +537,7 @@ static unsigned char pcix_bus_speed[] = { | |||
537 | PCI_SPEED_133MHz_PCIX_533 /* F */ | 537 | PCI_SPEED_133MHz_PCIX_533 /* F */ |
538 | }; | 538 | }; |
539 | 539 | ||
540 | static unsigned char pcie_link_speed[] = { | 540 | const unsigned char pcie_link_speed[] = { |
541 | PCI_SPEED_UNKNOWN, /* 0 */ | 541 | PCI_SPEED_UNKNOWN, /* 0 */ |
542 | PCIE_SPEED_2_5GT, /* 1 */ | 542 | PCIE_SPEED_2_5GT, /* 1 */ |
543 | PCIE_SPEED_5_0GT, /* 2 */ | 543 | PCIE_SPEED_5_0GT, /* 2 */ |