diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-04 00:05:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-04 00:05:43 -0400 |
commit | 6dbbd92522a13bcd5003829cbed30bc38a3d0362 (patch) | |
tree | b486642d7392b81d89f159d65fd556a432e78d16 /drivers/net/ethernet | |
parent | d6748066ad0e8b2514545998f8367ebb3906f299 (diff) | |
parent | e1cfb67acd5e890bbad695000d2c997bfb7f1756 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (45 commits)
be2net: Add detect UE feature for Lancer
be2net: Prevent CQ full condition for Lancer
be2net: Fix disabling multicast promiscous mode
be2net: Fix endian issue in RX filter command
af_packet: de-inline some helper functions
MAINTAINERS: Add can-gw include to maintained files
net: Add back alignment for size for __alloc_skb
net: add missing bh_unlock_sock() calls
l2tp: fix race in l2tp_recv_dequeue()
ixgbevf: Update release version
ixgbe: DCB, return max for IEEE traffic classes
ixgbe: fix reading of the buffer returned by the firmware
ixgbe: Fix compiler warnings
ixgbe: fix smatch splat due to missing NULL check
ixgbe: fix disabling of Tx laser at probe
ixgbe: Fix link issues caused by a reset while interface is down
igb: Fix for I347AT4 PHY cable length unit detection
e100: make sure vlan support isn't advertised on old adapters
e1000e: demote a debugging WARN to a debug log message
net: fix typo in drivers/net/ethernet/xilinx/ll_temac_main.c
...
Diffstat (limited to 'drivers/net/ethernet')
25 files changed, 157 insertions, 105 deletions
diff --git a/drivers/net/ethernet/Kconfig b/drivers/net/ethernet/Kconfig index 6dff5a0e733f..597f4d45c632 100644 --- a/drivers/net/ethernet/Kconfig +++ b/drivers/net/ethernet/Kconfig | |||
@@ -159,6 +159,7 @@ config S6GMAC | |||
159 | will be called s6gmac. | 159 | will be called s6gmac. |
160 | 160 | ||
161 | source "drivers/net/ethernet/seeq/Kconfig" | 161 | source "drivers/net/ethernet/seeq/Kconfig" |
162 | source "drivers/net/ethernet/silan/Kconfig" | ||
162 | source "drivers/net/ethernet/sis/Kconfig" | 163 | source "drivers/net/ethernet/sis/Kconfig" |
163 | source "drivers/net/ethernet/sfc/Kconfig" | 164 | source "drivers/net/ethernet/sfc/Kconfig" |
164 | source "drivers/net/ethernet/sgi/Kconfig" | 165 | source "drivers/net/ethernet/sgi/Kconfig" |
diff --git a/drivers/net/ethernet/Makefile b/drivers/net/ethernet/Makefile index c53ad3afc991..be5dde040261 100644 --- a/drivers/net/ethernet/Makefile +++ b/drivers/net/ethernet/Makefile | |||
@@ -58,6 +58,7 @@ obj-$(CONFIG_SH_ETH) += renesas/ | |||
58 | obj-$(CONFIG_NET_VENDOR_RDC) += rdc/ | 58 | obj-$(CONFIG_NET_VENDOR_RDC) += rdc/ |
59 | obj-$(CONFIG_S6GMAC) += s6gmac.o | 59 | obj-$(CONFIG_S6GMAC) += s6gmac.o |
60 | obj-$(CONFIG_NET_VENDOR_SEEQ) += seeq/ | 60 | obj-$(CONFIG_NET_VENDOR_SEEQ) += seeq/ |
61 | obj-$(CONFIG_NET_VENDOR_SILAN) += silan/ | ||
61 | obj-$(CONFIG_NET_VENDOR_SIS) += sis/ | 62 | obj-$(CONFIG_NET_VENDOR_SIS) += sis/ |
62 | obj-$(CONFIG_SFC) += sfc/ | 63 | obj-$(CONFIG_SFC) += sfc/ |
63 | obj-$(CONFIG_NET_VENDOR_SGI) += sgi/ | 64 | obj-$(CONFIG_NET_VENDOR_SGI) += sgi/ |
diff --git a/drivers/net/ethernet/apple/Kconfig b/drivers/net/ethernet/apple/Kconfig index a759d5483ab9..1375e2dc9468 100644 --- a/drivers/net/ethernet/apple/Kconfig +++ b/drivers/net/ethernet/apple/Kconfig | |||
@@ -52,18 +52,6 @@ config BMAC | |||
52 | To compile this driver as a module, choose M here: the module | 52 | To compile this driver as a module, choose M here: the module |
53 | will be called bmac. | 53 | will be called bmac. |
54 | 54 | ||
55 | config MAC89x0 | ||
56 | tristate "Macintosh CS89x0 based ethernet cards" | ||
57 | depends on MAC | ||
58 | ---help--- | ||
59 | Support for CS89x0 chipset based Ethernet cards. If you have a | ||
60 | Nubus or LC-PDS network (Ethernet) card of this type, say Y and | ||
61 | read the Ethernet-HOWTO, available from | ||
62 | <http://www.tldp.org/docs.html#howto>. | ||
63 | |||
64 | To compile this driver as a module, choose M here. This module will | ||
65 | be called mac89x0. | ||
66 | |||
67 | config MACMACE | 55 | config MACMACE |
68 | bool "Macintosh (AV) onboard MACE ethernet" | 56 | bool "Macintosh (AV) onboard MACE ethernet" |
69 | depends on MAC | 57 | depends on MAC |
diff --git a/drivers/net/ethernet/apple/Makefile b/drivers/net/ethernet/apple/Makefile index 0d3a5919c95b..86eaa17af0f4 100644 --- a/drivers/net/ethernet/apple/Makefile +++ b/drivers/net/ethernet/apple/Makefile | |||
@@ -4,5 +4,4 @@ | |||
4 | 4 | ||
5 | obj-$(CONFIG_MACE) += mace.o | 5 | obj-$(CONFIG_MACE) += mace.o |
6 | obj-$(CONFIG_BMAC) += bmac.o | 6 | obj-$(CONFIG_BMAC) += bmac.o |
7 | obj-$(CONFIG_MAC89x0) += mac89x0.o | ||
8 | obj-$(CONFIG_MACMACE) += macmace.o | 7 | obj-$(CONFIG_MACMACE) += macmace.o |
diff --git a/drivers/net/ethernet/cirrus/Kconfig b/drivers/net/ethernet/cirrus/Kconfig index 6cbb81ccc02e..1f8648f099c7 100644 --- a/drivers/net/ethernet/cirrus/Kconfig +++ b/drivers/net/ethernet/cirrus/Kconfig | |||
@@ -6,7 +6,7 @@ config NET_VENDOR_CIRRUS | |||
6 | bool "Cirrus devices" | 6 | bool "Cirrus devices" |
7 | default y | 7 | default y |
8 | depends on ISA || EISA || MACH_IXDP2351 || ARCH_IXDP2X01 \ | 8 | depends on ISA || EISA || MACH_IXDP2351 || ARCH_IXDP2X01 \ |
9 | || MACH_MX31ADS || MACH_QQ2440 || (ARM && ARCH_EP93XX) | 9 | || MACH_MX31ADS || MACH_QQ2440 || (ARM && ARCH_EP93XX) || MAC |
10 | ---help--- | 10 | ---help--- |
11 | If you have a network (Ethernet) card belonging to this class, say Y | 11 | If you have a network (Ethernet) card belonging to this class, say Y |
12 | and read the Ethernet-HOWTO, available from | 12 | and read the Ethernet-HOWTO, available from |
@@ -47,4 +47,16 @@ config EP93XX_ETH | |||
47 | This is a driver for the ethernet hardware included in EP93xx CPUs. | 47 | This is a driver for the ethernet hardware included in EP93xx CPUs. |
48 | Say Y if you are building a kernel for EP93xx based devices. | 48 | Say Y if you are building a kernel for EP93xx based devices. |
49 | 49 | ||
50 | config MAC89x0 | ||
51 | tristate "Macintosh CS89x0 based ethernet cards" | ||
52 | depends on MAC | ||
53 | ---help--- | ||
54 | Support for CS89x0 chipset based Ethernet cards. If you have a | ||
55 | Nubus or LC-PDS network (Ethernet) card of this type, say Y and | ||
56 | read the Ethernet-HOWTO, available from | ||
57 | <http://www.tldp.org/docs.html#howto>. | ||
58 | |||
59 | To compile this driver as a module, choose M here. This module will | ||
60 | be called mac89x0. | ||
61 | |||
50 | endif # NET_VENDOR_CIRRUS | 62 | endif # NET_VENDOR_CIRRUS |
diff --git a/drivers/net/ethernet/cirrus/Makefile b/drivers/net/ethernet/cirrus/Makefile index 14bd77e0cb57..ca245e2b5d98 100644 --- a/drivers/net/ethernet/cirrus/Makefile +++ b/drivers/net/ethernet/cirrus/Makefile | |||
@@ -4,3 +4,4 @@ | |||
4 | 4 | ||
5 | obj-$(CONFIG_CS89x0) += cs89x0.o | 5 | obj-$(CONFIG_CS89x0) += cs89x0.o |
6 | obj-$(CONFIG_EP93XX_ETH) += ep93xx_eth.o | 6 | obj-$(CONFIG_EP93XX_ETH) += ep93xx_eth.o |
7 | obj-$(CONFIG_MAC89x0) += mac89x0.o | ||
diff --git a/drivers/net/ethernet/apple/mac89x0.c b/drivers/net/ethernet/cirrus/mac89x0.c index 83781f316d1f..83781f316d1f 100644 --- a/drivers/net/ethernet/apple/mac89x0.c +++ b/drivers/net/ethernet/cirrus/mac89x0.c | |||
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index 824b8e6021f6..2c7b36673dfc 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c | |||
@@ -318,8 +318,7 @@ static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db) | |||
318 | 318 | ||
319 | if (msecs > 4000) { | 319 | if (msecs > 4000) { |
320 | dev_err(&adapter->pdev->dev, "mbox poll timed out\n"); | 320 | dev_err(&adapter->pdev->dev, "mbox poll timed out\n"); |
321 | if (!lancer_chip(adapter)) | 321 | be_detect_dump_ue(adapter); |
322 | be_detect_dump_ue(adapter); | ||
323 | return -1; | 322 | return -1; |
324 | } | 323 | } |
325 | 324 | ||
@@ -1540,7 +1539,14 @@ int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 value) | |||
1540 | 1539 | ||
1541 | req->if_flags_mask = req->if_flags = | 1540 | req->if_flags_mask = req->if_flags = |
1542 | cpu_to_le32(BE_IF_FLAGS_MULTICAST); | 1541 | cpu_to_le32(BE_IF_FLAGS_MULTICAST); |
1543 | req->mcast_num = cpu_to_le16(netdev_mc_count(adapter->netdev)); | 1542 | |
1543 | /* Reset mcast promisc mode if already set by setting mask | ||
1544 | * and not setting flags field | ||
1545 | */ | ||
1546 | req->if_flags_mask |= | ||
1547 | cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS); | ||
1548 | |||
1549 | req->mcast_num = cpu_to_le32(netdev_mc_count(adapter->netdev)); | ||
1544 | netdev_for_each_mc_addr(ha, adapter->netdev) | 1550 | netdev_for_each_mc_addr(ha, adapter->netdev) |
1545 | memcpy(req->mcast_mac[i++].byte, ha->addr, ETH_ALEN); | 1551 | memcpy(req->mcast_mac[i++].byte, ha->addr, ETH_ALEN); |
1546 | } | 1552 | } |
diff --git a/drivers/net/ethernet/emulex/benet/be_hw.h b/drivers/net/ethernet/emulex/benet/be_hw.h index fbc8a915519e..f2c89e3ccabd 100644 --- a/drivers/net/ethernet/emulex/benet/be_hw.h +++ b/drivers/net/ethernet/emulex/benet/be_hw.h | |||
@@ -48,6 +48,8 @@ | |||
48 | /* Lancer SLIPORT_CONTROL SLIPORT_STATUS registers */ | 48 | /* Lancer SLIPORT_CONTROL SLIPORT_STATUS registers */ |
49 | #define SLIPORT_STATUS_OFFSET 0x404 | 49 | #define SLIPORT_STATUS_OFFSET 0x404 |
50 | #define SLIPORT_CONTROL_OFFSET 0x408 | 50 | #define SLIPORT_CONTROL_OFFSET 0x408 |
51 | #define SLIPORT_ERROR1_OFFSET 0x40C | ||
52 | #define SLIPORT_ERROR2_OFFSET 0x410 | ||
51 | 53 | ||
52 | #define SLIPORT_STATUS_ERR_MASK 0x80000000 | 54 | #define SLIPORT_STATUS_ERR_MASK 0x80000000 |
53 | #define SLIPORT_STATUS_RN_MASK 0x01000000 | 55 | #define SLIPORT_STATUS_RN_MASK 0x01000000 |
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 21804972fa2f..e0aed188c57f 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
@@ -1905,6 +1905,8 @@ loop_continue: | |||
1905 | be_rx_stats_update(rxo, rxcp); | 1905 | be_rx_stats_update(rxo, rxcp); |
1906 | } | 1906 | } |
1907 | 1907 | ||
1908 | be_cq_notify(adapter, rx_cq->id, false, work_done); | ||
1909 | |||
1908 | /* Refill the queue */ | 1910 | /* Refill the queue */ |
1909 | if (work_done && atomic_read(&rxo->q.used) < RX_FRAGS_REFILL_WM) | 1911 | if (work_done && atomic_read(&rxo->q.used) < RX_FRAGS_REFILL_WM) |
1910 | be_post_rx_frags(rxo, GFP_ATOMIC); | 1912 | be_post_rx_frags(rxo, GFP_ATOMIC); |
@@ -1912,10 +1914,8 @@ loop_continue: | |||
1912 | /* All consumed */ | 1914 | /* All consumed */ |
1913 | if (work_done < budget) { | 1915 | if (work_done < budget) { |
1914 | napi_complete(napi); | 1916 | napi_complete(napi); |
1915 | be_cq_notify(adapter, rx_cq->id, true, work_done); | 1917 | /* Arm CQ */ |
1916 | } else { | 1918 | be_cq_notify(adapter, rx_cq->id, true, 0); |
1917 | /* More to be consumed; continue with interrupts disabled */ | ||
1918 | be_cq_notify(adapter, rx_cq->id, false, work_done); | ||
1919 | } | 1919 | } |
1920 | return work_done; | 1920 | return work_done; |
1921 | } | 1921 | } |
@@ -1977,42 +1977,62 @@ static int be_poll_tx_mcc(struct napi_struct *napi, int budget) | |||
1977 | 1977 | ||
1978 | void be_detect_dump_ue(struct be_adapter *adapter) | 1978 | void be_detect_dump_ue(struct be_adapter *adapter) |
1979 | { | 1979 | { |
1980 | u32 ue_status_lo, ue_status_hi, ue_status_lo_mask, ue_status_hi_mask; | 1980 | u32 ue_lo = 0, ue_hi = 0, ue_lo_mask = 0, ue_hi_mask = 0; |
1981 | u32 sliport_status = 0, sliport_err1 = 0, sliport_err2 = 0; | ||
1981 | u32 i; | 1982 | u32 i; |
1982 | 1983 | ||
1983 | pci_read_config_dword(adapter->pdev, | 1984 | if (lancer_chip(adapter)) { |
1984 | PCICFG_UE_STATUS_LOW, &ue_status_lo); | 1985 | sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); |
1985 | pci_read_config_dword(adapter->pdev, | 1986 | if (sliport_status & SLIPORT_STATUS_ERR_MASK) { |
1986 | PCICFG_UE_STATUS_HIGH, &ue_status_hi); | 1987 | sliport_err1 = ioread32(adapter->db + |
1987 | pci_read_config_dword(adapter->pdev, | 1988 | SLIPORT_ERROR1_OFFSET); |
1988 | PCICFG_UE_STATUS_LOW_MASK, &ue_status_lo_mask); | 1989 | sliport_err2 = ioread32(adapter->db + |
1989 | pci_read_config_dword(adapter->pdev, | 1990 | SLIPORT_ERROR2_OFFSET); |
1990 | PCICFG_UE_STATUS_HI_MASK, &ue_status_hi_mask); | 1991 | } |
1992 | } else { | ||
1993 | pci_read_config_dword(adapter->pdev, | ||
1994 | PCICFG_UE_STATUS_LOW, &ue_lo); | ||
1995 | pci_read_config_dword(adapter->pdev, | ||
1996 | PCICFG_UE_STATUS_HIGH, &ue_hi); | ||
1997 | pci_read_config_dword(adapter->pdev, | ||
1998 | PCICFG_UE_STATUS_LOW_MASK, &ue_lo_mask); | ||
1999 | pci_read_config_dword(adapter->pdev, | ||
2000 | PCICFG_UE_STATUS_HI_MASK, &ue_hi_mask); | ||
1991 | 2001 | ||
1992 | ue_status_lo = (ue_status_lo & (~ue_status_lo_mask)); | 2002 | ue_lo = (ue_lo & (~ue_lo_mask)); |
1993 | ue_status_hi = (ue_status_hi & (~ue_status_hi_mask)); | 2003 | ue_hi = (ue_hi & (~ue_hi_mask)); |
2004 | } | ||
1994 | 2005 | ||
1995 | if (ue_status_lo || ue_status_hi) { | 2006 | if (ue_lo || ue_hi || |
2007 | sliport_status & SLIPORT_STATUS_ERR_MASK) { | ||
1996 | adapter->ue_detected = true; | 2008 | adapter->ue_detected = true; |
1997 | adapter->eeh_err = true; | 2009 | adapter->eeh_err = true; |
1998 | dev_err(&adapter->pdev->dev, "UE Detected!!\n"); | 2010 | dev_err(&adapter->pdev->dev, "UE Detected!!\n"); |
1999 | } | 2011 | } |
2000 | 2012 | ||
2001 | if (ue_status_lo) { | 2013 | if (ue_lo) { |
2002 | for (i = 0; ue_status_lo; ue_status_lo >>= 1, i++) { | 2014 | for (i = 0; ue_lo; ue_lo >>= 1, i++) { |
2003 | if (ue_status_lo & 1) | 2015 | if (ue_lo & 1) |
2004 | dev_err(&adapter->pdev->dev, | 2016 | dev_err(&adapter->pdev->dev, |
2005 | "UE: %s bit set\n", ue_status_low_desc[i]); | 2017 | "UE: %s bit set\n", ue_status_low_desc[i]); |
2006 | } | 2018 | } |
2007 | } | 2019 | } |
2008 | if (ue_status_hi) { | 2020 | if (ue_hi) { |
2009 | for (i = 0; ue_status_hi; ue_status_hi >>= 1, i++) { | 2021 | for (i = 0; ue_hi; ue_hi >>= 1, i++) { |
2010 | if (ue_status_hi & 1) | 2022 | if (ue_hi & 1) |
2011 | dev_err(&adapter->pdev->dev, | 2023 | dev_err(&adapter->pdev->dev, |
2012 | "UE: %s bit set\n", ue_status_hi_desc[i]); | 2024 | "UE: %s bit set\n", ue_status_hi_desc[i]); |
2013 | } | 2025 | } |
2014 | } | 2026 | } |
2015 | 2027 | ||
2028 | if (sliport_status & SLIPORT_STATUS_ERR_MASK) { | ||
2029 | dev_err(&adapter->pdev->dev, | ||
2030 | "sliport status 0x%x\n", sliport_status); | ||
2031 | dev_err(&adapter->pdev->dev, | ||
2032 | "sliport error1 0x%x\n", sliport_err1); | ||
2033 | dev_err(&adapter->pdev->dev, | ||
2034 | "sliport error2 0x%x\n", sliport_err2); | ||
2035 | } | ||
2016 | } | 2036 | } |
2017 | 2037 | ||
2018 | static void be_worker(struct work_struct *work) | 2038 | static void be_worker(struct work_struct *work) |
@@ -2022,7 +2042,7 @@ static void be_worker(struct work_struct *work) | |||
2022 | struct be_rx_obj *rxo; | 2042 | struct be_rx_obj *rxo; |
2023 | int i; | 2043 | int i; |
2024 | 2044 | ||
2025 | if (!adapter->ue_detected && !lancer_chip(adapter)) | 2045 | if (!adapter->ue_detected) |
2026 | be_detect_dump_ue(adapter); | 2046 | be_detect_dump_ue(adapter); |
2027 | 2047 | ||
2028 | /* when interrupts are not yet enabled, just reap any pending | 2048 | /* when interrupts are not yet enabled, just reap any pending |
diff --git a/drivers/net/ethernet/i825xx/3c505.c b/drivers/net/ethernet/i825xx/3c505.c index 40e1a175fceb..ba82a266051d 100644 --- a/drivers/net/ethernet/i825xx/3c505.c +++ b/drivers/net/ethernet/i825xx/3c505.c | |||
@@ -126,15 +126,13 @@ | |||
126 | * | 126 | * |
127 | *********************************************************/ | 127 | *********************************************************/ |
128 | 128 | ||
129 | #define filename __FILE__ | ||
130 | |||
131 | #define timeout_msg "*** timeout at %s:%s (line %d) ***\n" | 129 | #define timeout_msg "*** timeout at %s:%s (line %d) ***\n" |
132 | #define TIMEOUT_MSG(lineno) \ | 130 | #define TIMEOUT_MSG(lineno) \ |
133 | pr_notice(timeout_msg, filename, __func__, (lineno)) | 131 | pr_notice(timeout_msg, __FILE__, __func__, (lineno)) |
134 | 132 | ||
135 | #define invalid_pcb_msg "*** invalid pcb length %d at %s:%s (line %d) ***\n" | 133 | #define invalid_pcb_msg "*** invalid pcb length %d at %s:%s (line %d) ***\n" |
136 | #define INVALID_PCB_MSG(len) \ | 134 | #define INVALID_PCB_MSG(len) \ |
137 | pr_notice(invalid_pcb_msg, (len), filename, __func__, __LINE__) | 135 | pr_notice(invalid_pcb_msg, (len), __FILE__, __func__, __LINE__) |
138 | 136 | ||
139 | #define search_msg "%s: Looking for 3c505 adapter at address %#x..." | 137 | #define search_msg "%s: Looking for 3c505 adapter at address %#x..." |
140 | 138 | ||
diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c index ae17cd1a907f..5a2fdf7a00c8 100644 --- a/drivers/net/ethernet/intel/e100.c +++ b/drivers/net/ethernet/intel/e100.c | |||
@@ -2810,6 +2810,10 @@ static int __devinit e100_probe(struct pci_dev *pdev, | |||
2810 | 2810 | ||
2811 | e100_get_defaults(nic); | 2811 | e100_get_defaults(nic); |
2812 | 2812 | ||
2813 | /* D100 MAC doesn't allow rx of vlan packets with normal MTU */ | ||
2814 | if (nic->mac < mac_82558_D101_A4) | ||
2815 | netdev->features |= NETIF_F_VLAN_CHALLENGED; | ||
2816 | |||
2813 | /* locks must be initialized before calling hw_reset */ | 2817 | /* locks must be initialized before calling hw_reset */ |
2814 | spin_lock_init(&nic->cb_lock); | 2818 | spin_lock_init(&nic->cb_lock); |
2815 | spin_lock_init(&nic->cmd_lock); | 2819 | spin_lock_init(&nic->cmd_lock); |
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c index 6a17c62cb86f..e2a80a283fd3 100644 --- a/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c | |||
@@ -866,8 +866,7 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw) | |||
866 | 866 | ||
867 | if (test_and_set_bit(__E1000_ACCESS_SHARED_RESOURCE, | 867 | if (test_and_set_bit(__E1000_ACCESS_SHARED_RESOURCE, |
868 | &hw->adapter->state)) { | 868 | &hw->adapter->state)) { |
869 | WARN(1, "e1000e: %s: contention for Phy access\n", | 869 | e_dbg("contention for Phy access\n"); |
870 | hw->adapter->netdev->name); | ||
871 | return -E1000_ERR_PHY; | 870 | return -E1000_ERR_PHY; |
872 | } | 871 | } |
873 | 872 | ||
diff --git a/drivers/net/ethernet/intel/igb/e1000_phy.c b/drivers/net/ethernet/intel/igb/e1000_phy.c index 7edf31efe756..b17d7c20f817 100644 --- a/drivers/net/ethernet/intel/igb/e1000_phy.c +++ b/drivers/net/ethernet/intel/igb/e1000_phy.c | |||
@@ -1687,7 +1687,7 @@ s32 igb_get_cable_length_m88_gen2(struct e1000_hw *hw) | |||
1687 | if (ret_val) | 1687 | if (ret_val) |
1688 | goto out; | 1688 | goto out; |
1689 | 1689 | ||
1690 | is_cm = !(phy_data & I347AT4_PCDC_CABLE_LENGTH_UNIT); | 1690 | is_cm = !(phy_data2 & I347AT4_PCDC_CABLE_LENGTH_UNIT); |
1691 | 1691 | ||
1692 | /* Populate the phy structure with cable length in meters */ | 1692 | /* Populate the phy structure with cable length in meters */ |
1693 | phy->min_cable_length = phy_data / (is_cm ? 100 : 1); | 1693 | phy->min_cable_length = phy_data / (is_cm ? 100 : 1); |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c index 834f044be4c3..f1365fef4ed2 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | |||
@@ -3344,7 +3344,7 @@ static u8 ixgbe_calculate_checksum(u8 *buffer, u32 length) | |||
3344 | static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, | 3344 | static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, |
3345 | u32 length) | 3345 | u32 length) |
3346 | { | 3346 | { |
3347 | u32 hicr, i; | 3347 | u32 hicr, i, bi; |
3348 | u32 hdr_size = sizeof(struct ixgbe_hic_hdr); | 3348 | u32 hdr_size = sizeof(struct ixgbe_hic_hdr); |
3349 | u8 buf_len, dword_len; | 3349 | u8 buf_len, dword_len; |
3350 | 3350 | ||
@@ -3398,9 +3398,9 @@ static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, | |||
3398 | dword_len = hdr_size >> 2; | 3398 | dword_len = hdr_size >> 2; |
3399 | 3399 | ||
3400 | /* first pull in the header so we know the buffer length */ | 3400 | /* first pull in the header so we know the buffer length */ |
3401 | for (i = 0; i < dword_len; i++) { | 3401 | for (bi = 0; bi < dword_len; bi++) { |
3402 | buffer[i] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, i); | 3402 | buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi); |
3403 | le32_to_cpus(&buffer[i]); | 3403 | le32_to_cpus(&buffer[bi]); |
3404 | } | 3404 | } |
3405 | 3405 | ||
3406 | /* If there is any thing in data position pull it in */ | 3406 | /* If there is any thing in data position pull it in */ |
@@ -3414,12 +3414,14 @@ static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, | |||
3414 | goto out; | 3414 | goto out; |
3415 | } | 3415 | } |
3416 | 3416 | ||
3417 | /* Calculate length in DWORDs, add one for odd lengths */ | 3417 | /* Calculate length in DWORDs, add 3 for odd lengths */ |
3418 | dword_len = (buf_len + 1) >> 2; | 3418 | dword_len = (buf_len + 3) >> 2; |
3419 | 3419 | ||
3420 | /* Pull in the rest of the buffer (i is where we left off)*/ | 3420 | /* Pull in the rest of the buffer (bi is where we left off)*/ |
3421 | for (; i < buf_len; i++) | 3421 | for (; bi <= dword_len; bi++) { |
3422 | buffer[i] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, i); | 3422 | buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi); |
3423 | le32_to_cpus(&buffer[bi]); | ||
3424 | } | ||
3423 | 3425 | ||
3424 | out: | 3426 | out: |
3425 | return ret_val; | 3427 | return ret_val; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c index 3631d639d86a..33b93ffb87cb 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c | |||
@@ -561,11 +561,12 @@ static int ixgbe_dcbnl_ieee_getets(struct net_device *dev, | |||
561 | struct ixgbe_adapter *adapter = netdev_priv(dev); | 561 | struct ixgbe_adapter *adapter = netdev_priv(dev); |
562 | struct ieee_ets *my_ets = adapter->ixgbe_ieee_ets; | 562 | struct ieee_ets *my_ets = adapter->ixgbe_ieee_ets; |
563 | 563 | ||
564 | ets->ets_cap = adapter->dcb_cfg.num_tcs.pg_tcs; | ||
565 | |||
564 | /* No IEEE PFC settings available */ | 566 | /* No IEEE PFC settings available */ |
565 | if (!my_ets) | 567 | if (!my_ets) |
566 | return -EINVAL; | 568 | return 0; |
567 | 569 | ||
568 | ets->ets_cap = adapter->dcb_cfg.num_tcs.pg_tcs; | ||
569 | ets->cbs = my_ets->cbs; | 570 | ets->cbs = my_ets->cbs; |
570 | memcpy(ets->tc_tx_bw, my_ets->tc_tx_bw, sizeof(ets->tc_tx_bw)); | 571 | memcpy(ets->tc_tx_bw, my_ets->tc_tx_bw, sizeof(ets->tc_tx_bw)); |
571 | memcpy(ets->tc_rx_bw, my_ets->tc_rx_bw, sizeof(ets->tc_rx_bw)); | 572 | memcpy(ets->tc_rx_bw, my_ets->tc_rx_bw, sizeof(ets->tc_rx_bw)); |
@@ -621,11 +622,12 @@ static int ixgbe_dcbnl_ieee_getpfc(struct net_device *dev, | |||
621 | struct ieee_pfc *my_pfc = adapter->ixgbe_ieee_pfc; | 622 | struct ieee_pfc *my_pfc = adapter->ixgbe_ieee_pfc; |
622 | int i; | 623 | int i; |
623 | 624 | ||
625 | pfc->pfc_cap = adapter->dcb_cfg.num_tcs.pfc_tcs; | ||
626 | |||
624 | /* No IEEE PFC settings available */ | 627 | /* No IEEE PFC settings available */ |
625 | if (!my_pfc) | 628 | if (!my_pfc) |
626 | return -EINVAL; | 629 | return 0; |
627 | 630 | ||
628 | pfc->pfc_cap = adapter->dcb_cfg.num_tcs.pfc_tcs; | ||
629 | pfc->pfc_en = my_pfc->pfc_en; | 631 | pfc->pfc_en = my_pfc->pfc_en; |
630 | pfc->mbc = my_pfc->mbc; | 632 | pfc->mbc = my_pfc->mbc; |
631 | pfc->delay = my_pfc->delay; | 633 | pfc->delay = my_pfc->delay; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 09b8e88b2999..8ef92d1a6aa1 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -3345,34 +3345,25 @@ static void ixgbe_configure_dcb(struct ixgbe_adapter *adapter) | |||
3345 | 3345 | ||
3346 | hw->mac.ops.set_vfta(&adapter->hw, 0, 0, true); | 3346 | hw->mac.ops.set_vfta(&adapter->hw, 0, 0, true); |
3347 | 3347 | ||
3348 | /* reconfigure the hardware */ | ||
3349 | if (adapter->dcbx_cap & DCB_CAP_DCBX_VER_CEE) { | ||
3350 | #ifdef IXGBE_FCOE | 3348 | #ifdef IXGBE_FCOE |
3351 | if (adapter->netdev->features & NETIF_F_FCOE_MTU) | 3349 | if (adapter->netdev->features & NETIF_F_FCOE_MTU) |
3352 | max_frame = max(max_frame, IXGBE_FCOE_JUMBO_FRAME_SIZE); | 3350 | max_frame = max(max_frame, IXGBE_FCOE_JUMBO_FRAME_SIZE); |
3353 | #endif | 3351 | #endif |
3352 | |||
3353 | /* reconfigure the hardware */ | ||
3354 | if (adapter->dcbx_cap & DCB_CAP_DCBX_VER_CEE) { | ||
3354 | ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame, | 3355 | ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame, |
3355 | DCB_TX_CONFIG); | 3356 | DCB_TX_CONFIG); |
3356 | ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame, | 3357 | ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame, |
3357 | DCB_RX_CONFIG); | 3358 | DCB_RX_CONFIG); |
3358 | ixgbe_dcb_hw_config(hw, &adapter->dcb_cfg); | 3359 | ixgbe_dcb_hw_config(hw, &adapter->dcb_cfg); |
3359 | } else { | 3360 | } else if (adapter->ixgbe_ieee_ets && adapter->ixgbe_ieee_pfc) { |
3360 | struct net_device *dev = adapter->netdev; | 3361 | ixgbe_dcb_hw_ets(&adapter->hw, |
3361 | 3362 | adapter->ixgbe_ieee_ets, | |
3362 | if (adapter->ixgbe_ieee_ets) { | 3363 | max_frame); |
3363 | struct ieee_ets *ets = adapter->ixgbe_ieee_ets; | 3364 | ixgbe_dcb_hw_pfc_config(&adapter->hw, |
3364 | int max_frame = dev->mtu + ETH_HLEN + ETH_FCS_LEN; | 3365 | adapter->ixgbe_ieee_pfc->pfc_en, |
3365 | 3366 | adapter->ixgbe_ieee_ets->prio_tc); | |
3366 | ixgbe_dcb_hw_ets(&adapter->hw, ets, max_frame); | ||
3367 | } | ||
3368 | |||
3369 | if (adapter->ixgbe_ieee_pfc) { | ||
3370 | struct ieee_pfc *pfc = adapter->ixgbe_ieee_pfc; | ||
3371 | u8 *prio_tc = adapter->ixgbe_ieee_ets->prio_tc; | ||
3372 | |||
3373 | ixgbe_dcb_hw_pfc_config(&adapter->hw, pfc->pfc_en, | ||
3374 | prio_tc); | ||
3375 | } | ||
3376 | } | 3367 | } |
3377 | 3368 | ||
3378 | /* Enable RSS Hash per TC */ | 3369 | /* Enable RSS Hash per TC */ |
@@ -6125,7 +6116,6 @@ static void ixgbe_sfp_link_config_subtask(struct ixgbe_adapter *adapter) | |||
6125 | autoneg = hw->phy.autoneg_advertised; | 6116 | autoneg = hw->phy.autoneg_advertised; |
6126 | if ((!autoneg) && (hw->mac.ops.get_link_capabilities)) | 6117 | if ((!autoneg) && (hw->mac.ops.get_link_capabilities)) |
6127 | hw->mac.ops.get_link_capabilities(hw, &autoneg, &negotiation); | 6118 | hw->mac.ops.get_link_capabilities(hw, &autoneg, &negotiation); |
6128 | hw->mac.autotry_restart = false; | ||
6129 | if (hw->mac.ops.setup_link) | 6119 | if (hw->mac.ops.setup_link) |
6130 | hw->mac.ops.setup_link(hw, autoneg, negotiation, true); | 6120 | hw->mac.ops.setup_link(hw, autoneg, negotiation, true); |
6131 | 6121 | ||
@@ -7589,13 +7579,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, | |||
7589 | goto err_eeprom; | 7579 | goto err_eeprom; |
7590 | } | 7580 | } |
7591 | 7581 | ||
7592 | /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ | ||
7593 | if (hw->mac.ops.disable_tx_laser && | ||
7594 | ((hw->phy.multispeed_fiber) || | ||
7595 | ((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) && | ||
7596 | (hw->mac.type == ixgbe_mac_82599EB)))) | ||
7597 | hw->mac.ops.disable_tx_laser(hw); | ||
7598 | |||
7599 | setup_timer(&adapter->service_timer, &ixgbe_service_timer, | 7582 | setup_timer(&adapter->service_timer, &ixgbe_service_timer, |
7600 | (unsigned long) adapter); | 7583 | (unsigned long) adapter); |
7601 | 7584 | ||
@@ -7693,6 +7676,13 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, | |||
7693 | if (err) | 7676 | if (err) |
7694 | goto err_register; | 7677 | goto err_register; |
7695 | 7678 | ||
7679 | /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ | ||
7680 | if (hw->mac.ops.disable_tx_laser && | ||
7681 | ((hw->phy.multispeed_fiber) || | ||
7682 | ((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) && | ||
7683 | (hw->mac.type == ixgbe_mac_82599EB)))) | ||
7684 | hw->mac.ops.disable_tx_laser(hw); | ||
7685 | |||
7696 | /* carrier off reporting is important to ethtool even BEFORE open */ | 7686 | /* carrier off reporting is important to ethtool even BEFORE open */ |
7697 | netif_carrier_off(netdev); | 7687 | netif_carrier_off(netdev); |
7698 | 7688 | ||
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h index 5a7e1eb33599..4a5d8897faab 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h | |||
@@ -42,10 +42,12 @@ int ixgbe_ndo_set_vf_spoofchk(struct net_device *netdev, int vf, bool setting); | |||
42 | int ixgbe_ndo_get_vf_config(struct net_device *netdev, | 42 | int ixgbe_ndo_get_vf_config(struct net_device *netdev, |
43 | int vf, struct ifla_vf_info *ivi); | 43 | int vf, struct ifla_vf_info *ivi); |
44 | void ixgbe_check_vf_rate_limit(struct ixgbe_adapter *adapter); | 44 | void ixgbe_check_vf_rate_limit(struct ixgbe_adapter *adapter); |
45 | #ifdef CONFIG_PCI_IOV | ||
45 | void ixgbe_disable_sriov(struct ixgbe_adapter *adapter); | 46 | void ixgbe_disable_sriov(struct ixgbe_adapter *adapter); |
46 | void ixgbe_enable_sriov(struct ixgbe_adapter *adapter, | 47 | void ixgbe_enable_sriov(struct ixgbe_adapter *adapter, |
47 | const struct ixgbe_info *ii); | 48 | const struct ixgbe_info *ii); |
48 | int ixgbe_check_vf_assignment(struct ixgbe_adapter *adapter); | 49 | int ixgbe_check_vf_assignment(struct ixgbe_adapter *adapter); |
50 | #endif | ||
49 | 51 | ||
50 | 52 | ||
51 | #endif /* _IXGBE_SRIOV_H_ */ | 53 | #endif /* _IXGBE_SRIOV_H_ */ |
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index 5e92cc2079bd..4c8e19951d57 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | |||
@@ -54,7 +54,7 @@ char ixgbevf_driver_name[] = "ixgbevf"; | |||
54 | static const char ixgbevf_driver_string[] = | 54 | static const char ixgbevf_driver_string[] = |
55 | "Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver"; | 55 | "Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver"; |
56 | 56 | ||
57 | #define DRV_VERSION "2.1.0-k" | 57 | #define DRV_VERSION "2.2.0-k" |
58 | const char ixgbevf_driver_version[] = DRV_VERSION; | 58 | const char ixgbevf_driver_version[] = DRV_VERSION; |
59 | static char ixgbevf_copyright[] = | 59 | static char ixgbevf_copyright[] = |
60 | "Copyright (c) 2009 - 2010 Intel Corporation."; | 60 | "Copyright (c) 2009 - 2010 Intel Corporation."; |
diff --git a/drivers/net/ethernet/realtek/Kconfig b/drivers/net/ethernet/realtek/Kconfig index 84083ec6e612..0578859a3c73 100644 --- a/drivers/net/ethernet/realtek/Kconfig +++ b/drivers/net/ethernet/realtek/Kconfig | |||
@@ -115,16 +115,4 @@ config R8169 | |||
115 | To compile this driver as a module, choose M here: the module | 115 | To compile this driver as a module, choose M here: the module |
116 | will be called r8169. This is recommended. | 116 | will be called r8169. This is recommended. |
117 | 117 | ||
118 | config SC92031 | ||
119 | tristate "Silan SC92031 PCI Fast Ethernet Adapter driver (EXPERIMENTAL)" | ||
120 | depends on PCI && EXPERIMENTAL | ||
121 | select CRC32 | ||
122 | ---help--- | ||
123 | This is a driver for the Fast Ethernet PCI network cards based on | ||
124 | the Silan SC92031 chip (sometimes also called Rsltek 8139D). If you | ||
125 | have one of these, say Y here. | ||
126 | |||
127 | To compile this driver as a module, choose M here: the module | ||
128 | will be called sc92031. This is recommended. | ||
129 | |||
130 | endif # NET_VENDOR_REALTEK | 118 | endif # NET_VENDOR_REALTEK |
diff --git a/drivers/net/ethernet/realtek/Makefile b/drivers/net/ethernet/realtek/Makefile index e48cfb6ac42d..71b1da30ecb5 100644 --- a/drivers/net/ethernet/realtek/Makefile +++ b/drivers/net/ethernet/realtek/Makefile | |||
@@ -6,4 +6,3 @@ obj-$(CONFIG_8139CP) += 8139cp.o | |||
6 | obj-$(CONFIG_8139TOO) += 8139too.o | 6 | obj-$(CONFIG_8139TOO) += 8139too.o |
7 | obj-$(CONFIG_ATP) += atp.o | 7 | obj-$(CONFIG_ATP) += atp.o |
8 | obj-$(CONFIG_R8169) += r8169.o | 8 | obj-$(CONFIG_R8169) += r8169.o |
9 | obj-$(CONFIG_SC92031) += sc92031.o | ||
diff --git a/drivers/net/ethernet/silan/Kconfig b/drivers/net/ethernet/silan/Kconfig new file mode 100644 index 000000000000..ae1ce170864d --- /dev/null +++ b/drivers/net/ethernet/silan/Kconfig | |||
@@ -0,0 +1,33 @@ | |||
1 | # | ||
2 | # Silan device configuration | ||
3 | # | ||
4 | |||
5 | config NET_VENDOR_SILAN | ||
6 | bool "Silan devices" | ||
7 | default y | ||
8 | depends on PCI && EXPERIMENTAL | ||
9 | ---help--- | ||
10 | If you have a network (Ethernet) card belonging to this class, say Y | ||
11 | and read the Ethernet-HOWTO, available from | ||
12 | <http://www.tldp.org/docs.html#howto>. | ||
13 | |||
14 | Note that the answer to this question doesn't directly affect the | ||
15 | kernel: saying N will just cause the configurator to skip all | ||
16 | the questions about Silan devices. If you say Y, you will be asked for | ||
17 | your specific card in the following questions. | ||
18 | |||
19 | if NET_VENDOR_SILAN | ||
20 | |||
21 | config SC92031 | ||
22 | tristate "Silan SC92031 PCI Fast Ethernet Adapter driver (EXPERIMENTAL)" | ||
23 | depends on PCI && EXPERIMENTAL | ||
24 | select CRC32 | ||
25 | ---help--- | ||
26 | This is a driver for the Fast Ethernet PCI network cards based on | ||
27 | the Silan SC92031 chip (sometimes also called Rsltek 8139D). If you | ||
28 | have one of these, say Y here. | ||
29 | |||
30 | To compile this driver as a module, choose M here: the module | ||
31 | will be called sc92031. This is recommended. | ||
32 | |||
33 | endif # NET_VENDOR_SILAN | ||
diff --git a/drivers/net/ethernet/silan/Makefile b/drivers/net/ethernet/silan/Makefile new file mode 100644 index 000000000000..4ad3523dcb92 --- /dev/null +++ b/drivers/net/ethernet/silan/Makefile | |||
@@ -0,0 +1,5 @@ | |||
1 | # | ||
2 | # Makefile for the Silan network device drivers. | ||
3 | # | ||
4 | |||
5 | obj-$(CONFIG_SC92031) += sc92031.o | ||
diff --git a/drivers/net/ethernet/realtek/sc92031.c b/drivers/net/ethernet/silan/sc92031.c index a284d6440538..a284d6440538 100644 --- a/drivers/net/ethernet/realtek/sc92031.c +++ b/drivers/net/ethernet/silan/sc92031.c | |||
diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c index 4d1658e78dee..caf3659e173c 100644 --- a/drivers/net/ethernet/xilinx/ll_temac_main.c +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c | |||
@@ -716,8 +716,8 @@ static int temac_start_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
716 | cur_p = &lp->tx_bd_v[lp->tx_bd_tail]; | 716 | cur_p = &lp->tx_bd_v[lp->tx_bd_tail]; |
717 | cur_p->phys = dma_map_single(ndev->dev.parent, | 717 | cur_p->phys = dma_map_single(ndev->dev.parent, |
718 | skb_frag_address(frag), | 718 | skb_frag_address(frag), |
719 | frag_size(frag), DMA_TO_DEVICE); | 719 | skb_frag_size(frag), DMA_TO_DEVICE); |
720 | cur_p->len = frag_size(frag); | 720 | cur_p->len = skb_frag_size(frag); |
721 | cur_p->app0 = 0; | 721 | cur_p->app0 = 0; |
722 | frag++; | 722 | frag++; |
723 | } | 723 | } |