aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-05 14:11:59 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-05 14:11:59 -0400
commit283dbd82055eb70ff3b469f812d9c695f18c9641 (patch)
tree0a97e7b60b79bc48de9276c4da0f9472a202b130
parent11126c611e10abb18b6f1ed0300c0548c3906b54 (diff)
parent6825a26c2dc21eb4f8df9c06d3786ddec97cf53b (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking changes from David Miller: "The most important bit in here is the fix for input route caching from Eric Dumazet, it's a shame we couldn't fully analyze this in time for 3.6 as it's a 3.6 regression introduced by the routing cache removal. Anyways, will send quickly to -stable after you pull this in. Other changes of note: 1) Fix lockdep splats in team and bonding, from Eric Dumazet. 2) IPV6 adds link local route even when there is no link local address, from Nicolas Dichtel. 3) Fix ixgbe PTP implementation, from Jacob Keller. 4) Fix excessive stack usage in cxgb4 driver, from Vipul Pandya. 5) MAC length computed improperly in VLAN demux, from Antonio Quartulli." * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (26 commits) ipv6: release reference of ip6_null_entry's dst entry in __ip6_del_rt Remove noisy printks from llcp_sock_connect tipc: prevent dropped connections due to rcvbuf overflow silence some noisy printks in irda team: set qdisc_tx_busylock to avoid LOCKDEP splat bonding: set qdisc_tx_busylock to avoid LOCKDEP splat sctp: check src addr when processing SACK to update transport state sctp: fix a typo in prototype of __sctp_rcv_lookup() ipv4: add a fib_type to fib_info can: mpc5xxx_can: fix section type conflict can: peak_pcmcia: fix error return code can: peak_pci: fix error return code cxgb4: Fix build error due to missing linux/vmalloc.h include. bnx2x: fix ring size for 10G functions cxgb4: Dynamically allocate memory in t4_memory_rw() and get_vpd_params() ixgbe: add support for X540-AT1 ixgbe: fix poll loop for FDIRCTRL.INIT_DONE bit ixgbe: fix PTP ethtool timestamping function ixgbe: (PTP) Fix PPS interrupt code ixgbe: Fix PTP X540 SDP alignment code for PPS signal ...
-rw-r--r--drivers/net/bonding/bond_main.c2
-rw-r--r--drivers/net/can/mscan/mpc5xxx_can.c8
-rw-r--r--drivers/net/can/sja1000/peak_pci.c2
-rw-r--r--drivers/net/can/sja1000/peak_pcmcia.c4
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c17
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c5
-rw-r--r--drivers/net/ethernet/broadcom/tg3.c11
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/cxgb4.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/t4_hw.c43
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c2
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_common.c1
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c5
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c15
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c202
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_type.h1
-rw-r--r--drivers/net/ethernet/oki-semi/pch_gbe/Kconfig2
-rw-r--r--drivers/net/ethernet/ti/davinci_cpdma.c1
-rw-r--r--drivers/net/team/team.c2
-rw-r--r--include/net/ip_fib.h1
-rw-r--r--include/net/sctp/structs.h2
-rw-r--r--net/8021q/vlan_core.c3
-rw-r--r--net/ipv4/fib_semantics.c2
-rw-r--r--net/ipv6/addrconf.c15
-rw-r--r--net/ipv6/route.c11
-rw-r--r--net/irda/af_irda.c2
-rw-r--r--net/irda/irttp.c2
-rw-r--r--net/nfc/llcp/sock.c8
-rw-r--r--net/sctp/input.c2
-rw-r--r--net/sctp/outqueue.c15
-rw-r--r--net/sctp/sm_sideeffect.c4
-rw-r--r--net/sctp/sm_statefuns.c2
-rw-r--r--net/tipc/socket.c1
32 files changed, 209 insertions, 185 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 7858c58df4a3..b721902bb6b4 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -4826,6 +4826,7 @@ static int bond_check_params(struct bond_params *params)
4826 4826
4827static struct lock_class_key bonding_netdev_xmit_lock_key; 4827static struct lock_class_key bonding_netdev_xmit_lock_key;
4828static struct lock_class_key bonding_netdev_addr_lock_key; 4828static struct lock_class_key bonding_netdev_addr_lock_key;
4829static struct lock_class_key bonding_tx_busylock_key;
4829 4830
4830static void bond_set_lockdep_class_one(struct net_device *dev, 4831static void bond_set_lockdep_class_one(struct net_device *dev,
4831 struct netdev_queue *txq, 4832 struct netdev_queue *txq,
@@ -4840,6 +4841,7 @@ static void bond_set_lockdep_class(struct net_device *dev)
4840 lockdep_set_class(&dev->addr_list_lock, 4841 lockdep_set_class(&dev->addr_list_lock,
4841 &bonding_netdev_addr_lock_key); 4842 &bonding_netdev_addr_lock_key);
4842 netdev_for_each_tx_queue(dev, bond_set_lockdep_class_one, NULL); 4843 netdev_for_each_tx_queue(dev, bond_set_lockdep_class_one, NULL);
4844 dev->qdisc_tx_busylock = &bonding_tx_busylock_key;
4843} 4845}
4844 4846
4845/* 4847/*
diff --git a/drivers/net/can/mscan/mpc5xxx_can.c b/drivers/net/can/mscan/mpc5xxx_can.c
index c975999bb055..799c354083c4 100644
--- a/drivers/net/can/mscan/mpc5xxx_can.c
+++ b/drivers/net/can/mscan/mpc5xxx_can.c
@@ -247,7 +247,7 @@ static u32 __devinit mpc512x_can_get_clock(struct platform_device *ofdev,
247} 247}
248#endif /* CONFIG_PPC_MPC512x */ 248#endif /* CONFIG_PPC_MPC512x */
249 249
250static struct of_device_id mpc5xxx_can_table[]; 250static const struct of_device_id mpc5xxx_can_table[];
251static int __devinit mpc5xxx_can_probe(struct platform_device *ofdev) 251static int __devinit mpc5xxx_can_probe(struct platform_device *ofdev)
252{ 252{
253 const struct of_device_id *match; 253 const struct of_device_id *match;
@@ -380,17 +380,17 @@ static int mpc5xxx_can_resume(struct platform_device *ofdev)
380} 380}
381#endif 381#endif
382 382
383static const struct mpc5xxx_can_data __devinitdata mpc5200_can_data = { 383static const struct mpc5xxx_can_data __devinitconst mpc5200_can_data = {
384 .type = MSCAN_TYPE_MPC5200, 384 .type = MSCAN_TYPE_MPC5200,
385 .get_clock = mpc52xx_can_get_clock, 385 .get_clock = mpc52xx_can_get_clock,
386}; 386};
387 387
388static const struct mpc5xxx_can_data __devinitdata mpc5121_can_data = { 388static const struct mpc5xxx_can_data __devinitconst mpc5121_can_data = {
389 .type = MSCAN_TYPE_MPC5121, 389 .type = MSCAN_TYPE_MPC5121,
390 .get_clock = mpc512x_can_get_clock, 390 .get_clock = mpc512x_can_get_clock,
391}; 391};
392 392
393static struct of_device_id __devinitdata mpc5xxx_can_table[] = { 393static const struct of_device_id __devinitconst mpc5xxx_can_table[] = {
394 { .compatible = "fsl,mpc5200-mscan", .data = &mpc5200_can_data, }, 394 { .compatible = "fsl,mpc5200-mscan", .data = &mpc5200_can_data, },
395 /* Note that only MPC5121 Rev. 2 (and later) is supported */ 395 /* Note that only MPC5121 Rev. 2 (and later) is supported */
396 { .compatible = "fsl,mpc5121-mscan", .data = &mpc5121_can_data, }, 396 { .compatible = "fsl,mpc5121-mscan", .data = &mpc5121_can_data, },
diff --git a/drivers/net/can/sja1000/peak_pci.c b/drivers/net/can/sja1000/peak_pci.c
index f0a12962f7b6..f5b82aeb2540 100644
--- a/drivers/net/can/sja1000/peak_pci.c
+++ b/drivers/net/can/sja1000/peak_pci.c
@@ -583,12 +583,14 @@ static int __devinit peak_pci_probe(struct pci_dev *pdev,
583 cfg_base = pci_iomap(pdev, 0, PEAK_PCI_CFG_SIZE); 583 cfg_base = pci_iomap(pdev, 0, PEAK_PCI_CFG_SIZE);
584 if (!cfg_base) { 584 if (!cfg_base) {
585 dev_err(&pdev->dev, "failed to map PCI resource #0\n"); 585 dev_err(&pdev->dev, "failed to map PCI resource #0\n");
586 err = -ENOMEM;
586 goto failure_release_regions; 587 goto failure_release_regions;
587 } 588 }
588 589
589 reg_base = pci_iomap(pdev, 1, PEAK_PCI_CHAN_SIZE * channels); 590 reg_base = pci_iomap(pdev, 1, PEAK_PCI_CHAN_SIZE * channels);
590 if (!reg_base) { 591 if (!reg_base) {
591 dev_err(&pdev->dev, "failed to map PCI resource #1\n"); 592 dev_err(&pdev->dev, "failed to map PCI resource #1\n");
593 err = -ENOMEM;
592 goto failure_unmap_cfg_base; 594 goto failure_unmap_cfg_base;
593 } 595 }
594 596
diff --git a/drivers/net/can/sja1000/peak_pcmcia.c b/drivers/net/can/sja1000/peak_pcmcia.c
index ec6bd9d1b2af..272a85f32b14 100644
--- a/drivers/net/can/sja1000/peak_pcmcia.c
+++ b/drivers/net/can/sja1000/peak_pcmcia.c
@@ -686,8 +686,10 @@ static int __devinit pcan_probe(struct pcmcia_device *pdev)
686 686
687 /* detect available channels */ 687 /* detect available channels */
688 pcan_add_channels(card); 688 pcan_add_channels(card);
689 if (!card->chan_count) 689 if (!card->chan_count) {
690 err = -ENOMEM;
690 goto probe_err_4; 691 goto probe_err_4;
692 }
691 693
692 /* init the timer which controls the leds */ 694 /* init the timer which controls the leds */
693 init_timer(&card->led_timer); 695 init_timer(&card->led_timer);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index 30f04a389227..24220992413f 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -3523,15 +3523,18 @@ static int bnx2x_alloc_fp_mem_at(struct bnx2x *bp, int index)
3523 } else 3523 } else
3524#endif 3524#endif
3525 if (!bp->rx_ring_size) { 3525 if (!bp->rx_ring_size) {
3526 u32 cfg = SHMEM_RD(bp,
3527 dev_info.port_hw_config[BP_PORT(bp)].default_cfg);
3528
3529 rx_ring_size = MAX_RX_AVAIL/BNX2X_NUM_RX_QUEUES(bp); 3526 rx_ring_size = MAX_RX_AVAIL/BNX2X_NUM_RX_QUEUES(bp);
3530 3527
3531 /* Dercease ring size for 1G functions */ 3528 if (CHIP_IS_E3(bp)) {
3532 if ((cfg & PORT_HW_CFG_NET_SERDES_IF_MASK) == 3529 u32 cfg = SHMEM_RD(bp,
3533 PORT_HW_CFG_NET_SERDES_IF_SGMII) 3530 dev_info.port_hw_config[BP_PORT(bp)].
3534 rx_ring_size /= 10; 3531 default_cfg);
3532
3533 /* Decrease ring size for 1G functions */
3534 if ((cfg & PORT_HW_CFG_NET_SERDES_IF_MASK) ==
3535 PORT_HW_CFG_NET_SERDES_IF_SGMII)
3536 rx_ring_size /= 10;
3537 }
3535 3538
3536 /* allocate at least number of buffers required by FW */ 3539 /* allocate at least number of buffers required by FW */
3537 rx_ring_size = max_t(int, bp->disable_tpa ? MIN_RX_SIZE_NONTPA : 3540 rx_ring_size = max_t(int, bp->disable_tpa ? MIN_RX_SIZE_NONTPA :
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index f7ed122f4071..d5648fc666bd 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -3052,9 +3052,8 @@ static void bnx2x_drv_info_ether_stat(struct bnx2x *bp)
3052 struct eth_stats_info *ether_stat = 3052 struct eth_stats_info *ether_stat =
3053 &bp->slowpath->drv_info_to_mcp.ether_stat; 3053 &bp->slowpath->drv_info_to_mcp.ether_stat;
3054 3054
3055 /* leave last char as NULL */ 3055 strlcpy(ether_stat->version, DRV_MODULE_VERSION,
3056 memcpy(ether_stat->version, DRV_MODULE_VERSION, 3056 ETH_STAT_INFO_VERSION_LEN);
3057 ETH_STAT_INFO_VERSION_LEN - 1);
3058 3057
3059 bp->sp_objs[0].mac_obj.get_n_elements(bp, &bp->sp_objs[0].mac_obj, 3058 bp->sp_objs[0].mac_obj.get_n_elements(bp, &bp->sp_objs[0].mac_obj,
3060 DRV_INFO_ETH_STAT_NUM_MACS_REQUIRED, 3059 DRV_INFO_ETH_STAT_NUM_MACS_REQUIRED,
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 46280ba4c5d4..a8800ac10df9 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -782,7 +782,8 @@ static int tg3_ape_wait_for_event(struct tg3 *tp, u32 timeout_us)
782 return i == timeout_us / 10; 782 return i == timeout_us / 10;
783} 783}
784 784
785int tg3_ape_scratchpad_read(struct tg3 *tp, u32 *data, u32 base_off, u32 len) 785static int tg3_ape_scratchpad_read(struct tg3 *tp, u32 *data, u32 base_off,
786 u32 len)
786{ 787{
787 int err; 788 int err;
788 u32 i, bufoff, msgoff, maxlen, apedata; 789 u32 i, bufoff, msgoff, maxlen, apedata;
@@ -7763,7 +7764,7 @@ static int tg3_alloc_consistent(struct tg3 *tp)
7763 sblk = tnapi->hw_status; 7764 sblk = tnapi->hw_status;
7764 7765
7765 if (tg3_flag(tp, ENABLE_RSS)) { 7766 if (tg3_flag(tp, ENABLE_RSS)) {
7766 u16 *prodptr = 0; 7767 u16 *prodptr = NULL;
7767 7768
7768 /* 7769 /*
7769 * When RSS is enabled, the status block format changes 7770 * When RSS is enabled, the status block format changes
@@ -8103,11 +8104,11 @@ static int tg3_chip_reset(struct tg3 *tp)
8103 u16 val16; 8104 u16 val16;
8104 8105
8105 if (tp->pci_chip_rev_id == CHIPREV_ID_5750_A0) { 8106 if (tp->pci_chip_rev_id == CHIPREV_ID_5750_A0) {
8106 int i; 8107 int j;
8107 u32 cfg_val; 8108 u32 cfg_val;
8108 8109
8109 /* Wait for link training to complete. */ 8110 /* Wait for link training to complete. */
8110 for (i = 0; i < 5000; i++) 8111 for (j = 0; j < 5000; j++)
8111 udelay(100); 8112 udelay(100);
8112 8113
8113 pci_read_config_dword(tp->pdev, 0xc4, &cfg_val); 8114 pci_read_config_dword(tp->pdev, 0xc4, &cfg_val);
@@ -10206,7 +10207,7 @@ static u32 tg3_irq_count(struct tg3 *tp)
10206static bool tg3_enable_msix(struct tg3 *tp) 10207static bool tg3_enable_msix(struct tg3 *tp)
10207{ 10208{
10208 int i, rc; 10209 int i, rc;
10209 struct msix_entry msix_ent[tp->irq_max]; 10210 struct msix_entry msix_ent[TG3_IRQ_MAX_VECS];
10210 10211
10211 tp->txq_cnt = tp->txq_req; 10212 tp->txq_cnt = tp->txq_req;
10212 tp->rxq_cnt = tp->rxq_req; 10213 tp->rxq_cnt = tp->rxq_req;
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
index 745a1f53361f..31752b24434e 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
@@ -43,6 +43,7 @@
43#include <linux/pci.h> 43#include <linux/pci.h>
44#include <linux/spinlock.h> 44#include <linux/spinlock.h>
45#include <linux/timer.h> 45#include <linux/timer.h>
46#include <linux/vmalloc.h>
46#include <asm/io.h> 47#include <asm/io.h>
47#include "cxgb4_uld.h" 48#include "cxgb4_uld.h"
48#include "t4_hw.h" 49#include "t4_hw.h"
diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
index 35b81d8b59e9..137a24438d9c 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
@@ -408,7 +408,8 @@ static int t4_memory_rw(struct adapter *adap, int mtype, u32 addr, u32 len,
408 __be32 *buf, int dir) 408 __be32 *buf, int dir)
409{ 409{
410 u32 pos, start, end, offset, memoffset; 410 u32 pos, start, end, offset, memoffset;
411 int ret; 411 int ret = 0;
412 __be32 *data;
412 413
413 /* 414 /*
414 * Argument sanity checks ... 415 * Argument sanity checks ...
@@ -416,6 +417,10 @@ static int t4_memory_rw(struct adapter *adap, int mtype, u32 addr, u32 len,
416 if ((addr & 0x3) || (len & 0x3)) 417 if ((addr & 0x3) || (len & 0x3))
417 return -EINVAL; 418 return -EINVAL;
418 419
420 data = vmalloc(MEMWIN0_APERTURE/sizeof(__be32));
421 if (!data)
422 return -ENOMEM;
423
419 /* 424 /*
420 * Offset into the region of memory which is being accessed 425 * Offset into the region of memory which is being accessed
421 * MEM_EDC0 = 0 426 * MEM_EDC0 = 0
@@ -438,7 +443,6 @@ static int t4_memory_rw(struct adapter *adap, int mtype, u32 addr, u32 len,
438 offset = (addr - start)/sizeof(__be32); 443 offset = (addr - start)/sizeof(__be32);
439 444
440 for (pos = start; pos < end; pos += MEMWIN0_APERTURE, offset = 0) { 445 for (pos = start; pos < end; pos += MEMWIN0_APERTURE, offset = 0) {
441 __be32 data[MEMWIN0_APERTURE/sizeof(__be32)];
442 446
443 /* 447 /*
444 * If we're writing, copy the data from the caller's memory 448 * If we're writing, copy the data from the caller's memory
@@ -452,7 +456,7 @@ static int t4_memory_rw(struct adapter *adap, int mtype, u32 addr, u32 len,
452 if (offset || len < MEMWIN0_APERTURE) { 456 if (offset || len < MEMWIN0_APERTURE) {
453 ret = t4_mem_win_rw(adap, pos, data, 1); 457 ret = t4_mem_win_rw(adap, pos, data, 1);
454 if (ret) 458 if (ret)
455 return ret; 459 break;
456 } 460 }
457 while (offset < (MEMWIN0_APERTURE/sizeof(__be32)) && 461 while (offset < (MEMWIN0_APERTURE/sizeof(__be32)) &&
458 len > 0) { 462 len > 0) {
@@ -466,7 +470,7 @@ static int t4_memory_rw(struct adapter *adap, int mtype, u32 addr, u32 len,
466 */ 470 */
467 ret = t4_mem_win_rw(adap, pos, data, dir); 471 ret = t4_mem_win_rw(adap, pos, data, dir);
468 if (ret) 472 if (ret)
469 return ret; 473 break;
470 474
471 /* 475 /*
472 * If we're reading, copy the data into the caller's memory 476 * If we're reading, copy the data into the caller's memory
@@ -480,7 +484,8 @@ static int t4_memory_rw(struct adapter *adap, int mtype, u32 addr, u32 len,
480 } 484 }
481 } 485 }
482 486
483 return 0; 487 vfree(data);
488 return ret;
484} 489}
485 490
486int t4_memory_write(struct adapter *adap, int mtype, u32 addr, u32 len, 491int t4_memory_write(struct adapter *adap, int mtype, u32 addr, u32 len,
@@ -519,16 +524,21 @@ int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
519 u32 cclk_param, cclk_val; 524 u32 cclk_param, cclk_val;
520 int i, ret; 525 int i, ret;
521 int ec, sn; 526 int ec, sn;
522 u8 vpd[VPD_LEN], csum; 527 u8 *vpd, csum;
523 unsigned int vpdr_len, kw_offset, id_len; 528 unsigned int vpdr_len, kw_offset, id_len;
524 529
525 ret = pci_read_vpd(adapter->pdev, VPD_BASE, sizeof(vpd), vpd); 530 vpd = vmalloc(VPD_LEN);
531 if (!vpd)
532 return -ENOMEM;
533
534 ret = pci_read_vpd(adapter->pdev, VPD_BASE, VPD_LEN, vpd);
526 if (ret < 0) 535 if (ret < 0)
527 return ret; 536 goto out;
528 537
529 if (vpd[0] != PCI_VPD_LRDT_ID_STRING) { 538 if (vpd[0] != PCI_VPD_LRDT_ID_STRING) {
530 dev_err(adapter->pdev_dev, "missing VPD ID string\n"); 539 dev_err(adapter->pdev_dev, "missing VPD ID string\n");
531 return -EINVAL; 540 ret = -EINVAL;
541 goto out;
532 } 542 }
533 543
534 id_len = pci_vpd_lrdt_size(vpd); 544 id_len = pci_vpd_lrdt_size(vpd);
@@ -538,21 +548,24 @@ int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
538 i = pci_vpd_find_tag(vpd, 0, VPD_LEN, PCI_VPD_LRDT_RO_DATA); 548 i = pci_vpd_find_tag(vpd, 0, VPD_LEN, PCI_VPD_LRDT_RO_DATA);
539 if (i < 0) { 549 if (i < 0) {
540 dev_err(adapter->pdev_dev, "missing VPD-R section\n"); 550 dev_err(adapter->pdev_dev, "missing VPD-R section\n");
541 return -EINVAL; 551 ret = -EINVAL;
552 goto out;
542 } 553 }
543 554
544 vpdr_len = pci_vpd_lrdt_size(&vpd[i]); 555 vpdr_len = pci_vpd_lrdt_size(&vpd[i]);
545 kw_offset = i + PCI_VPD_LRDT_TAG_SIZE; 556 kw_offset = i + PCI_VPD_LRDT_TAG_SIZE;
546 if (vpdr_len + kw_offset > VPD_LEN) { 557 if (vpdr_len + kw_offset > VPD_LEN) {
547 dev_err(adapter->pdev_dev, "bad VPD-R length %u\n", vpdr_len); 558 dev_err(adapter->pdev_dev, "bad VPD-R length %u\n", vpdr_len);
548 return -EINVAL; 559 ret = -EINVAL;
560 goto out;
549 } 561 }
550 562
551#define FIND_VPD_KW(var, name) do { \ 563#define FIND_VPD_KW(var, name) do { \
552 var = pci_vpd_find_info_keyword(vpd, kw_offset, vpdr_len, name); \ 564 var = pci_vpd_find_info_keyword(vpd, kw_offset, vpdr_len, name); \
553 if (var < 0) { \ 565 if (var < 0) { \
554 dev_err(adapter->pdev_dev, "missing VPD keyword " name "\n"); \ 566 dev_err(adapter->pdev_dev, "missing VPD keyword " name "\n"); \
555 return -EINVAL; \ 567 ret = -EINVAL; \
568 goto out; \
556 } \ 569 } \
557 var += PCI_VPD_INFO_FLD_HDR_SIZE; \ 570 var += PCI_VPD_INFO_FLD_HDR_SIZE; \
558} while (0) 571} while (0)
@@ -564,7 +577,8 @@ int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
564 if (csum) { 577 if (csum) {
565 dev_err(adapter->pdev_dev, 578 dev_err(adapter->pdev_dev,
566 "corrupted VPD EEPROM, actual csum %u\n", csum); 579 "corrupted VPD EEPROM, actual csum %u\n", csum);
567 return -EINVAL; 580 ret = -EINVAL;
581 goto out;
568 } 582 }
569 583
570 FIND_VPD_KW(ec, "EC"); 584 FIND_VPD_KW(ec, "EC");
@@ -587,6 +601,9 @@ int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
587 FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_DEV_CCLK)); 601 FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_DEV_CCLK));
588 ret = t4_query_params(adapter, adapter->mbox, 0, 0, 602 ret = t4_query_params(adapter, adapter->mbox, 0, 0,
589 1, &cclk_param, &cclk_val); 603 1, &cclk_param, &cclk_val);
604
605out:
606 vfree(vpd);
590 if (ret) 607 if (ret)
591 return ret; 608 return ret;
592 p->cclk = cclk_val; 609 p->cclk = cclk_val;
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
index 18bf08c9d7a4..1077cb2b38db 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c
@@ -1099,7 +1099,7 @@ s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw)
1099 if (IXGBE_READ_REG(hw, IXGBE_FDIRCTRL) & 1099 if (IXGBE_READ_REG(hw, IXGBE_FDIRCTRL) &
1100 IXGBE_FDIRCTRL_INIT_DONE) 1100 IXGBE_FDIRCTRL_INIT_DONE)
1101 break; 1101 break;
1102 udelay(10); 1102 usleep_range(1000, 2000);
1103 } 1103 }
1104 if (i >= IXGBE_FDIR_INIT_DONE_POLL) { 1104 if (i >= IXGBE_FDIR_INIT_DONE_POLL) {
1105 hw_dbg(hw, "Flow Director Signature poll time exceeded!\n"); 1105 hw_dbg(hw, "Flow Director Signature poll time exceeded!\n");
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
index 90e41db3cb69..dbf37e4a45fd 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
@@ -70,6 +70,7 @@ static s32 ixgbe_device_supports_autoneg_fc(struct ixgbe_hw *hw)
70 70
71 switch (hw->device_id) { 71 switch (hw->device_id) {
72 case IXGBE_DEV_ID_X540T: 72 case IXGBE_DEV_ID_X540T:
73 case IXGBE_DEV_ID_X540T1:
73 return 0; 74 return 0;
74 case IXGBE_DEV_ID_82599_T3_LOM: 75 case IXGBE_DEV_ID_82599_T3_LOM:
75 return 0; 76 return 0;
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index 4104ea25d818..56b20d17d0e4 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -2690,10 +2690,7 @@ static int ixgbe_get_ts_info(struct net_device *dev,
2690 (1 << HWTSTAMP_FILTER_NONE) | 2690 (1 << HWTSTAMP_FILTER_NONE) |
2691 (1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) | 2691 (1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) |
2692 (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) | 2692 (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) |
2693 (1 << HWTSTAMP_FILTER_PTP_V2_SYNC) | 2693 (1 << HWTSTAMP_FILTER_PTP_V2_EVENT);
2694 (1 << HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) |
2695 (1 << HWTSTAMP_FILTER_PTP_V2_EVENT) |
2696 (1 << HWTSTAMP_FILTER_SOME);
2697 break; 2694 break;
2698#endif /* CONFIG_IXGBE_PTP */ 2695#endif /* CONFIG_IXGBE_PTP */
2699 default: 2696 default:
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 868af6938219..fa3d552e1f4a 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -114,6 +114,7 @@ static DEFINE_PCI_DEVICE_TABLE(ixgbe_pci_tbl) = {
114 {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_LS), board_82599 }, 114 {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_LS), board_82599 },
115 {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599EN_SFP), board_82599 }, 115 {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599EN_SFP), board_82599 },
116 {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_SF_QP), board_82599 }, 116 {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_SF_QP), board_82599 },
117 {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540T1), board_X540 },
117 /* required last entry */ 118 /* required last entry */
118 {0, } 119 {0, }
119}; 120};
@@ -2322,6 +2323,12 @@ static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter, bool queues,
2322 default: 2323 default:
2323 break; 2324 break;
2324 } 2325 }
2326
2327#ifdef CONFIG_IXGBE_PTP
2328 if (adapter->hw.mac.type == ixgbe_mac_X540)
2329 mask |= IXGBE_EIMS_TIMESYNC;
2330#endif
2331
2325 if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) && 2332 if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) &&
2326 !(adapter->flags2 & IXGBE_FLAG2_FDIR_REQUIRES_REINIT)) 2333 !(adapter->flags2 & IXGBE_FLAG2_FDIR_REQUIRES_REINIT))
2327 mask |= IXGBE_EIMS_FLOW_DIR; 2334 mask |= IXGBE_EIMS_FLOW_DIR;
@@ -2385,8 +2392,10 @@ static irqreturn_t ixgbe_msix_other(int irq, void *data)
2385 } 2392 }
2386 2393
2387 ixgbe_check_fan_failure(adapter, eicr); 2394 ixgbe_check_fan_failure(adapter, eicr);
2395
2388#ifdef CONFIG_IXGBE_PTP 2396#ifdef CONFIG_IXGBE_PTP
2389 ixgbe_ptp_check_pps_event(adapter, eicr); 2397 if (unlikely(eicr & IXGBE_EICR_TIMESYNC))
2398 ixgbe_ptp_check_pps_event(adapter, eicr);
2390#endif 2399#endif
2391 2400
2392 /* re-enable the original interrupt state, no lsc, no queues */ 2401 /* re-enable the original interrupt state, no lsc, no queues */
@@ -2580,7 +2589,8 @@ static irqreturn_t ixgbe_intr(int irq, void *data)
2580 2589
2581 ixgbe_check_fan_failure(adapter, eicr); 2590 ixgbe_check_fan_failure(adapter, eicr);
2582#ifdef CONFIG_IXGBE_PTP 2591#ifdef CONFIG_IXGBE_PTP
2583 ixgbe_ptp_check_pps_event(adapter, eicr); 2592 if (unlikely(eicr & IXGBE_EICR_TIMESYNC))
2593 ixgbe_ptp_check_pps_event(adapter, eicr);
2584#endif 2594#endif
2585 2595
2586 /* would disable interrupts here but EIAM disabled it */ 2596 /* would disable interrupts here but EIAM disabled it */
@@ -7045,6 +7055,7 @@ int ixgbe_wol_supported(struct ixgbe_adapter *adapter, u16 device_id,
7045 is_wol_supported = 1; 7055 is_wol_supported = 1;
7046 break; 7056 break;
7047 case IXGBE_DEV_ID_X540T: 7057 case IXGBE_DEV_ID_X540T:
7058 case IXGBE_DEV_ID_X540T1:
7048 /* check eeprom to see if enabled wol */ 7059 /* check eeprom to see if enabled wol */
7049 if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || 7060 if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) ||
7050 ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0) && 7061 ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0) &&
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
index 39881cb17a4b..d9291316ee9f 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
@@ -106,6 +106,83 @@ static struct sock_filter ptp_filter[] = {
106}; 106};
107 107
108/** 108/**
109 * ixgbe_ptp_setup_sdp
110 * @hw: the hardware private structure
111 *
112 * this function enables or disables the clock out feature on SDP0 for
113 * the X540 device. It will create a 1second periodic output that can
114 * be used as the PPS (via an interrupt).
115 *
116 * It calculates when the systime will be on an exact second, and then
117 * aligns the start of the PPS signal to that value. The shift is
118 * necessary because it can change based on the link speed.
119 */
120static void ixgbe_ptp_setup_sdp(struct ixgbe_adapter *adapter)
121{
122 struct ixgbe_hw *hw = &adapter->hw;
123 int shift = adapter->cc.shift;
124 u32 esdp, tsauxc, clktiml, clktimh, trgttiml, trgttimh, rem;
125 u64 ns = 0, clock_edge = 0;
126
127 if ((adapter->flags2 & IXGBE_FLAG2_PTP_PPS_ENABLED) &&
128 (hw->mac.type == ixgbe_mac_X540)) {
129
130 /* disable the pin first */
131 IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, 0x0);
132 IXGBE_WRITE_FLUSH(hw);
133
134 esdp = IXGBE_READ_REG(hw, IXGBE_ESDP);
135
136 /*
137 * enable the SDP0 pin as output, and connected to the
138 * native function for Timesync (ClockOut)
139 */
140 esdp |= (IXGBE_ESDP_SDP0_DIR |
141 IXGBE_ESDP_SDP0_NATIVE);
142
143 /*
144 * enable the Clock Out feature on SDP0, and allow
145 * interrupts to occur when the pin changes
146 */
147 tsauxc = (IXGBE_TSAUXC_EN_CLK |
148 IXGBE_TSAUXC_SYNCLK |
149 IXGBE_TSAUXC_SDP0_INT);
150
151 /* clock period (or pulse length) */
152 clktiml = (u32)(NSECS_PER_SEC << shift);
153 clktimh = (u32)((NSECS_PER_SEC << shift) >> 32);
154
155 /*
156 * Account for the cyclecounter wrap-around value by
157 * using the converted ns value of the current time to
158 * check for when the next aligned second would occur.
159 */
160 clock_edge |= (u64)IXGBE_READ_REG(hw, IXGBE_SYSTIML);
161 clock_edge |= (u64)IXGBE_READ_REG(hw, IXGBE_SYSTIMH) << 32;
162 ns = timecounter_cyc2time(&adapter->tc, clock_edge);
163
164 div_u64_rem(ns, NSECS_PER_SEC, &rem);
165 clock_edge += ((NSECS_PER_SEC - (u64)rem) << shift);
166
167 /* specify the initial clock start time */
168 trgttiml = (u32)clock_edge;
169 trgttimh = (u32)(clock_edge >> 32);
170
171 IXGBE_WRITE_REG(hw, IXGBE_CLKTIML, clktiml);
172 IXGBE_WRITE_REG(hw, IXGBE_CLKTIMH, clktimh);
173 IXGBE_WRITE_REG(hw, IXGBE_TRGTTIML0, trgttiml);
174 IXGBE_WRITE_REG(hw, IXGBE_TRGTTIMH0, trgttimh);
175
176 IXGBE_WRITE_REG(hw, IXGBE_ESDP, esdp);
177 IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, tsauxc);
178 } else {
179 IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, 0x0);
180 }
181
182 IXGBE_WRITE_FLUSH(hw);
183}
184
185/**
109 * ixgbe_ptp_read - read raw cycle counter (to be used by time counter) 186 * ixgbe_ptp_read - read raw cycle counter (to be used by time counter)
110 * @cc: the cyclecounter structure 187 * @cc: the cyclecounter structure
111 * 188 *
@@ -198,6 +275,9 @@ static int ixgbe_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
198 now); 275 now);
199 276
200 spin_unlock_irqrestore(&adapter->tmreg_lock, flags); 277 spin_unlock_irqrestore(&adapter->tmreg_lock, flags);
278
279 ixgbe_ptp_setup_sdp(adapter);
280
201 return 0; 281 return 0;
202} 282}
203 283
@@ -251,6 +331,7 @@ static int ixgbe_ptp_settime(struct ptp_clock_info *ptp,
251 timecounter_init(&adapter->tc, &adapter->cc, ns); 331 timecounter_init(&adapter->tc, &adapter->cc, ns);
252 spin_unlock_irqrestore(&adapter->tmreg_lock, flags); 332 spin_unlock_irqrestore(&adapter->tmreg_lock, flags);
253 333
334 ixgbe_ptp_setup_sdp(adapter);
254 return 0; 335 return 0;
255} 336}
256 337
@@ -281,8 +362,9 @@ static int ixgbe_ptp_enable(struct ptp_clock_info *ptp,
281 if (on) 362 if (on)
282 adapter->flags2 |= IXGBE_FLAG2_PTP_PPS_ENABLED; 363 adapter->flags2 |= IXGBE_FLAG2_PTP_PPS_ENABLED;
283 else 364 else
284 adapter->flags2 &= 365 adapter->flags2 &= ~IXGBE_FLAG2_PTP_PPS_ENABLED;
285 ~IXGBE_FLAG2_PTP_PPS_ENABLED; 366
367 ixgbe_ptp_setup_sdp(adapter);
286 return 0; 368 return 0;
287 default: 369 default:
288 break; 370 break;
@@ -305,109 +387,15 @@ void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter, u32 eicr)
305 struct ixgbe_hw *hw = &adapter->hw; 387 struct ixgbe_hw *hw = &adapter->hw;
306 struct ptp_clock_event event; 388 struct ptp_clock_event event;
307 389
308 event.type = PTP_CLOCK_PPS;
309
310 /* Make sure ptp clock is valid, and PPS event enabled */
311 if (!adapter->ptp_clock ||
312 !(adapter->flags2 & IXGBE_FLAG2_PTP_PPS_ENABLED))
313 return;
314
315 if (unlikely(eicr & IXGBE_EICR_TIMESYNC)) {
316 switch (hw->mac.type) {
317 case ixgbe_mac_X540:
318 ptp_clock_event(adapter->ptp_clock, &event);
319 break;
320 default:
321 break;
322 }
323 }
324}
325
326/**
327 * ixgbe_ptp_enable_sdp
328 * @hw: the hardware private structure
329 * @shift: the clock shift for calculating nanoseconds
330 *
331 * this function enables the clock out feature on the sdp0 for the
332 * X540 device. It will create a 1second periodic output that can be
333 * used as the PPS (via an interrupt).
334 *
335 * It calculates when the systime will be on an exact second, and then
336 * aligns the start of the PPS signal to that value. The shift is
337 * necessary because it can change based on the link speed.
338 */
339static void ixgbe_ptp_enable_sdp(struct ixgbe_hw *hw, int shift)
340{
341 u32 esdp, tsauxc, clktiml, clktimh, trgttiml, trgttimh;
342 u64 clock_edge = 0;
343 u32 rem;
344
345 switch (hw->mac.type) { 390 switch (hw->mac.type) {
346 case ixgbe_mac_X540: 391 case ixgbe_mac_X540:
347 esdp = IXGBE_READ_REG(hw, IXGBE_ESDP); 392 ptp_clock_event(adapter->ptp_clock, &event);
348
349 /*
350 * enable the SDP0 pin as output, and connected to the native
351 * function for Timesync (ClockOut)
352 */
353 esdp |= (IXGBE_ESDP_SDP0_DIR |
354 IXGBE_ESDP_SDP0_NATIVE);
355
356 /*
357 * enable the Clock Out feature on SDP0, and allow interrupts
358 * to occur when the pin changes
359 */
360 tsauxc = (IXGBE_TSAUXC_EN_CLK |
361 IXGBE_TSAUXC_SYNCLK |
362 IXGBE_TSAUXC_SDP0_INT);
363
364 /* clock period (or pulse length) */
365 clktiml = (u32)(NSECS_PER_SEC << shift);
366 clktimh = (u32)((NSECS_PER_SEC << shift) >> 32);
367
368 clock_edge |= (u64)IXGBE_READ_REG(hw, IXGBE_SYSTIML);
369 clock_edge |= (u64)IXGBE_READ_REG(hw, IXGBE_SYSTIMH) << 32;
370
371 /*
372 * account for the fact that we can't do u64 division
373 * with remainder, by converting the clock values into
374 * nanoseconds first
375 */
376 clock_edge >>= shift;
377 div_u64_rem(clock_edge, NSECS_PER_SEC, &rem);
378 clock_edge += (NSECS_PER_SEC - rem);
379 clock_edge <<= shift;
380
381 /* specify the initial clock start time */
382 trgttiml = (u32)clock_edge;
383 trgttimh = (u32)(clock_edge >> 32);
384
385 IXGBE_WRITE_REG(hw, IXGBE_CLKTIML, clktiml);
386 IXGBE_WRITE_REG(hw, IXGBE_CLKTIMH, clktimh);
387 IXGBE_WRITE_REG(hw, IXGBE_TRGTTIML0, trgttiml);
388 IXGBE_WRITE_REG(hw, IXGBE_TRGTTIMH0, trgttimh);
389
390 IXGBE_WRITE_REG(hw, IXGBE_ESDP, esdp);
391 IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, tsauxc);
392
393 IXGBE_WRITE_REG(hw, IXGBE_EIMS, IXGBE_EICR_TIMESYNC);
394 break; 393 break;
395 default: 394 default:
396 break; 395 break;
397 } 396 }
398} 397}
399 398
400/**
401 * ixgbe_ptp_disable_sdp
402 * @hw: the private hardware structure
403 *
404 * this function disables the auxiliary SDP clock out feature
405 */
406static void ixgbe_ptp_disable_sdp(struct ixgbe_hw *hw)
407{
408 IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_EICR_TIMESYNC);
409 IXGBE_WRITE_REG(hw, IXGBE_TSAUXC, 0);
410}
411 399
412/** 400/**
413 * ixgbe_ptp_overflow_check - delayed work to detect SYSTIME overflow 401 * ixgbe_ptp_overflow_check - delayed work to detect SYSTIME overflow
@@ -822,9 +810,6 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
822 if (adapter->cycle_speed == cycle_speed && timinca) 810 if (adapter->cycle_speed == cycle_speed && timinca)
823 return; 811 return;
824 812
825 /* disable the SDP clock out */
826 ixgbe_ptp_disable_sdp(hw);
827
828 /** 813 /**
829 * Scale the NIC cycle counter by a large factor so that 814 * Scale the NIC cycle counter by a large factor so that
830 * relatively small corrections to the frequency can be added 815 * relatively small corrections to the frequency can be added
@@ -877,10 +862,6 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
877 IXGBE_WRITE_REG(hw, IXGBE_SYSTIMH, 0x00000000); 862 IXGBE_WRITE_REG(hw, IXGBE_SYSTIMH, 0x00000000);
878 IXGBE_WRITE_FLUSH(hw); 863 IXGBE_WRITE_FLUSH(hw);
879 864
880 /* now that the shift has been calculated and the systime
881 * registers reset, (re-)enable the Clock out feature*/
882 ixgbe_ptp_enable_sdp(hw, shift);
883
884 /* store the new cycle speed */ 865 /* store the new cycle speed */
885 adapter->cycle_speed = cycle_speed; 866 adapter->cycle_speed = cycle_speed;
886 867
@@ -901,6 +882,12 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
901 ktime_to_ns(ktime_get_real())); 882 ktime_to_ns(ktime_get_real()));
902 883
903 spin_unlock_irqrestore(&adapter->tmreg_lock, flags); 884 spin_unlock_irqrestore(&adapter->tmreg_lock, flags);
885
886 /*
887 * Now that the shift has been calculated and the systime
888 * registers reset, (re-)enable the Clock out feature
889 */
890 ixgbe_ptp_setup_sdp(adapter);
904} 891}
905 892
906/** 893/**
@@ -979,10 +966,11 @@ void ixgbe_ptp_init(struct ixgbe_adapter *adapter)
979 */ 966 */
980void ixgbe_ptp_stop(struct ixgbe_adapter *adapter) 967void ixgbe_ptp_stop(struct ixgbe_adapter *adapter)
981{ 968{
982 ixgbe_ptp_disable_sdp(&adapter->hw);
983
984 /* stop the overflow check task */ 969 /* stop the overflow check task */
985 adapter->flags2 &= ~IXGBE_FLAG2_OVERFLOW_CHECK_ENABLED; 970 adapter->flags2 &= ~(IXGBE_FLAG2_OVERFLOW_CHECK_ENABLED |
971 IXGBE_FLAG2_PTP_PPS_ENABLED);
972
973 ixgbe_ptp_setup_sdp(adapter);
986 974
987 if (adapter->ptp_clock) { 975 if (adapter->ptp_clock) {
988 ptp_clock_unregister(adapter->ptp_clock); 976 ptp_clock_unregister(adapter->ptp_clock);
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
index 400f86a31174..0722f3368092 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
@@ -65,6 +65,7 @@
65#define IXGBE_DEV_ID_82599_LS 0x154F 65#define IXGBE_DEV_ID_82599_LS 0x154F
66#define IXGBE_DEV_ID_X540T 0x1528 66#define IXGBE_DEV_ID_X540T 0x1528
67#define IXGBE_DEV_ID_82599_SFP_SF_QP 0x154A 67#define IXGBE_DEV_ID_82599_SFP_SF_QP 0x154A
68#define IXGBE_DEV_ID_X540T1 0x1560
68 69
69/* VF Device IDs */ 70/* VF Device IDs */
70#define IXGBE_DEV_ID_82599_VF 0x10ED 71#define IXGBE_DEV_ID_82599_VF 0x10ED
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
index bce01641ee6b..97302419a377 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
@@ -26,7 +26,7 @@ if PCH_GBE
26config PCH_PTP 26config PCH_PTP
27 bool "PCH PTP clock support" 27 bool "PCH PTP clock support"
28 default n 28 default n
29 depends on PTP_1588_CLOCK_PCH 29 select PTP_1588_CLOCK_PCH
30 ---help--- 30 ---help---
31 Say Y here if you want to use Precision Time Protocol (PTP) in the 31 Say Y here if you want to use Precision Time Protocol (PTP) in the
32 driver. PTP is a method to precisely synchronize distributed clocks 32 driver. PTP is a method to precisely synchronize distributed clocks
diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c
index d15c888e9df8..49956730cd8d 100644
--- a/drivers/net/ethernet/ti/davinci_cpdma.c
+++ b/drivers/net/ethernet/ti/davinci_cpdma.c
@@ -863,6 +863,7 @@ int cpdma_chan_stop(struct cpdma_chan *chan)
863 863
864 next_dma = desc_read(desc, hw_next); 864 next_dma = desc_read(desc, hw_next);
865 chan->head = desc_from_phys(pool, next_dma); 865 chan->head = desc_from_phys(pool, next_dma);
866 chan->count--;
866 chan->stats.teardown_dequeue++; 867 chan->stats.teardown_dequeue++;
867 868
868 /* issue callback without locks held */ 869 /* issue callback without locks held */
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 5c7547c4f802..d44cca327588 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1315,6 +1315,7 @@ static const struct team_option team_options[] = {
1315 1315
1316static struct lock_class_key team_netdev_xmit_lock_key; 1316static struct lock_class_key team_netdev_xmit_lock_key;
1317static struct lock_class_key team_netdev_addr_lock_key; 1317static struct lock_class_key team_netdev_addr_lock_key;
1318static struct lock_class_key team_tx_busylock_key;
1318 1319
1319static void team_set_lockdep_class_one(struct net_device *dev, 1320static void team_set_lockdep_class_one(struct net_device *dev,
1320 struct netdev_queue *txq, 1321 struct netdev_queue *txq,
@@ -1327,6 +1328,7 @@ static void team_set_lockdep_class(struct net_device *dev)
1327{ 1328{
1328 lockdep_set_class(&dev->addr_list_lock, &team_netdev_addr_lock_key); 1329 lockdep_set_class(&dev->addr_list_lock, &team_netdev_addr_lock_key);
1329 netdev_for_each_tx_queue(dev, team_set_lockdep_class_one, NULL); 1330 netdev_for_each_tx_queue(dev, team_set_lockdep_class_one, NULL);
1331 dev->qdisc_tx_busylock = &team_tx_busylock_key;
1330} 1332}
1331 1333
1332static int team_init(struct net_device *dev) 1334static int team_init(struct net_device *dev)
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
index 926142ed8d7a..9497be1ad4c0 100644
--- a/include/net/ip_fib.h
+++ b/include/net/ip_fib.h
@@ -102,6 +102,7 @@ struct fib_info {
102 unsigned char fib_dead; 102 unsigned char fib_dead;
103 unsigned char fib_protocol; 103 unsigned char fib_protocol;
104 unsigned char fib_scope; 104 unsigned char fib_scope;
105 unsigned char fib_type;
105 __be32 fib_prefsrc; 106 __be32 fib_prefsrc;
106 u32 fib_priority; 107 u32 fib_priority;
107 u32 *fib_metrics; 108 u32 *fib_metrics;
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 0fef00f5d3ce..64158aa1bb5f 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -1068,7 +1068,7 @@ void sctp_outq_init(struct sctp_association *, struct sctp_outq *);
1068void sctp_outq_teardown(struct sctp_outq *); 1068void sctp_outq_teardown(struct sctp_outq *);
1069void sctp_outq_free(struct sctp_outq*); 1069void sctp_outq_free(struct sctp_outq*);
1070int sctp_outq_tail(struct sctp_outq *, struct sctp_chunk *chunk); 1070int sctp_outq_tail(struct sctp_outq *, struct sctp_chunk *chunk);
1071int sctp_outq_sack(struct sctp_outq *, struct sctp_sackhdr *); 1071int sctp_outq_sack(struct sctp_outq *, struct sctp_chunk *);
1072int sctp_outq_is_empty(const struct sctp_outq *); 1072int sctp_outq_is_empty(const struct sctp_outq *);
1073void sctp_outq_restart(struct sctp_outq *); 1073void sctp_outq_restart(struct sctp_outq *);
1074 1074
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c
index b258da88f675..add69d0fd99d 100644
--- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c
@@ -105,7 +105,6 @@ static struct sk_buff *vlan_reorder_header(struct sk_buff *skb)
105 return NULL; 105 return NULL;
106 memmove(skb->data - ETH_HLEN, skb->data - VLAN_ETH_HLEN, 2 * ETH_ALEN); 106 memmove(skb->data - ETH_HLEN, skb->data - VLAN_ETH_HLEN, 2 * ETH_ALEN);
107 skb->mac_header += VLAN_HLEN; 107 skb->mac_header += VLAN_HLEN;
108 skb_reset_mac_len(skb);
109 return skb; 108 return skb;
110} 109}
111 110
@@ -139,6 +138,8 @@ struct sk_buff *vlan_untag(struct sk_buff *skb)
139 138
140 skb_reset_network_header(skb); 139 skb_reset_network_header(skb);
141 skb_reset_transport_header(skb); 140 skb_reset_transport_header(skb);
141 skb_reset_mac_len(skb);
142
142 return skb; 143 return skb;
143 144
144err_free: 145err_free:
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index 3509065e409a..267753060ffc 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -314,6 +314,7 @@ static struct fib_info *fib_find_info(const struct fib_info *nfi)
314 nfi->fib_scope == fi->fib_scope && 314 nfi->fib_scope == fi->fib_scope &&
315 nfi->fib_prefsrc == fi->fib_prefsrc && 315 nfi->fib_prefsrc == fi->fib_prefsrc &&
316 nfi->fib_priority == fi->fib_priority && 316 nfi->fib_priority == fi->fib_priority &&
317 nfi->fib_type == fi->fib_type &&
317 memcmp(nfi->fib_metrics, fi->fib_metrics, 318 memcmp(nfi->fib_metrics, fi->fib_metrics,
318 sizeof(u32) * RTAX_MAX) == 0 && 319 sizeof(u32) * RTAX_MAX) == 0 &&
319 ((nfi->fib_flags ^ fi->fib_flags) & ~RTNH_F_DEAD) == 0 && 320 ((nfi->fib_flags ^ fi->fib_flags) & ~RTNH_F_DEAD) == 0 &&
@@ -833,6 +834,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
833 fi->fib_flags = cfg->fc_flags; 834 fi->fib_flags = cfg->fc_flags;
834 fi->fib_priority = cfg->fc_priority; 835 fi->fib_priority = cfg->fc_priority;
835 fi->fib_prefsrc = cfg->fc_prefsrc; 836 fi->fib_prefsrc = cfg->fc_prefsrc;
837 fi->fib_type = cfg->fc_type;
836 838
837 fi->fib_nhs = nhs; 839 fi->fib_nhs = nhs;
838 change_nexthops(fi) { 840 change_nexthops(fi) {
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 480e68422efb..d7c56f8a5b4e 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -1769,14 +1769,6 @@ static void sit_route_add(struct net_device *dev)
1769} 1769}
1770#endif 1770#endif
1771 1771
1772static void addrconf_add_lroute(struct net_device *dev)
1773{
1774 struct in6_addr addr;
1775
1776 ipv6_addr_set(&addr, htonl(0xFE800000), 0, 0, 0);
1777 addrconf_prefix_route(&addr, 64, dev, 0, 0);
1778}
1779
1780static struct inet6_dev *addrconf_add_dev(struct net_device *dev) 1772static struct inet6_dev *addrconf_add_dev(struct net_device *dev)
1781{ 1773{
1782 struct inet6_dev *idev; 1774 struct inet6_dev *idev;
@@ -1794,8 +1786,6 @@ static struct inet6_dev *addrconf_add_dev(struct net_device *dev)
1794 if (!(dev->flags & IFF_LOOPBACK)) 1786 if (!(dev->flags & IFF_LOOPBACK))
1795 addrconf_add_mroute(dev); 1787 addrconf_add_mroute(dev);
1796 1788
1797 /* Add link local route */
1798 addrconf_add_lroute(dev);
1799 return idev; 1789 return idev;
1800} 1790}
1801 1791
@@ -2474,10 +2464,9 @@ static void addrconf_sit_config(struct net_device *dev)
2474 2464
2475 sit_add_v4_addrs(idev); 2465 sit_add_v4_addrs(idev);
2476 2466
2477 if (dev->flags&IFF_POINTOPOINT) { 2467 if (dev->flags&IFF_POINTOPOINT)
2478 addrconf_add_mroute(dev); 2468 addrconf_add_mroute(dev);
2479 addrconf_add_lroute(dev); 2469 else
2480 } else
2481 sit_route_add(dev); 2470 sit_route_add(dev);
2482} 2471}
2483#endif 2472#endif
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index d1ddbc6ddac5..7c7e963260e1 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1593,17 +1593,18 @@ static int __ip6_del_rt(struct rt6_info *rt, struct nl_info *info)
1593 struct fib6_table *table; 1593 struct fib6_table *table;
1594 struct net *net = dev_net(rt->dst.dev); 1594 struct net *net = dev_net(rt->dst.dev);
1595 1595
1596 if (rt == net->ipv6.ip6_null_entry) 1596 if (rt == net->ipv6.ip6_null_entry) {
1597 return -ENOENT; 1597 err = -ENOENT;
1598 goto out;
1599 }
1598 1600
1599 table = rt->rt6i_table; 1601 table = rt->rt6i_table;
1600 write_lock_bh(&table->tb6_lock); 1602 write_lock_bh(&table->tb6_lock);
1601
1602 err = fib6_del(rt, info); 1603 err = fib6_del(rt, info);
1603 dst_release(&rt->dst);
1604
1605 write_unlock_bh(&table->tb6_lock); 1604 write_unlock_bh(&table->tb6_lock);
1606 1605
1606out:
1607 dst_release(&rt->dst);
1607 return err; 1608 return err;
1608} 1609}
1609 1610
diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
index bb738c9f9146..b833677d83d6 100644
--- a/net/irda/af_irda.c
+++ b/net/irda/af_irda.c
@@ -468,7 +468,7 @@ static int irda_open_tsap(struct irda_sock *self, __u8 tsap_sel, char *name)
468 notify_t notify; 468 notify_t notify;
469 469
470 if (self->tsap) { 470 if (self->tsap) {
471 IRDA_WARNING("%s: busy!\n", __func__); 471 IRDA_DEBUG(0, "%s: busy!\n", __func__);
472 return -EBUSY; 472 return -EBUSY;
473 } 473 }
474 474
diff --git a/net/irda/irttp.c b/net/irda/irttp.c
index 5c93f2952b08..1002e3396f72 100644
--- a/net/irda/irttp.c
+++ b/net/irda/irttp.c
@@ -440,7 +440,7 @@ struct tsap_cb *irttp_open_tsap(__u8 stsap_sel, int credit, notify_t *notify)
440 */ 440 */
441 lsap = irlmp_open_lsap(stsap_sel, &ttp_notify, 0); 441 lsap = irlmp_open_lsap(stsap_sel, &ttp_notify, 0);
442 if (lsap == NULL) { 442 if (lsap == NULL) {
443 IRDA_WARNING("%s: unable to allocate LSAP!!\n", __func__); 443 IRDA_DEBUG(0, "%s: unable to allocate LSAP!!\n", __func__);
444 return NULL; 444 return NULL;
445 } 445 }
446 446
diff --git a/net/nfc/llcp/sock.c b/net/nfc/llcp/sock.c
index 40f056debf9a..63e4cdc92376 100644
--- a/net/nfc/llcp/sock.c
+++ b/net/nfc/llcp/sock.c
@@ -497,15 +497,11 @@ static int llcp_sock_connect(struct socket *sock, struct sockaddr *_addr,
497 pr_debug("sock %p sk %p flags 0x%x\n", sock, sk, flags); 497 pr_debug("sock %p sk %p flags 0x%x\n", sock, sk, flags);
498 498
499 if (!addr || len < sizeof(struct sockaddr_nfc) || 499 if (!addr || len < sizeof(struct sockaddr_nfc) ||
500 addr->sa_family != AF_NFC) { 500 addr->sa_family != AF_NFC)
501 pr_err("Invalid socket\n");
502 return -EINVAL; 501 return -EINVAL;
503 }
504 502
505 if (addr->service_name_len == 0 && addr->dsap == 0) { 503 if (addr->service_name_len == 0 && addr->dsap == 0)
506 pr_err("Missing service name or dsap\n");
507 return -EINVAL; 504 return -EINVAL;
508 }
509 505
510 pr_debug("addr dev_idx=%u target_idx=%u protocol=%u\n", addr->dev_idx, 506 pr_debug("addr dev_idx=%u target_idx=%u protocol=%u\n", addr->dev_idx,
511 addr->target_idx, addr->nfc_protocol); 507 addr->target_idx, addr->nfc_protocol);
diff --git a/net/sctp/input.c b/net/sctp/input.c
index 25dfe7380479..8bd3c279427e 100644
--- a/net/sctp/input.c
+++ b/net/sctp/input.c
@@ -68,8 +68,8 @@
68static int sctp_rcv_ootb(struct sk_buff *); 68static int sctp_rcv_ootb(struct sk_buff *);
69static struct sctp_association *__sctp_rcv_lookup(struct net *net, 69static struct sctp_association *__sctp_rcv_lookup(struct net *net,
70 struct sk_buff *skb, 70 struct sk_buff *skb,
71 const union sctp_addr *laddr,
72 const union sctp_addr *paddr, 71 const union sctp_addr *paddr,
72 const union sctp_addr *laddr,
73 struct sctp_transport **transportp); 73 struct sctp_transport **transportp);
74static struct sctp_endpoint *__sctp_rcv_lookup_endpoint(struct net *net, 74static struct sctp_endpoint *__sctp_rcv_lookup_endpoint(struct net *net,
75 const union sctp_addr *laddr); 75 const union sctp_addr *laddr);
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index d16632e1503a..1b4a7f8ec3fd 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -63,6 +63,7 @@ static int sctp_acked(struct sctp_sackhdr *sack, __u32 tsn);
63static void sctp_check_transmitted(struct sctp_outq *q, 63static void sctp_check_transmitted(struct sctp_outq *q,
64 struct list_head *transmitted_queue, 64 struct list_head *transmitted_queue,
65 struct sctp_transport *transport, 65 struct sctp_transport *transport,
66 union sctp_addr *saddr,
66 struct sctp_sackhdr *sack, 67 struct sctp_sackhdr *sack,
67 __u32 *highest_new_tsn); 68 __u32 *highest_new_tsn);
68 69
@@ -1139,9 +1140,10 @@ static void sctp_sack_update_unack_data(struct sctp_association *assoc,
1139 * Process the SACK against the outqueue. Mostly, this just frees 1140 * Process the SACK against the outqueue. Mostly, this just frees
1140 * things off the transmitted queue. 1141 * things off the transmitted queue.
1141 */ 1142 */
1142int sctp_outq_sack(struct sctp_outq *q, struct sctp_sackhdr *sack) 1143int sctp_outq_sack(struct sctp_outq *q, struct sctp_chunk *chunk)
1143{ 1144{
1144 struct sctp_association *asoc = q->asoc; 1145 struct sctp_association *asoc = q->asoc;
1146 struct sctp_sackhdr *sack = chunk->subh.sack_hdr;
1145 struct sctp_transport *transport; 1147 struct sctp_transport *transport;
1146 struct sctp_chunk *tchunk = NULL; 1148 struct sctp_chunk *tchunk = NULL;
1147 struct list_head *lchunk, *transport_list, *temp; 1149 struct list_head *lchunk, *transport_list, *temp;
@@ -1210,7 +1212,7 @@ int sctp_outq_sack(struct sctp_outq *q, struct sctp_sackhdr *sack)
1210 /* Run through the retransmit queue. Credit bytes received 1212 /* Run through the retransmit queue. Credit bytes received
1211 * and free those chunks that we can. 1213 * and free those chunks that we can.
1212 */ 1214 */
1213 sctp_check_transmitted(q, &q->retransmit, NULL, sack, &highest_new_tsn); 1215 sctp_check_transmitted(q, &q->retransmit, NULL, NULL, sack, &highest_new_tsn);
1214 1216
1215 /* Run through the transmitted queue. 1217 /* Run through the transmitted queue.
1216 * Credit bytes received and free those chunks which we can. 1218 * Credit bytes received and free those chunks which we can.
@@ -1219,7 +1221,8 @@ int sctp_outq_sack(struct sctp_outq *q, struct sctp_sackhdr *sack)
1219 */ 1221 */
1220 list_for_each_entry(transport, transport_list, transports) { 1222 list_for_each_entry(transport, transport_list, transports) {
1221 sctp_check_transmitted(q, &transport->transmitted, 1223 sctp_check_transmitted(q, &transport->transmitted,
1222 transport, sack, &highest_new_tsn); 1224 transport, &chunk->source, sack,
1225 &highest_new_tsn);
1223 /* 1226 /*
1224 * SFR-CACC algorithm: 1227 * SFR-CACC algorithm:
1225 * C) Let count_of_newacks be the number of 1228 * C) Let count_of_newacks be the number of
@@ -1326,6 +1329,7 @@ int sctp_outq_is_empty(const struct sctp_outq *q)
1326static void sctp_check_transmitted(struct sctp_outq *q, 1329static void sctp_check_transmitted(struct sctp_outq *q,
1327 struct list_head *transmitted_queue, 1330 struct list_head *transmitted_queue,
1328 struct sctp_transport *transport, 1331 struct sctp_transport *transport,
1332 union sctp_addr *saddr,
1329 struct sctp_sackhdr *sack, 1333 struct sctp_sackhdr *sack,
1330 __u32 *highest_new_tsn_in_sack) 1334 __u32 *highest_new_tsn_in_sack)
1331{ 1335{
@@ -1633,8 +1637,9 @@ static void sctp_check_transmitted(struct sctp_outq *q,
1633 /* Mark the destination transport address as 1637 /* Mark the destination transport address as
1634 * active if it is not so marked. 1638 * active if it is not so marked.
1635 */ 1639 */
1636 if ((transport->state == SCTP_INACTIVE) || 1640 if ((transport->state == SCTP_INACTIVE ||
1637 (transport->state == SCTP_UNCONFIRMED)) { 1641 transport->state == SCTP_UNCONFIRMED) &&
1642 sctp_cmp_addr_exact(&transport->ipaddr, saddr)) {
1638 sctp_assoc_control_transport( 1643 sctp_assoc_control_transport(
1639 transport->asoc, 1644 transport->asoc,
1640 transport, 1645 transport,
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index bcfebb91559d..57f7de839b03 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -752,11 +752,11 @@ static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds,
752/* Helper function to process the process SACK command. */ 752/* Helper function to process the process SACK command. */
753static int sctp_cmd_process_sack(sctp_cmd_seq_t *cmds, 753static int sctp_cmd_process_sack(sctp_cmd_seq_t *cmds,
754 struct sctp_association *asoc, 754 struct sctp_association *asoc,
755 struct sctp_sackhdr *sackh) 755 struct sctp_chunk *chunk)
756{ 756{
757 int err = 0; 757 int err = 0;
758 758
759 if (sctp_outq_sack(&asoc->outqueue, sackh)) { 759 if (sctp_outq_sack(&asoc->outqueue, chunk)) {
760 struct net *net = sock_net(asoc->base.sk); 760 struct net *net = sock_net(asoc->base.sk);
761 761
762 /* There are no more TSNs awaiting SACK. */ 762 /* There are no more TSNs awaiting SACK. */
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index 094813b6c3c3..b6adef8a1e93 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -3179,7 +3179,7 @@ sctp_disposition_t sctp_sf_eat_sack_6_2(struct net *net,
3179 return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands); 3179 return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands);
3180 3180
3181 /* Return this SACK for further processing. */ 3181 /* Return this SACK for further processing. */
3182 sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, SCTP_SACKH(sackh)); 3182 sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, SCTP_CHUNK(chunk));
3183 3183
3184 /* Note: We do the rest of the work on the PROCESS_SACK 3184 /* Note: We do the rest of the work on the PROCESS_SACK
3185 * sideeffect. 3185 * sideeffect.
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 09dc5b97e079..fd5f042dbff4 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -220,6 +220,7 @@ static int tipc_create(struct net *net, struct socket *sock, int protocol,
220 220
221 sock_init_data(sock, sk); 221 sock_init_data(sock, sk);
222 sk->sk_backlog_rcv = backlog_rcv; 222 sk->sk_backlog_rcv = backlog_rcv;
223 sk->sk_rcvbuf = TIPC_FLOW_CONTROL_WIN * 2 * TIPC_MAX_USER_MSG_SIZE * 2;
223 tipc_sk(sk)->p = tp_ptr; 224 tipc_sk(sk)->p = tp_ptr;
224 tipc_sk(sk)->conn_timeout = CONN_TIMEOUT_DEFAULT; 225 tipc_sk(sk)->conn_timeout = CONN_TIMEOUT_DEFAULT;
225 226