* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-11-13 14:03 Jeff Kirsher
2012-11-13 14:03 ` [net-next 01/11] ixgbe: Do not use DCA to prefetch the entire packet into the cache Jeff Kirsher
` (11 more replies)
0 siblings, 12 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to ixgbe, ixgbevf and igb.
The following are changes since commit 9fafd65ad407d4e0c96919a325f568dd95d032af:
ipv6 ndisc: Use pre-defined in6addr_linklocal_allnodes.
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Akeem G. Abodunrin (2):
igb: Support for modifying UDP RSS flow hashing
igb: Ethtool support to enable and disable EEE
Alexander Duyck (4):
ixgbe: Do not use DCA to prefetch the entire packet into the cache
igb: Make TSO check for CHECKSUM_PARTIAL to avoid skb_is_gso check
igb: Update igb Tx flags to improve code efficiency
igb: Improve performance and reduce size of igb_tx_map
Carolyn Wyborny (1):
igb: Clear Go Link Disconnect for 82580 and later devices
Emil Tantilov (1):
ixgbevf: fix possible use of uninitialized variable
Greg Rose (2):
ixgbevf: Add flag to indicate when rx is in net poll
ixgbevf: Reduce size of maximum rx buffer
Jakub Kicinski (1):
ixgbevf: make sure probe fails on MSI-X enable error
drivers/net/ethernet/intel/igb/e1000_82575.c | 8 +
drivers/net/ethernet/intel/igb/e1000_defines.h | 1 +
drivers/net/ethernet/intel/igb/e1000_phy.h | 1 +
drivers/net/ethernet/intel/igb/igb.h | 31 ++-
drivers/net/ethernet/intel/igb/igb_ethtool.c | 281 ++++++++++++++++++++++
drivers/net/ethernet/intel/igb/igb_main.c | 124 +++++-----
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 1 -
drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 9 +-
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 54 +++--
9 files changed, 412 insertions(+), 98 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 01/11] ixgbe: Do not use DCA to prefetch the entire packet into the cache
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:13 ` Eric Dumazet
2012-11-13 14:03 ` [net-next 02/11] ixgbevf: make sure probe fails on MSI-X enable error Jeff Kirsher
` (10 subsequent siblings)
11 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Alexander Duyck, netdev, gospo, sassmann, Jeff Kirsher
From: Alexander Duyck <alexander.h.duyck@intel.com>
The way the code was previously written it was causing DCA to prefetch the
entire packet into the cache when it was enabled. That is excessive as we
only really need the headers.
We are now prefetching the headers via software so doing this from DCA would
be redundant anyway. So clear the bit that was causing us to prefetch the
packet data and instead only use DCA for the descriptor rings.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 690535a..38fc186 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1015,7 +1015,6 @@ static void ixgbe_update_rx_dca(struct ixgbe_adapter *adapter,
* which will cause the DCA tag to be cleared.
*/
rxctrl |= IXGBE_DCA_RXCTRL_DESC_RRO_EN |
- IXGBE_DCA_RXCTRL_DATA_DCA_EN |
IXGBE_DCA_RXCTRL_DESC_DCA_EN;
IXGBE_WRITE_REG(hw, IXGBE_DCA_RXCTRL(reg_idx), rxctrl);
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* Re: [net-next 01/11] ixgbe: Do not use DCA to prefetch the entire packet into the cache
2012-11-13 14:03 ` [net-next 01/11] ixgbe: Do not use DCA to prefetch the entire packet into the cache Jeff Kirsher
@ 2012-11-13 14:13 ` Eric Dumazet
2012-11-13 17:41 ` Alexander Duyck
0 siblings, 1 reply; 37+ messages in thread
From: Eric Dumazet @ 2012-11-13 14:13 UTC (permalink / raw)
To: Jeff Kirsher; +Cc: davem, Alexander Duyck, netdev, gospo, sassmann
On Tue, 2012-11-13 at 06:03 -0800, Jeff Kirsher wrote:
> From: Alexander Duyck <alexander.h.duyck@intel.com>
>
> The way the code was previously written it was causing DCA to prefetch the
> entire packet into the cache when it was enabled. That is excessive as we
> only really need the headers.
>
> We are now prefetching the headers via software so doing this from DCA would
> be redundant anyway. So clear the bit that was causing us to prefetch the
> packet data and instead only use DCA for the descriptor rings.
>
> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
Excellent !
My own ixgbe cards are moving so I cant test this, do you guys have some
numbers to share ?
Thanks
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [net-next 01/11] ixgbe: Do not use DCA to prefetch the entire packet into the cache
2012-11-13 14:13 ` Eric Dumazet
@ 2012-11-13 17:41 ` Alexander Duyck
0 siblings, 0 replies; 37+ messages in thread
From: Alexander Duyck @ 2012-11-13 17:41 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Jeff Kirsher, davem, netdev, gospo, sassmann
On 11/13/2012 06:13 AM, Eric Dumazet wrote:
> On Tue, 2012-11-13 at 06:03 -0800, Jeff Kirsher wrote:
>> From: Alexander Duyck <alexander.h.duyck@intel.com>
>>
>> The way the code was previously written it was causing DCA to prefetch the
>> entire packet into the cache when it was enabled. That is excessive as we
>> only really need the headers.
>>
>> We are now prefetching the headers via software so doing this from DCA would
>> be redundant anyway. So clear the bit that was causing us to prefetch the
>> packet data and instead only use DCA for the descriptor rings.
>>
>> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
>> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
>> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>> ---
> Excellent !
>
> My own ixgbe cards are moving so I cant test this, do you guys have some
> numbers to share ?
>
> Thanks
In my tests I saw no real change because of the DCA changes. I kind of
suspected that would be the case as mentioned in the patch the prefetch
and DCA were both doing the same thing so by dropping the extra DCA
prefetch I am just polluting the case less.
I have a similar set of changes for the ixgbe transmit path that are
similar to the changes I made to igb in this patch set. Those are a bit
more interesting as they actually decreased the ixgbe_xmit_frame_ring
function overhead for some of my tests by something like 15%.
Thanks,
Alex
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 02/11] ixgbevf: make sure probe fails on MSI-X enable error
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2012-11-13 14:03 ` [net-next 01/11] ixgbe: Do not use DCA to prefetch the entire packet into the cache Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:03 ` [net-next 03/11] ixgbevf: fix possible use of uninitialized variable Jeff Kirsher
` (9 subsequent siblings)
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Jakub Kicinski, netdev, gospo, sassmann, Jeff Kirsher
From: Jakub Kicinski <jakub.kicinski@intel.com>
This driver cannot work without MSI-X interrupts
so there is no mechanism to fall back to.
Signed-off-by: Jakub Kicinski <jakub.kicinski@intel.com>
Acked-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 26 +++++++++++------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index f3d3947..a8fbe6c 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -1721,8 +1721,8 @@ void ixgbevf_reset(struct ixgbevf_adapter *adapter)
}
}
-static void ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
- int vectors)
+static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
+ int vectors)
{
int err, vector_threshold;
@@ -1740,21 +1740,18 @@ static void ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
while (vectors >= vector_threshold) {
err = pci_enable_msix(adapter->pdev, adapter->msix_entries,
vectors);
- if (!err) /* Success in acquiring all requested vectors. */
+ if (!err || err < 0) /* Success or a nasty failure. */
break;
- else if (err < 0)
- vectors = 0; /* Nasty failure, quit now */
else /* err == number of vectors we should try again with */
vectors = err;
}
- if (vectors < vector_threshold) {
- /* Can't allocate enough MSI-X interrupts? Oh well.
- * This just means we'll go with either a single MSI
- * vector or fall back to legacy interrupts.
- */
- hw_dbg(&adapter->hw,
- "Unable to allocate MSI-X interrupts\n");
+ if (vectors < vector_threshold)
+ err = -ENOMEM;
+
+ if (err) {
+ dev_err(&adapter->pdev->dev,
+ "Unable to allocate MSI-X interrupts\n");
kfree(adapter->msix_entries);
adapter->msix_entries = NULL;
} else {
@@ -1765,6 +1762,7 @@ static void ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
*/
adapter->num_msix_vectors = vectors;
}
+ return err;
}
/**
@@ -1868,7 +1866,9 @@ static int ixgbevf_set_interrupt_capability(struct ixgbevf_adapter *adapter)
for (vector = 0; vector < v_budget; vector++)
adapter->msix_entries[vector].entry = vector;
- ixgbevf_acquire_msix_vectors(adapter, v_budget);
+ err = ixgbevf_acquire_msix_vectors(adapter, v_budget);
+ if (err)
+ goto out;
err = netif_set_real_num_tx_queues(netdev, adapter->num_tx_queues);
if (err)
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [net-next 03/11] ixgbevf: fix possible use of uninitialized variable
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2012-11-13 14:03 ` [net-next 01/11] ixgbe: Do not use DCA to prefetch the entire packet into the cache Jeff Kirsher
2012-11-13 14:03 ` [net-next 02/11] ixgbevf: make sure probe fails on MSI-X enable error Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:03 ` [net-next 04/11] ixgbevf: Add flag to indicate when rx is in net poll Jeff Kirsher
` (8 subsequent siblings)
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Emil Tantilov, netdev, gospo, sassmann, Jeff Kirsher
From: Emil Tantilov <emil.s.tantilov@intel.com>
This patch resolves the following warning:
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c: In function ‘ixgbevf_probe’:
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:1742:290: warning: ‘err’ may be used uninitialized in this function [-Wuninitialized]
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:1717:6: note: ‘err’ was declared here
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index a8fbe6c..ee5ff0e 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -1724,7 +1724,8 @@ void ixgbevf_reset(struct ixgbevf_adapter *adapter)
static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
int vectors)
{
- int err, vector_threshold;
+ int err = 0;
+ int vector_threshold;
/* We'll want at least 2 (vector_threshold):
* 1) TxQ[0] + RxQ[0] handler
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [net-next 04/11] ixgbevf: Add flag to indicate when rx is in net poll
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (2 preceding siblings ...)
2012-11-13 14:03 ` [net-next 03/11] ixgbevf: fix possible use of uninitialized variable Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 19:20 ` David Miller
2012-11-13 14:03 ` [net-next 05/11] ixgbevf: Reduce size of maximum rx buffer Jeff Kirsher
` (7 subsequent siblings)
11 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Greg Rose, netdev, gospo, sassmann, Jeff Kirsher
From: Greg Rose <gregory.v.rose@intel.com>
napi_gro_receive shouldn't be called from netpoll context. Doing
so was causing kernel panics when jumbo frames larger than 2K were set.
Add a flag to check if the Rx ring processing is occurring from interrupt
context or from netpoll context and call netif_rx() if in the polling
context.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 1 +
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
index 2323ccd..9faaf54 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
@@ -229,6 +229,7 @@ struct ixgbevf_adapter {
*/
u32 flags;
#define IXGBE_FLAG_IN_WATCHDOG_TASK (u32)(1)
+#define IXGBE_FLAG_IN_NETPOLL (u32)(1 << 1)
/* OS defined structs */
struct net_device *netdev;
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index ee5ff0e..00f9698 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -288,7 +288,10 @@ static void ixgbevf_receive_skb(struct ixgbevf_q_vector *q_vector,
if (is_vlan && test_bit(tag & VLAN_VID_MASK, adapter->active_vlans))
__vlan_hwaccel_put_tag(skb, tag);
- napi_gro_receive(&q_vector->napi, skb);
+ if (!(adapter->flags & IXGBE_FLAG_IN_NETPOLL))
+ napi_gro_receive(&q_vector->napi, skb);
+ else
+ netif_rx(skb);
}
/**
@@ -550,9 +553,11 @@ static int ixgbevf_poll(struct napi_struct *napi, int budget)
else
per_ring_budget = budget;
+ adapter->flags |= IXGBE_FLAG_IN_NETPOLL;
ixgbevf_for_each_ring(ring, q_vector->rx)
clean_complete &= ixgbevf_clean_rx_irq(q_vector, ring,
per_ring_budget);
+ adapter->flags &= ~IXGBE_FLAG_IN_NETPOLL;
/* If all work not completed, return budget and keep polling */
if (!clean_complete)
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* Re: [net-next 04/11] ixgbevf: Add flag to indicate when rx is in net poll
2012-11-13 14:03 ` [net-next 04/11] ixgbevf: Add flag to indicate when rx is in net poll Jeff Kirsher
@ 2012-11-13 19:20 ` David Miller
2012-11-13 19:25 ` Greg Rose
0 siblings, 1 reply; 37+ messages in thread
From: David Miller @ 2012-11-13 19:20 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: gregory.v.rose, netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Tue, 13 Nov 2012 06:03:18 -0800
> From: Greg Rose <gregory.v.rose@intel.com>
>
> napi_gro_receive shouldn't be called from netpoll context. Doing
> so was causing kernel panics when jumbo frames larger than 2K were set.
> Add a flag to check if the Rx ring processing is occurring from interrupt
> context or from netpoll context and call netif_rx() if in the polling
> context.
>
> Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
> Tested-by: Sibai Li <sibai.li@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This is not a scalable solution.
It is not prudent to have every single driver do a check like
this. If using GRO receive from netpoll causes problems,
then it's a generic issue rather than a driver specific one.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [net-next 04/11] ixgbevf: Add flag to indicate when rx is in net poll
2012-11-13 19:20 ` David Miller
@ 2012-11-13 19:25 ` Greg Rose
0 siblings, 0 replies; 37+ messages in thread
From: Greg Rose @ 2012-11-13 19:25 UTC (permalink / raw)
To: David Miller; +Cc: jeffrey.t.kirsher, netdev, gospo, sassmann
On Tue, 13 Nov 2012 14:20:05 -0500
David Miller <davem@davemloft.net> wrote:
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Date: Tue, 13 Nov 2012 06:03:18 -0800
>
> > From: Greg Rose <gregory.v.rose@intel.com>
> >
> > napi_gro_receive shouldn't be called from netpoll context. Doing
> > so was causing kernel panics when jumbo frames larger than 2K were
> > set. Add a flag to check if the Rx ring processing is occurring
> > from interrupt context or from netpoll context and call netif_rx()
> > if in the polling context.
> >
> > Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
> > Tested-by: Sibai Li <sibai.li@intel.com>
> > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>
> This is not a scalable solution.
>
> It is not prudent to have every single driver do a check like
> this. If using GRO receive from netpoll causes problems,
> then it's a generic issue rather than a driver specific one.
OK, let me look into this a bit more then.
Thanks,
- Greg
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 05/11] ixgbevf: Reduce size of maximum rx buffer
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (3 preceding siblings ...)
2012-11-13 14:03 ` [net-next 04/11] ixgbevf: Add flag to indicate when rx is in net poll Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:03 ` [net-next 06/11] igb: Clear Go Link Disconnect for 82580 and later devices Jeff Kirsher
` (6 subsequent siblings)
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Greg Rose, netdev, gospo, sassmann, Jeff Kirsher
From: Greg Rose <gregory.v.rose@intel.com>
There's no need to support up to 15k buffers since the HW is limited to
9.5k in SR-IOV mode. Instead, allocate buffers that fit and align inside
of a 32K memory buffer.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 8 ++++----
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 18 +++++++++---------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
index 9faaf54..1211fa0 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
@@ -101,10 +101,10 @@ struct ixgbevf_ring {
/* Supported Rx Buffer Sizes */
#define IXGBEVF_RXBUFFER_256 256 /* Used for packet split */
-#define IXGBEVF_RXBUFFER_3K 3072
-#define IXGBEVF_RXBUFFER_7K 7168
-#define IXGBEVF_RXBUFFER_15K 15360
-#define IXGBEVF_MAX_RXBUFFER 16384 /* largest size for single descriptor */
+#define IXGBEVF_RXBUFFER_2K 2048
+#define IXGBEVF_RXBUFFER_4K 4096
+#define IXGBEVF_RXBUFFER_8K 8192
+#define IXGBEVF_RXBUFFER_10K 10240
#define IXGBEVF_RX_HDR_SIZE IXGBEVF_RXBUFFER_256
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 00f9698..9d88153 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -1087,20 +1087,20 @@ static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter)
max_frame += VLAN_HLEN;
/*
- * Make best use of allocation by using all but 1K of a
- * power of 2 allocation that will be used for skb->head.
+ * Allocate buffer sizes that fit well into 32K and
+ * take into account max frame size of 9.5K
*/
if ((hw->mac.type == ixgbe_mac_X540_vf) &&
(max_frame <= MAXIMUM_ETHERNET_VLAN_SIZE))
rx_buf_len = MAXIMUM_ETHERNET_VLAN_SIZE;
- else if (max_frame <= IXGBEVF_RXBUFFER_3K)
- rx_buf_len = IXGBEVF_RXBUFFER_3K;
- else if (max_frame <= IXGBEVF_RXBUFFER_7K)
- rx_buf_len = IXGBEVF_RXBUFFER_7K;
- else if (max_frame <= IXGBEVF_RXBUFFER_15K)
- rx_buf_len = IXGBEVF_RXBUFFER_15K;
+ else if (max_frame <= IXGBEVF_RXBUFFER_2K)
+ rx_buf_len = IXGBEVF_RXBUFFER_2K;
+ else if (max_frame <= IXGBEVF_RXBUFFER_4K)
+ rx_buf_len = IXGBEVF_RXBUFFER_4K;
+ else if (max_frame <= IXGBEVF_RXBUFFER_8K)
+ rx_buf_len = IXGBEVF_RXBUFFER_8K;
else
- rx_buf_len = IXGBEVF_MAX_RXBUFFER;
+ rx_buf_len = IXGBEVF_RXBUFFER_10K;
for (i = 0; i < adapter->num_rx_queues; i++)
adapter->rx_ring[i].rx_buf_len = rx_buf_len;
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [net-next 06/11] igb: Clear Go Link Disconnect for 82580 and later devices
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (4 preceding siblings ...)
2012-11-13 14:03 ` [net-next 05/11] ixgbevf: Reduce size of maximum rx buffer Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:03 ` [net-next 07/11] igb: Support for modifying UDP RSS flow hashing Jeff Kirsher
` (5 subsequent siblings)
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Carolyn Wyborny, netdev, gospo, sassmann, Jeff Kirsher
From: Carolyn Wyborny <carolyn.wyborny@intel.com>
Customers are requesting that the hw prevents PHY from establishing link
until the driver loads. This patch clears the Go Link Disconnect bit which
provides the requested behavior on parts 82580 and later.
Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/e1000_82575.c | 8 ++++++++
drivers/net/ethernet/intel/igb/e1000_phy.h | 1 +
2 files changed, 9 insertions(+)
diff --git a/drivers/net/ethernet/intel/igb/e1000_82575.c b/drivers/net/ethernet/intel/igb/e1000_82575.c
index deb0597..8c12dbd 100644
--- a/drivers/net/ethernet/intel/igb/e1000_82575.c
+++ b/drivers/net/ethernet/intel/igb/e1000_82575.c
@@ -1278,12 +1278,20 @@ static s32 igb_setup_copper_link_82575(struct e1000_hw *hw)
{
u32 ctrl;
s32 ret_val;
+ u32 phpm_reg;
ctrl = rd32(E1000_CTRL);
ctrl |= E1000_CTRL_SLU;
ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX);
wr32(E1000_CTRL, ctrl);
+ /* Clear Go Link Disconnect bit */
+ if (hw->mac.type >= e1000_82580) {
+ phpm_reg = rd32(E1000_82580_PHY_POWER_MGMT);
+ phpm_reg &= ~E1000_82580_PM_GO_LINKD;
+ wr32(E1000_82580_PHY_POWER_MGMT, phpm_reg);
+ }
+
ret_val = igb_setup_serdes_link_82575(hw);
if (ret_val)
goto out;
diff --git a/drivers/net/ethernet/intel/igb/e1000_phy.h b/drivers/net/ethernet/intel/igb/e1000_phy.h
index 6ac3299..ed282f8 100644
--- a/drivers/net/ethernet/intel/igb/e1000_phy.h
+++ b/drivers/net/ethernet/intel/igb/e1000_phy.h
@@ -124,6 +124,7 @@ s32 igb_check_polarity_m88(struct e1000_hw *hw);
#define E1000_82580_PM_SPD 0x0001 /* Smart Power Down */
#define E1000_82580_PM_D0_LPLU 0x0002 /* For D0a states */
#define E1000_82580_PM_D3_LPLU 0x0004 /* For all other states */
+#define E1000_82580_PM_GO_LINKD 0x0020 /* Go Link Disconnect */
/* Enable flexible speed on link-up */
#define IGP02E1000_PM_D0_LPLU 0x0002 /* For D0a states */
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [net-next 07/11] igb: Support for modifying UDP RSS flow hashing
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (5 preceding siblings ...)
2012-11-13 14:03 ` [net-next 06/11] igb: Clear Go Link Disconnect for 82580 and later devices Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:03 ` [net-next 08/11] igb: Make TSO check for CHECKSUM_PARTIAL to avoid skb_is_gso check Jeff Kirsher
` (4 subsequent siblings)
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Akeem G. Abodunrin, netdev, gospo, sassmann, Jeff Kirsher
From: "Akeem G. Abodunrin" <akeem.g.abodunrin@intel.com>
This patch provides ability to enable or disable UDP RSS hashing. It gives
users option of generating RSS hash based on the UDP source and destination
ports numbers. Currently, UDP flow hash is always disabled in igb-driver.
Signed-off-by: Akeem G Abodunrin <akeem.g.abodunrin@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/igb.h | 14 ++-
drivers/net/ethernet/intel/igb/igb_ethtool.c | 181 +++++++++++++++++++++++++++
drivers/net/ethernet/intel/igb/igb_main.c | 13 +-
3 files changed, 197 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h
index 796db53..b23a667 100644
--- a/drivers/net/ethernet/intel/igb/igb.h
+++ b/drivers/net/ethernet/intel/igb/igb.h
@@ -386,12 +386,14 @@ struct igb_adapter {
char fw_version[32];
};
-#define IGB_FLAG_HAS_MSI (1 << 0)
-#define IGB_FLAG_DCA_ENABLED (1 << 1)
-#define IGB_FLAG_QUAD_PORT_A (1 << 2)
-#define IGB_FLAG_QUEUE_PAIRS (1 << 3)
-#define IGB_FLAG_DMAC (1 << 4)
-#define IGB_FLAG_PTP (1 << 5)
+#define IGB_FLAG_HAS_MSI (1 << 0)
+#define IGB_FLAG_DCA_ENABLED (1 << 1)
+#define IGB_FLAG_QUAD_PORT_A (1 << 2)
+#define IGB_FLAG_QUEUE_PAIRS (1 << 3)
+#define IGB_FLAG_DMAC (1 << 4)
+#define IGB_FLAG_PTP (1 << 5)
+#define IGB_FLAG_RSS_FIELD_IPV4_UDP (1 << 6)
+#define IGB_FLAG_RSS_FIELD_IPV6_UDP (1 << 7)
/* DMA Coalescing defines */
#define IGB_MIN_TXPBSIZE 20408
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index d8b1bee..2b82a53 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -2350,6 +2350,185 @@ static int igb_get_ts_info(struct net_device *dev,
}
}
+static int igb_get_rss_hash_opts(struct igb_adapter *adapter,
+ struct ethtool_rxnfc *cmd)
+{
+ cmd->data = 0;
+
+ /* Report default options for RSS on igb */
+ switch (cmd->flow_type) {
+ case TCP_V4_FLOW:
+ cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+ case UDP_V4_FLOW:
+ if (adapter->flags & IGB_FLAG_RSS_FIELD_IPV4_UDP)
+ cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+ case SCTP_V4_FLOW:
+ case AH_ESP_V4_FLOW:
+ case AH_V4_FLOW:
+ case ESP_V4_FLOW:
+ case IPV4_FLOW:
+ cmd->data |= RXH_IP_SRC | RXH_IP_DST;
+ break;
+ case TCP_V6_FLOW:
+ cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+ case UDP_V6_FLOW:
+ if (adapter->flags & IGB_FLAG_RSS_FIELD_IPV6_UDP)
+ cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+ case SCTP_V6_FLOW:
+ case AH_ESP_V6_FLOW:
+ case AH_V6_FLOW:
+ case ESP_V6_FLOW:
+ case IPV6_FLOW:
+ cmd->data |= RXH_IP_SRC | RXH_IP_DST;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int igb_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
+ u32 *rule_locs)
+{
+ struct igb_adapter *adapter = netdev_priv(dev);
+ int ret = -EOPNOTSUPP;
+
+ switch (cmd->cmd) {
+ case ETHTOOL_GRXRINGS:
+ cmd->data = adapter->num_rx_queues;
+ ret = 0;
+ break;
+ case ETHTOOL_GRXFH:
+ ret = igb_get_rss_hash_opts(adapter, cmd);
+ break;
+ default:
+ break;
+ }
+
+ return ret;
+}
+
+#define UDP_RSS_FLAGS (IGB_FLAG_RSS_FIELD_IPV4_UDP | \
+ IGB_FLAG_RSS_FIELD_IPV6_UDP)
+static int igb_set_rss_hash_opt(struct igb_adapter *adapter,
+ struct ethtool_rxnfc *nfc)
+{
+ u32 flags = adapter->flags;
+
+ /* RSS does not support anything other than hashing
+ * to queues on src and dst IPs and ports
+ */
+ if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST |
+ RXH_L4_B_0_1 | RXH_L4_B_2_3))
+ return -EINVAL;
+
+ switch (nfc->flow_type) {
+ case TCP_V4_FLOW:
+ case TCP_V6_FLOW:
+ if (!(nfc->data & RXH_IP_SRC) ||
+ !(nfc->data & RXH_IP_DST) ||
+ !(nfc->data & RXH_L4_B_0_1) ||
+ !(nfc->data & RXH_L4_B_2_3))
+ return -EINVAL;
+ break;
+ case UDP_V4_FLOW:
+ if (!(nfc->data & RXH_IP_SRC) ||
+ !(nfc->data & RXH_IP_DST))
+ return -EINVAL;
+ switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
+ case 0:
+ flags &= ~IGB_FLAG_RSS_FIELD_IPV4_UDP;
+ break;
+ case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
+ flags |= IGB_FLAG_RSS_FIELD_IPV4_UDP;
+ break;
+ default:
+ return -EINVAL;
+ }
+ break;
+ case UDP_V6_FLOW:
+ if (!(nfc->data & RXH_IP_SRC) ||
+ !(nfc->data & RXH_IP_DST))
+ return -EINVAL;
+ switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
+ case 0:
+ flags &= ~IGB_FLAG_RSS_FIELD_IPV6_UDP;
+ break;
+ case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
+ flags |= IGB_FLAG_RSS_FIELD_IPV6_UDP;
+ break;
+ default:
+ return -EINVAL;
+ }
+ break;
+ case AH_ESP_V4_FLOW:
+ case AH_V4_FLOW:
+ case ESP_V4_FLOW:
+ case SCTP_V4_FLOW:
+ case AH_ESP_V6_FLOW:
+ case AH_V6_FLOW:
+ case ESP_V6_FLOW:
+ case SCTP_V6_FLOW:
+ if (!(nfc->data & RXH_IP_SRC) ||
+ !(nfc->data & RXH_IP_DST) ||
+ (nfc->data & RXH_L4_B_0_1) ||
+ (nfc->data & RXH_L4_B_2_3))
+ return -EINVAL;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ /* if we changed something we need to update flags */
+ if (flags != adapter->flags) {
+ struct e1000_hw *hw = &adapter->hw;
+ u32 mrqc = rd32(E1000_MRQC);
+
+ if ((flags & UDP_RSS_FLAGS) &&
+ !(adapter->flags & UDP_RSS_FLAGS))
+ dev_err(&adapter->pdev->dev,
+ "enabling UDP RSS: fragmented packets may arrive out of order to the stack above\n");
+
+ adapter->flags = flags;
+
+ /* Perform hash on these packet types */
+ mrqc |= E1000_MRQC_RSS_FIELD_IPV4 |
+ E1000_MRQC_RSS_FIELD_IPV4_TCP |
+ E1000_MRQC_RSS_FIELD_IPV6 |
+ E1000_MRQC_RSS_FIELD_IPV6_TCP;
+
+ mrqc &= ~(E1000_MRQC_RSS_FIELD_IPV4_UDP |
+ E1000_MRQC_RSS_FIELD_IPV6_UDP);
+
+ if (flags & IGB_FLAG_RSS_FIELD_IPV4_UDP)
+ mrqc |= E1000_MRQC_RSS_FIELD_IPV4_UDP;
+
+ if (flags & IGB_FLAG_RSS_FIELD_IPV6_UDP)
+ mrqc |= E1000_MRQC_RSS_FIELD_IPV6_UDP;
+
+ wr32(E1000_MRQC, mrqc);
+ }
+
+ return 0;
+}
+
+static int igb_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
+{
+ struct igb_adapter *adapter = netdev_priv(dev);
+ int ret = -EOPNOTSUPP;
+
+ switch (cmd->cmd) {
+ case ETHTOOL_SRXFH:
+ ret = igb_set_rss_hash_opt(adapter, cmd);
+ break;
+ default:
+ break;
+ }
+
+ return ret;
+}
+
static int igb_ethtool_begin(struct net_device *netdev)
{
struct igb_adapter *adapter = netdev_priv(netdev);
@@ -2390,6 +2569,8 @@ static const struct ethtool_ops igb_ethtool_ops = {
.get_coalesce = igb_get_coalesce,
.set_coalesce = igb_set_coalesce,
.get_ts_info = igb_get_ts_info,
+ .get_rxnfc = igb_get_rxnfc,
+ .set_rxnfc = igb_set_rxnfc,
.begin = igb_ethtool_begin,
.complete = igb_ethtool_complete,
};
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 082ce73..da9fd7b 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -2874,18 +2874,21 @@ static void igb_setup_mrqc(struct igb_adapter *adapter)
/* Don't need to set TUOFL or IPOFL, they default to 1 */
wr32(E1000_RXCSUM, rxcsum);
- /*
- * Generate RSS hash based on TCP port numbers and/or
- * IPv4/v6 src and dst addresses since UDP cannot be
- * hashed reliably due to IP fragmentation
- */
+ /* Generate RSS hash based on packet types, TCP/UDP
+ * port numbers and/or IPv4/v6 src and dst addresses
+ */
mrqc = E1000_MRQC_RSS_FIELD_IPV4 |
E1000_MRQC_RSS_FIELD_IPV4_TCP |
E1000_MRQC_RSS_FIELD_IPV6 |
E1000_MRQC_RSS_FIELD_IPV6_TCP |
E1000_MRQC_RSS_FIELD_IPV6_TCP_EX;
+ if (adapter->flags & IGB_FLAG_RSS_FIELD_IPV4_UDP)
+ mrqc |= E1000_MRQC_RSS_FIELD_IPV4_UDP;
+ if (adapter->flags & IGB_FLAG_RSS_FIELD_IPV6_UDP)
+ mrqc |= E1000_MRQC_RSS_FIELD_IPV6_UDP;
+
/* If VMDq is enabled then we set the appropriate mode for that, else
* we default to RSS so that an RSS hash is calculated per packet even
* if we are only using one queue */
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [net-next 08/11] igb: Make TSO check for CHECKSUM_PARTIAL to avoid skb_is_gso check
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (6 preceding siblings ...)
2012-11-13 14:03 ` [net-next 07/11] igb: Support for modifying UDP RSS flow hashing Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:03 ` [net-next 09/11] igb: Update igb Tx flags to improve code efficiency Jeff Kirsher
` (3 subsequent siblings)
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Alexander Duyck, netdev, gospo, sassmann, Jeff Kirsher
From: Alexander Duyck <alexander.h.duyck@intel.com>
This change is meant to reduce the overhead for workloads that are not
using either TSO or checksum offloads. Most of the time the compiler
should jump ahead after failing this check to the VLAN check since in the
igb_tx_csum call we start with that check as well.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/igb_main.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index da9fd7b..b0730e9 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -3998,6 +3998,9 @@ static int igb_tso(struct igb_ring *tx_ring,
u32 vlan_macip_lens, type_tucmd;
u32 mss_l4len_idx, l4len;
+ if (skb->ip_summed != CHECKSUM_PARTIAL)
+ return 0;
+
if (!skb_is_gso(skb))
return 0;
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [net-next 09/11] igb: Update igb Tx flags to improve code efficiency
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (7 preceding siblings ...)
2012-11-13 14:03 ` [net-next 08/11] igb: Make TSO check for CHECKSUM_PARTIAL to avoid skb_is_gso check Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:03 ` [net-next 10/11] igb: Improve performance and reduce size of igb_tx_map Jeff Kirsher
` (2 subsequent siblings)
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Alexander Duyck, netdev, gospo, sassmann, Jeff Kirsher
From: Alexander Duyck <alexander.h.duyck@intel.com>
This change is meant to improve the efficiency of the Tx flags in igb by
aligning them with the values that will later be written into either the
cmd_type or olinfo. By doing this we are able to reduce most of these
functions to either just a simple shift followed by an or in the case of
cmd_type, or an and followed by an or in the case of olinfo.
In order to avoid type conversion errors I also adjusted the locations
where we were switching between CPU and little endian.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/igb.h | 17 ++++++---
drivers/net/ethernet/intel/igb/igb_main.c | 61 +++++++++++++++++--------------
2 files changed, 45 insertions(+), 33 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h
index b23a667..d8fd5b6 100644
--- a/drivers/net/ethernet/intel/igb/igb.h
+++ b/drivers/net/ethernet/intel/igb/igb.h
@@ -150,11 +150,18 @@ struct vf_data_storage {
#define IGB_MNG_VLAN_NONE -1
-#define IGB_TX_FLAGS_CSUM 0x00000001
-#define IGB_TX_FLAGS_VLAN 0x00000002
-#define IGB_TX_FLAGS_TSO 0x00000004
-#define IGB_TX_FLAGS_IPV4 0x00000008
-#define IGB_TX_FLAGS_TSTAMP 0x00000010
+enum igb_tx_flags {
+ /* cmd_type flags */
+ IGB_TX_FLAGS_VLAN = 0x01,
+ IGB_TX_FLAGS_TSO = 0x02,
+ IGB_TX_FLAGS_TSTAMP = 0x04,
+
+ /* olinfo flags */
+ IGB_TX_FLAGS_IPV4 = 0x10,
+ IGB_TX_FLAGS_CSUM = 0x20,
+};
+
+/* VLAN info */
#define IGB_TX_FLAGS_VLAN_MASK 0xffff0000
#define IGB_TX_FLAGS_VLAN_SHIFT 16
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index b0730e9..0a0bd81 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -4121,24 +4121,32 @@ static void igb_tx_csum(struct igb_ring *tx_ring, struct igb_tx_buffer *first)
igb_tx_ctxtdesc(tx_ring, vlan_macip_lens, type_tucmd, mss_l4len_idx);
}
-static __le32 igb_tx_cmd_type(u32 tx_flags)
+#define IGB_SET_FLAG(_input, _flag, _result) \
+ ((_flag <= _result) ? \
+ ((u32)(_input & _flag) * (_result / _flag)) : \
+ ((u32)(_input & _flag) / (_flag / _result)))
+
+static u32 igb_tx_cmd_type(struct sk_buff *skb, u32 tx_flags)
{
/* set type for advanced descriptor with frame checksum insertion */
- __le32 cmd_type = cpu_to_le32(E1000_ADVTXD_DTYP_DATA |
- E1000_ADVTXD_DCMD_IFCS |
- E1000_ADVTXD_DCMD_DEXT);
+ u32 cmd_type = E1000_ADVTXD_DTYP_DATA |
+ E1000_ADVTXD_DCMD_DEXT |
+ E1000_ADVTXD_DCMD_IFCS;
/* set HW vlan bit if vlan is present */
- if (tx_flags & IGB_TX_FLAGS_VLAN)
- cmd_type |= cpu_to_le32(E1000_ADVTXD_DCMD_VLE);
+ cmd_type |= IGB_SET_FLAG(tx_flags, IGB_TX_FLAGS_VLAN,
+ (E1000_ADVTXD_DCMD_VLE));
+
+ /* set segmentation bits for TSO */
+ cmd_type |= IGB_SET_FLAG(tx_flags, IGB_TX_FLAGS_TSO,
+ (E1000_ADVTXD_DCMD_TSE));
/* set timestamp bit if present */
- if (unlikely(tx_flags & IGB_TX_FLAGS_TSTAMP))
- cmd_type |= cpu_to_le32(E1000_ADVTXD_MAC_TSTAMP);
+ cmd_type |= IGB_SET_FLAG(tx_flags, IGB_TX_FLAGS_TSTAMP,
+ (E1000_ADVTXD_MAC_TSTAMP));
- /* set segmentation bits for TSO */
- if (tx_flags & IGB_TX_FLAGS_TSO)
- cmd_type |= cpu_to_le32(E1000_ADVTXD_DCMD_TSE);
+ /* insert frame checksum */
+ cmd_type ^= IGB_SET_FLAG(skb->no_fcs, 1, E1000_ADVTXD_DCMD_IFCS);
return cmd_type;
}
@@ -4149,19 +4157,19 @@ static void igb_tx_olinfo_status(struct igb_ring *tx_ring,
{
u32 olinfo_status = paylen << E1000_ADVTXD_PAYLEN_SHIFT;
- /* 82575 requires a unique index per ring if any offload is enabled */
- if ((tx_flags & (IGB_TX_FLAGS_CSUM | IGB_TX_FLAGS_VLAN)) &&
- test_bit(IGB_RING_FLAG_TX_CTX_IDX, &tx_ring->flags))
+ /* 82575 requires a unique index per ring */
+ if (test_bit(IGB_RING_FLAG_TX_CTX_IDX, &tx_ring->flags))
olinfo_status |= tx_ring->reg_idx << 4;
/* insert L4 checksum */
- if (tx_flags & IGB_TX_FLAGS_CSUM) {
- olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
+ olinfo_status |= IGB_SET_FLAG(tx_flags,
+ IGB_TX_FLAGS_CSUM,
+ (E1000_TXD_POPTS_TXSM << 8));
- /* insert IPv4 checksum */
- if (tx_flags & IGB_TX_FLAGS_IPV4)
- olinfo_status |= E1000_TXD_POPTS_IXSM << 8;
- }
+ /* insert IPv4 checksum */
+ olinfo_status |= IGB_SET_FLAG(tx_flags,
+ IGB_TX_FLAGS_IPV4,
+ (E1000_TXD_POPTS_IXSM << 8));
tx_desc->read.olinfo_status = cpu_to_le32(olinfo_status);
}
@@ -4185,14 +4193,13 @@ static void igb_tx_map(struct igb_ring *tx_ring,
unsigned int data_len = skb->data_len;
unsigned int size = skb_headlen(skb);
unsigned int paylen = skb->len - hdr_len;
- __le32 cmd_type;
u32 tx_flags = first->tx_flags;
+ u32 cmd_type = igb_tx_cmd_type(skb, tx_flags);
u16 i = tx_ring->next_to_use;
tx_desc = IGB_TX_DESC(tx_ring, i);
igb_tx_olinfo_status(tx_ring, tx_desc, tx_flags, paylen);
- cmd_type = igb_tx_cmd_type(tx_flags);
dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);
if (dma_mapping_error(tx_ring->dev, dma))
@@ -4206,7 +4213,7 @@ static void igb_tx_map(struct igb_ring *tx_ring,
for (;;) {
while (unlikely(size > IGB_MAX_DATA_PER_TXD)) {
tx_desc->read.cmd_type_len =
- cmd_type | cpu_to_le32(IGB_MAX_DATA_PER_TXD);
+ cpu_to_le32(cmd_type ^ IGB_MAX_DATA_PER_TXD);
i++;
tx_desc++;
@@ -4225,7 +4232,7 @@ static void igb_tx_map(struct igb_ring *tx_ring,
if (likely(!data_len))
break;
- tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size);
+ tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type ^ size);
i++;
tx_desc++;
@@ -4255,10 +4262,8 @@ static void igb_tx_map(struct igb_ring *tx_ring,
netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);
/* write last descriptor with RS and EOP bits */
- cmd_type |= cpu_to_le32(size) | cpu_to_le32(IGB_TXD_DCMD);
- if (unlikely(skb->no_fcs))
- cmd_type &= ~(cpu_to_le32(E1000_ADVTXD_DCMD_IFCS));
- tx_desc->read.cmd_type_len = cmd_type;
+ cmd_type |= size | IGB_TXD_DCMD;
+ tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);
/* set the timestamp */
first->time_stamp = jiffies;
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [net-next 10/11] igb: Improve performance and reduce size of igb_tx_map
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (8 preceding siblings ...)
2012-11-13 14:03 ` [net-next 09/11] igb: Update igb Tx flags to improve code efficiency Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 14:03 ` [net-next 11/11] igb: Ethtool support to enable and disable EEE Jeff Kirsher
2012-11-13 19:19 ` [net-next 00/11][pull request] Intel Wired LAN Driver Updates David Miller
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Alexander Duyck, netdev, gospo, sassmann, Jeff Kirsher
From: Alexander Duyck <alexander.h.duyck@intel.com>
This change is meant to both improve the performance and reduce the size of
igb_tx_map. To do this I have expanded the work done in the main loop by
pushing first into tx_buffer. This allows us to pull in the dma_mapping_error
check, the tx_buffer value assignment, and the initial DMA value assignment to
the Tx descriptor. The net result is that the function reduces in size by a
little over a 100 bytes and is about 1% or 2% faster.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/igb_main.c | 47 +++++++++++++++----------------
1 file changed, 22 insertions(+), 25 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 0a0bd81..7044aaa 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -4188,29 +4188,34 @@ static void igb_tx_map(struct igb_ring *tx_ring,
struct sk_buff *skb = first->skb;
struct igb_tx_buffer *tx_buffer;
union e1000_adv_tx_desc *tx_desc;
+ struct skb_frag_struct *frag;
dma_addr_t dma;
- struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[0];
- unsigned int data_len = skb->data_len;
- unsigned int size = skb_headlen(skb);
- unsigned int paylen = skb->len - hdr_len;
+ unsigned int data_len, size;
u32 tx_flags = first->tx_flags;
u32 cmd_type = igb_tx_cmd_type(skb, tx_flags);
u16 i = tx_ring->next_to_use;
tx_desc = IGB_TX_DESC(tx_ring, i);
- igb_tx_olinfo_status(tx_ring, tx_desc, tx_flags, paylen);
+ igb_tx_olinfo_status(tx_ring, tx_desc, tx_flags, skb->len - hdr_len);
+
+ size = skb_headlen(skb);
+ data_len = skb->data_len;
dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);
- if (dma_mapping_error(tx_ring->dev, dma))
- goto dma_error;
- /* record length, and DMA address */
- dma_unmap_len_set(first, len, size);
- dma_unmap_addr_set(first, dma, dma);
- tx_desc->read.buffer_addr = cpu_to_le64(dma);
+ tx_buffer = first;
+
+ for (frag = &skb_shinfo(skb)->frags[0];; frag++) {
+ if (dma_mapping_error(tx_ring->dev, dma))
+ goto dma_error;
+
+ /* record length, and DMA address */
+ dma_unmap_len_set(tx_buffer, len, size);
+ dma_unmap_addr_set(tx_buffer, dma, dma);
+
+ tx_desc->read.buffer_addr = cpu_to_le64(dma);
- for (;;) {
while (unlikely(size > IGB_MAX_DATA_PER_TXD)) {
tx_desc->read.cmd_type_len =
cpu_to_le32(cmd_type ^ IGB_MAX_DATA_PER_TXD);
@@ -4221,11 +4226,11 @@ static void igb_tx_map(struct igb_ring *tx_ring,
tx_desc = IGB_TX_DESC(tx_ring, 0);
i = 0;
}
+ tx_desc->read.olinfo_status = 0;
dma += IGB_MAX_DATA_PER_TXD;
size -= IGB_MAX_DATA_PER_TXD;
- tx_desc->read.olinfo_status = 0;
tx_desc->read.buffer_addr = cpu_to_le64(dma);
}
@@ -4240,31 +4245,23 @@ static void igb_tx_map(struct igb_ring *tx_ring,
tx_desc = IGB_TX_DESC(tx_ring, 0);
i = 0;
}
+ tx_desc->read.olinfo_status = 0;
size = skb_frag_size(frag);
data_len -= size;
dma = skb_frag_dma_map(tx_ring->dev, frag, 0,
- size, DMA_TO_DEVICE);
- if (dma_mapping_error(tx_ring->dev, dma))
- goto dma_error;
+ size, DMA_TO_DEVICE);
tx_buffer = &tx_ring->tx_buffer_info[i];
- dma_unmap_len_set(tx_buffer, len, size);
- dma_unmap_addr_set(tx_buffer, dma, dma);
-
- tx_desc->read.olinfo_status = 0;
- tx_desc->read.buffer_addr = cpu_to_le64(dma);
-
- frag++;
}
- netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);
-
/* write last descriptor with RS and EOP bits */
cmd_type |= size | IGB_TXD_DCMD;
tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);
+ netdev_tx_sent_queue(txring_txq(tx_ring), first->bytecount);
+
/* set the timestamp */
first->time_stamp = jiffies;
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [net-next 11/11] igb: Ethtool support to enable and disable EEE
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (9 preceding siblings ...)
2012-11-13 14:03 ` [net-next 10/11] igb: Improve performance and reduce size of igb_tx_map Jeff Kirsher
@ 2012-11-13 14:03 ` Jeff Kirsher
2012-11-13 19:19 ` [net-next 00/11][pull request] Intel Wired LAN Driver Updates David Miller
11 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-11-13 14:03 UTC (permalink / raw)
To: davem; +Cc: Akeem G. Abodunrin, netdev, gospo, sassmann, Jeff Kirsher
From: "Akeem G. Abodunrin" <akeem.g.abodunrin@intel.com>
This patch allows users to enable and disable EEE using Ethtool.
It also allows users to get EEE settings, as supported by the device.
Signed-off-by: Akeem G Abodunrin <akeem.g.abodunrin@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/igb/e1000_defines.h | 1 +
drivers/net/ethernet/intel/igb/igb_ethtool.c | 100 +++++++++++++++++++++++++
2 files changed, 101 insertions(+)
diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h
index e647cff..198d148 100644
--- a/drivers/net/ethernet/intel/igb/e1000_defines.h
+++ b/drivers/net/ethernet/intel/igb/e1000_defines.h
@@ -874,6 +874,7 @@
#define E1000_EEER_FRC_AN 0x10000000 /* Enable EEE in loopback */
#define E1000_EEER_LPI_FC 0x00040000 /* EEE Enable on FC */
#define E1000_EEE_SU_LPI_CLK_STP 0X00800000 /* EEE LPI Clock Stop */
+#define E1000_EEER_EEE_NEG 0x20000000 /* EEE capability nego */
/* SerDes Control */
#define E1000_GEN_CTL_READY 0x80000000
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index 2b82a53..0acf590 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -2529,6 +2529,104 @@ static int igb_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
return ret;
}
+static int igb_get_eee(struct net_device *netdev, struct ethtool_eee *edata)
+{
+ struct igb_adapter *adapter = netdev_priv(netdev);
+ struct e1000_hw *hw = &adapter->hw;
+ u32 ipcnfg, eeer;
+
+ if ((hw->mac.type < e1000_i350) ||
+ (hw->phy.media_type != e1000_media_type_copper))
+ return -EOPNOTSUPP;
+
+ edata->supported = (SUPPORTED_1000baseT_Full |
+ SUPPORTED_100baseT_Full);
+
+ ipcnfg = rd32(E1000_IPCNFG);
+ eeer = rd32(E1000_EEER);
+
+ /* EEE status on negotiated link */
+ if (ipcnfg & E1000_IPCNFG_EEE_1G_AN)
+ edata->advertised = ADVERTISED_1000baseT_Full;
+
+ if (ipcnfg & E1000_IPCNFG_EEE_100M_AN)
+ edata->advertised |= ADVERTISED_100baseT_Full;
+
+ if (eeer & E1000_EEER_EEE_NEG)
+ edata->eee_active = true;
+
+ edata->eee_enabled = !hw->dev_spec._82575.eee_disable;
+
+ if (eeer & E1000_EEER_TX_LPI_EN)
+ edata->tx_lpi_enabled = true;
+
+ /* Report correct negotiated EEE status for devices that
+ * wrongly report EEE at half-duplex
+ */
+ if (adapter->link_duplex == HALF_DUPLEX) {
+ edata->eee_enabled = false;
+ edata->eee_active = false;
+ edata->tx_lpi_enabled = false;
+ edata->advertised &= ~edata->advertised;
+ }
+
+ return 0;
+}
+
+static int igb_set_eee(struct net_device *netdev,
+ struct ethtool_eee *edata)
+{
+ struct igb_adapter *adapter = netdev_priv(netdev);
+ struct e1000_hw *hw = &adapter->hw;
+ struct ethtool_eee eee_curr;
+ s32 ret_val;
+
+ if ((hw->mac.type < e1000_i350) ||
+ (hw->phy.media_type != e1000_media_type_copper))
+ return -EOPNOTSUPP;
+
+ ret_val = igb_get_eee(netdev, &eee_curr);
+ if (ret_val)
+ return ret_val;
+
+ if (eee_curr.eee_enabled) {
+ if (eee_curr.tx_lpi_enabled != edata->tx_lpi_enabled) {
+ dev_err(&adapter->pdev->dev,
+ "Setting EEE tx-lpi is not supported\n");
+ return -EINVAL;
+ }
+
+ /* Tx LPI timer is not implemented currently */
+ if (edata->tx_lpi_timer) {
+ dev_err(&adapter->pdev->dev,
+ "Setting EEE Tx LPI timer is not supported\n");
+ return -EINVAL;
+ }
+
+ if (eee_curr.advertised != edata->advertised) {
+ dev_err(&adapter->pdev->dev,
+ "Setting EEE Advertisement is not supported\n");
+ return -EINVAL;
+ }
+
+ } else if (!edata->eee_enabled) {
+ dev_err(&adapter->pdev->dev,
+ "Setting EEE options are not supported with EEE disabled\n");
+ return -EINVAL;
+ }
+
+ if (hw->dev_spec._82575.eee_disable != !edata->eee_enabled) {
+ hw->dev_spec._82575.eee_disable = !edata->eee_enabled;
+ igb_set_eee_i350(hw);
+
+ /* reset link */
+ if (!netif_running(netdev))
+ igb_reset(adapter);
+ }
+
+ return 0;
+}
+
static int igb_ethtool_begin(struct net_device *netdev)
{
struct igb_adapter *adapter = netdev_priv(netdev);
@@ -2571,6 +2669,8 @@ static const struct ethtool_ops igb_ethtool_ops = {
.get_ts_info = igb_get_ts_info,
.get_rxnfc = igb_get_rxnfc,
.set_rxnfc = igb_set_rxnfc,
+ .get_eee = igb_get_eee,
+ .set_eee = igb_set_eee,
.begin = igb_ethtool_begin,
.complete = igb_ethtool_complete,
};
--
1.7.11.7
^ permalink raw reply related [flat|nested] 37+ messages in thread
* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
` (10 preceding siblings ...)
2012-11-13 14:03 ` [net-next 11/11] igb: Ethtool support to enable and disable EEE Jeff Kirsher
@ 2012-11-13 19:19 ` David Miller
11 siblings, 0 replies; 37+ messages in thread
From: David Miller @ 2012-11-13 19:19 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Tue, 13 Nov 2012 06:03:14 -0800
> This series contains updates to ixgbe, ixgbevf and igb.
>
> The following are changes since commit 9fafd65ad407d4e0c96919a325f568dd95d032af:
> ipv6 ndisc: Use pre-defined in6addr_linklocal_allnodes.
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, but I have some long term feedback to give on one of the
patches, thanks.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2014-05-14 8:54 Jeff Kirsher
0 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2014-05-14 8:54 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to igb, igbvf, ixgbe, i40e and i40evf.
Emil provides a ixgbe patch to fix the detection of SFP+ capable interfaces
by identifying 82599 based NICs with no PHY type set as SFP capable which
allows the driver to detect the SFP module when the interface is brought
up.
Jacob provides eight patches to cleanup the ixgbe driver to resolve various
checkpatch.pl warnings/errors as well as minor coding style issues.
Stephen Hemminger and I provide simple cleanups of void functions which
had useless return statements at the end of the function which are not
needed.
The following are changes since commit 86b5d251d5ac4dda51a022b34cb29b4ce65a8cd5:
sh_eth: replace devm_kzalloc() with devm_kmalloc_array()
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Emil Tantilov (1):
ixgbe: fix detection of SFP+ capable interfaces
Jacob Keller (8):
ixgbe: clean up checkpatch warnings about CODE_INDENT and
LEADING_SPACE
ixgbe: fix function-like macro, remove semicolon
ixgbe: fix checkpatch style of blank line after declaration
ixgbe: fix several concatenated strings to single line
ixgbe: add braces around else block
ixgbe: don't check NULL for debugfs_remove_recursive
ixgbe: add space between operands to &
ixgbe: add /* fallthrough */ comment to case statements
Jeff Kirsher (1):
igb/ixgbe: remove return statements for void functions
Stephen Hemminger (1):
i40e,igb,ixgbe: remove usless return statements
drivers/net/ethernet/intel/i40e/i40e_main.c | 4 -
drivers/net/ethernet/intel/i40evf/i40evf_main.c | 4 -
drivers/net/ethernet/intel/igb/e1000_nvm.c | 1 -
drivers/net/ethernet/intel/igb/igb_main.c | 1 -
drivers/net/ethernet/intel/igbvf/ethtool.c | 1 -
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | 62 ++++++++-------
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 85 ++++++++++----------
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 45 +++++------
drivers/net/ethernet/intel/ixgbe/ixgbe_common.h | 16 ++--
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c | 3 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.h | 24 +++---
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c | 28 +++----
drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c | 3 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 90 ++++++++++------------
drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c | 4 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 8 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.c | 10 +--
drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h | 6 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 68 ++++++++--------
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h | 32 ++++----
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 4 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 60 +++++++--------
drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 15 ++--
24 files changed, 275 insertions(+), 301 deletions(-)
--
1.9.0
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2013-10-29 12:02 Jeff Kirsher
2013-10-29 22:58 ` David Miller
0 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2013-10-29 12:02 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to vxlan, net, ixgbe, ixgbevf, and i40e.
Joseph provides a single patch against vxlan which removes the burden
from the NIC drivers to check if the vxlan driver is enabled in the
kernel and also makes available the vxlan headrooms to the drivers.
Jacob provides majority of the patches, with patches against net, ixgbe
and ixgbevf. His net patch adds might_sleep() call to napi_disable so
that every use of napi_disable during atomic context will be visible.
Then Jacob provides a patch to fix qv_lock_napi call in
ixgbe_napi_disable_all. The other ixgbe patches cleanup
ixgbe_check_minimum_link function to correctly show that there are some
minor loss of encoding, even though we don't calculate it and remove
unnecessary duplication of PCIe bandwidth display. Lastly, Jacob
provides 4 patches against ixgbevf to add ixgbevf_rx_skb in line with
how ixgbe handles the variations on how packets can be received, adds
support in order to track how many packets were cleaned during busy poll
as part of the extended statistics.
Wei Yongjun provides a fix for i40e to return -ENOMEN in the memory
allocation error handling case instead of returning 0, as done
elsewhere in this function.
The following are changes since commit cdfb97bc010d9e9d994eb68f2cbac3a8ada26104:
net, mc: fix the incorrect comments in two mc-related functions
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Don Skidmore (1):
ixgbevf: Add zero_base handler to network statistics
Jacob Keller (8):
net: add might_sleep() call to napi_disable
ixgbe: fix qv_lock_napi call in ixgbe_napi_disable_all
ixgbe: show <2% for encoding loss on PCIe Gen3
ixgbe: remove unnecessary duplication of PCIe bandwidth display
ixgbevf: add ixgbevf_rx_skb
ixgbevf: have clean_rx_irq return total_rx_packets cleaned
ixgbevf: implement CONFIG_NET_RX_BUSY_POLL
ixgbevf: add BP_EXTENDED_STATS for CONFIG_NET_RX_BUSY_POLL
Joseph Gasparakis (1):
vxlan: Have the NIC drivers do less work for offloads
Wei Yongjun (1):
i40e: fix error return code in i40e_probe()
drivers/net/ethernet/intel/i40e/i40e_main.c | 4 +-
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 48 ++++++--
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 46 +++-----
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 98 +++++++++++-----
drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 132 +++++++++++++++++++++-
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 103 +++++++++++++++--
drivers/net/vxlan.c | 4 -
include/linux/netdevice.h | 1 +
include/net/vxlan.h | 11 ++
9 files changed, 366 insertions(+), 81 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2013-10-24 15:27 Jeff Kirsher
2013-10-26 4:30 ` David Miller
0 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2013-10-24 15:27 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to igb, igbvf, i40e, ixgbe and ixgbevf.
Dan Carpenter provides a patch for igbvf to fix a bug found by a static
checker. If the new MTU is very large, then "new_mtu + ETH_HLEN +
ETH_FCS_LEN" can wrap and the check on the next line can underflow.
Wei Yongjun provides 2 patches, the first against igbvf adds a missing
iounmap() before the return from igbvf_probe(). The second against
i40e, removes the include <linux/version.h> because it is not needed.
Carolyn provides a patch for igb to fix a call to set the master/slave
mode for all m88 generation 2 PHY's and removes the call for I210
devices which do not need it.
Stefan Assmann provides a patch for igb to fix an issue which was broke
by:
commit fa44f2f185f7f9da19d331929bb1b56c1ccd1d93
Author: Greg Rose <gregory.v.rose@intel.com>
Date: Thu Jan 17 01:03:06 2013 -0800
igb: Enable SR-IOV configuration via PCI sysfs interface
which breaks the reloading of igb when VFs are assigned to a guest, in
several ways.
Jacob provides a patch for ixgbe and ixgbevf. First, against ixgbe,
cleans up ixgbe_enumerate_functions to reduce code complexity. The
second, against ixgbevf, adds support for ethtool's get_coalesce and
set_coalesce command for the ixgbevf driver.
Yijing Wang provides a patch for ixgbe to use pcie_capability_read_word()
to simplify the code.
Emil provides a ixgbe patch to fix an issue where the logic used to
detect changes in rx-usecs was incorrect and was masked by the call to
ixgbe_update_rsc().
Don provides 2 patches for ixgbevf. First creates a new function to set
PSRTYPE. The second bumps the ixgbevf driver version.
The following are changes since commit b45bd46decd947eaa3497699d450e0851d247534:
Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Carolyn Wyborny (1):
igb: Fix master/slave mode for all m88 i354 PHY's
Dan Carpenter (1):
igbvf: integer wrapping bug setting the mtu
Don Skidmore (2):
ixgbevf: Adds function to set PSRTYPE register
ixgbevf: bump driver version
Emil Tantilov (1):
ixgbe: fix rx-usecs range checks for BQL
Jacob Keller (2):
ixgbe: cleanup ixgbe_enumerate_functions
ixgbevf: implement ethtool get/set coalesce
Stefan Assmann (1):
igb: fix driver reload with VF assigned to guest
Wei Yongjun (2):
igbvf: add missing iounmap() on error in igbvf_probe()
i40e: remove unused including <linux/version.h>
Yijing Wang (1):
ixgbe: use pcie_capability_read_word() to simplify code
drivers/net/ethernet/intel/i40e/i40e.h | 1 -
drivers/net/ethernet/intel/igb/e1000_phy.c | 8 +--
drivers/net/ethernet/intel/igb/igb_main.c | 37 +++++------
drivers/net/ethernet/intel/igbvf/netdev.c | 8 +--
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 6 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 19 ++----
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 81 +++++++++++++++++++++++
drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 2 +
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 22 ++++--
9 files changed, 134 insertions(+), 50 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2013-04-12 11:24 Jeff Kirsher
0 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2013-04-12 11:24 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series contains updates to ixgbe only.
My previous pull request had a mix of ixgbe and igb patches, and
while Akeem works on the changes requested on the igb patches, I
going ahead and re-submitting the originally submitted ixgbe patches
with several other ixgbe patches.
Alex provides a performance improvement with the enabling the use of
build_skb for instances where jumbo frames are disabled. In addition,
Alex provides a fix where we were incorrectly checking the entire frag_off
field when we only wanted the fragment offset. Lastly, he cleans up
the check for PAGE_SIZE, since the default configuration allocates 32K
for all buffers.
Emil provides a change to the calculation of eerd so that it is consistent
between the read and write functions by using | instead of +.
Jacob adds support for displaying PCIe Gen3 link speed, which was
previously missing from the ixgbe driver. He also provides a patch
to clean up ixgbe_get_bus_info_generic to call some conversion
functions, which are used also in another patch provided by Jacob.
Jacob modifies the driver to enable certain devices (which have an
internal switch) to read from the physical slot rather than reading
data from the internal switch. Lastly, Jacob adds a function which
enables the ixgbe driver to walk up the PCI bus for the device and
query the PCI config space for the bus width at each point.
Don provides a couple of fixes (which are more appropriate for net-next),
one of which resolves an issue where ixgbe was only turning on the laser
when the adapter was up which caused issues for those who wanted to
access the MNG firmware while the port was in a down state. The other
fix is for WoL when currently linked at 1G. Lastly Don bumps the driver
version keep the in-kernel driver up to date with the current functionality.
The following are changes since commit 6c6779856a294649dbb468ef46e893e80b0d72ad:
Revert "netprio_cgroup: make local table static"
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Alexander Duyck (3):
ixgbe: Support using build_skb in the case that jumbo frames are
disabled
ixgbe: Mask off check of frag_off as we only want fragment offset
ixgbe: Drop check for PAGE_SIZE from ixgbe_xmit_frame_ring
Don Skidmore (3):
ixgbe: fix MNG FW support when adapter not up
ixgbe: Fix 1G link WoL
ixgbe: bump version number
Emil Tantilov (1):
ixgbe: don't do arithmetic operations on bitmasks
Jacob Keller (4):
ixgbe: Enable support for recognizing PCI-e Gen3 link speed
ixgbe: create conversion functions from link_status to bus/speed
ixgbe: enable devices with internal switch to read pci parent
ixgbe: walk pci-e bus to find minimum width
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 7 +
drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 51 ++++-
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 63 +++---
drivers/net/ethernet/intel/ixgbe/ixgbe_common.h | 2 +
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 289 ++++++++++++++++++++----
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 13 ++
drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 1 +
8 files changed, 343 insertions(+), 84 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-02-25 5:49 Jeff Kirsher
2012-02-26 1:31 ` David Miller
0 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2012-02-25 5:49 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
This series of patches contains cleanups of the e1000e driver.
The following are changes since commit 5d74f1757001f5b9a7739c2a9053435e16ce516b:
Staging: wlags49_h2: print MAC via printk format specifier
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Bruce Allan (11):
e1000e: cleanup: rename e1000e_id_led_init() and call as function
pointer
e1000e: cleanup: rename e1000e_setup_link() and call as function
pointer
e1000e: cleanup use of check_mng_mode function pointer
e1000e: cleanup use of check_reset_block function pointer
e1000e: cleanup calls to setup_physical_interface function pointer
e1000e: comment correction in
e1000e_set_kmrn_lock_loss_workaround_ich8lan
e1000e: rename e1000e_config_collision_dist() and call as function
pointer
e1000e: cleanup comment in e1000_hash_mc_addr()
e1000e: use true/false for boolean send_xon, do not assume always
true
e1000e: cleanup - remove unnecessary variable
e1000e: rename e1000e_reload_nvm() and call as function pointer
drivers/net/ethernet/intel/e1000e/80003es2lan.c | 12 +++++---
drivers/net/ethernet/intel/e1000e/82571.c | 10 ++++---
drivers/net/ethernet/intel/e1000e/e1000.h | 18 +++----------
drivers/net/ethernet/intel/e1000e/ethtool.c | 6 +++-
drivers/net/ethernet/intel/e1000e/hw.h | 2 +
drivers/net/ethernet/intel/e1000e/ich8lan.c | 32 ++++++++++++----------
drivers/net/ethernet/intel/e1000e/mac.c | 31 ++++++++++-----------
drivers/net/ethernet/intel/e1000e/manage.c | 4 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 8 +++---
drivers/net/ethernet/intel/e1000e/nvm.c | 4 +-
drivers/net/ethernet/intel/e1000e/phy.c | 6 ++--
11 files changed, 66 insertions(+), 67 deletions(-)
--
1.7.7.6
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
2012-02-25 5:49 Jeff Kirsher
@ 2012-02-26 1:31 ` David Miller
0 siblings, 0 replies; 37+ messages in thread
From: David Miller @ 2012-02-26 1:31 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Fri, 24 Feb 2012 21:49:49 -0800
> This series of patches contains cleanups of the e1000e driver.
>
> The following are changes since commit 5d74f1757001f5b9a7739c2a9053435e16ce516b:
> Staging: wlags49_h2: print MAC via printk format specifier
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-02-07 12:33 Jeff Kirsher
2012-02-07 17:27 ` David Miller
0 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2012-02-07 12:33 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
The following series contains updates to e1000, igbvf and e1000e.
Majority of the updates are to e1000e and do the following:
- cleanup 82571 and 80003es2lan code
- fix checkpatch and sparse warnings
- fix whitespace/indentation
- add missing initializers
The following are changes since commit 59d74026fa4b5df72a268f1e9578af500154ad07:
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Bruce Allan (9):
e1000e: add missing initializers reported when compiling with W=1
e1000e: cleanup - check return values consistently
e1000e: cleanup e1000_init_mac_params_80003es2lan()
e1000e: cleanup e1000_init_mac_params_82571()
e1000e: cleanup e1000_set_phys_id
e1000e: cleanup - use braces in both branches of a conditional
statement
e1000e: fix checkpatch warning from MINMAX test
e1000e: fix sparse warnings with -D__CHECK_ENDIAN__
e1000e: minor whitespace and indentation cleanup
Mitch A Williams (1):
igbvf: refactor Interrupt Throttle Rate code
Tushar Dave (1):
e1000: Adding e1000_dump function
drivers/net/ethernet/intel/e1000/e1000.h | 1 +
drivers/net/ethernet/intel/e1000/e1000_hw.h | 10 +
drivers/net/ethernet/intel/e1000/e1000_main.c | 224 +++++++++++++++++++++++
drivers/net/ethernet/intel/e1000e/80003es2lan.c | 28 +--
drivers/net/ethernet/intel/e1000e/82571.c | 72 +++-----
drivers/net/ethernet/intel/e1000e/ethtool.c | 8 +-
drivers/net/ethernet/intel/e1000e/ich8lan.c | 12 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 104 ++++++-----
drivers/net/ethernet/intel/igbvf/ethtool.c | 19 +-
drivers/net/ethernet/intel/igbvf/igbvf.h | 27 ++--
drivers/net/ethernet/intel/igbvf/netdev.c | 131 ++++++++------
11 files changed, 438 insertions(+), 198 deletions(-)
--
1.7.7.6
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
2012-02-07 12:33 Jeff Kirsher
@ 2012-02-07 17:27 ` David Miller
0 siblings, 0 replies; 37+ messages in thread
From: David Miller @ 2012-02-07 17:27 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Tue, 7 Feb 2012 04:33:47 -0800
> The following series contains updates to e1000, igbvf and e1000e.
> Majority of the updates are to e1000e and do the following:
> - cleanup 82571 and 80003es2lan code
> - fix checkpatch and sparse warnings
> - fix whitespace/indentation
> - add missing initializers
>
> The following are changes since commit 59d74026fa4b5df72a268f1e9578af500154ad07:
> Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-01-27 3:08 Jeff Kirsher
2012-01-28 1:47 ` David Miller
0 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2012-01-27 3:08 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
The following series contains updates to e1000e only. This is the
second batch of e1000e patches and these changes contain
fixups/cleanups/conversions. Most notably is the split up of lib.c
into mac.c, manage.c and nvm.c.
The following are changes since commit a7563f342db6490e66dbf2c8a50577a72a158c9a:
ipv6: Use ipv6_addr_any()
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Bruce Allan (11):
e1000e: disable Early Receive DMA on ICH LOMs
e1000e: update workaround for 82579 intermittently disabled during
S0->Sx
e1000e: ICHx/PCHx LOMs should use LPLU setting in NVM when going to
Sx
e1000e: increase Rx PBA to prevent dropping received packets on
82566/82567
e1000e: conditionally restart autoneg on 82577/8/9 when setting LPLU
state
e1000e: concatenate long debug strings which span multiple lines
e1000e: convert final strncpy() to strlcpy()
e1000e: increase version number
e1000e: call er16flash() instead of __er16flash()
e1000e: split lib.c into three more-appropriate files
e1000e: update copyright year
drivers/net/ethernet/intel/e1000e/80003es2lan.c | 5 +-
drivers/net/ethernet/intel/e1000e/82571.c | 2 +-
drivers/net/ethernet/intel/e1000e/Makefile | 5 +-
drivers/net/ethernet/intel/e1000e/defines.h | 2 +-
drivers/net/ethernet/intel/e1000e/e1000.h | 4 +-
drivers/net/ethernet/intel/e1000e/ethtool.c | 2 +-
drivers/net/ethernet/intel/e1000e/hw.h | 2 +-
drivers/net/ethernet/intel/e1000e/ich8lan.c | 141 ++--
drivers/net/ethernet/intel/e1000e/{lib.c => mac.c} | 1041 +-------------------
drivers/net/ethernet/intel/e1000e/manage.c | 377 +++++++
drivers/net/ethernet/intel/e1000e/netdev.c | 72 +-
drivers/net/ethernet/intel/e1000e/nvm.c | 647 ++++++++++++
drivers/net/ethernet/intel/e1000e/param.c | 2 +-
drivers/net/ethernet/intel/e1000e/phy.c | 5 +-
14 files changed, 1168 insertions(+), 1139 deletions(-)
rename drivers/net/ethernet/intel/e1000e/{lib.c => mac.c} (64%)
create mode 100644 drivers/net/ethernet/intel/e1000e/manage.c
create mode 100644 drivers/net/ethernet/intel/e1000e/nvm.c
--
1.7.7.6
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
2012-01-27 3:08 Jeff Kirsher
@ 2012-01-28 1:47 ` David Miller
0 siblings, 0 replies; 37+ messages in thread
From: David Miller @ 2012-01-28 1:47 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 26 Jan 2012 19:08:38 -0800
> The following series contains updates to e1000e only. This is the
> second batch of e1000e patches and these changes contain
> fixups/cleanups/conversions. Most notably is the split up of lib.c
> into mac.c, manage.c and nvm.c.
>
> The following are changes since commit a7563f342db6490e66dbf2c8a50577a72a158c9a:
> ipv6: Use ipv6_addr_any()
> and are available in the git repository at:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2012-01-03 19:19 Jeff Kirsher
0 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2012-01-03 19:19 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
The following series contains updates to e1000, e1000e, igb and
netdev/ixgbe. There are 2 fixes and the remaining patches are
either add support or cleanup.
Here is a list of the new support added:
- igb adds support for byte queue limits and basic runtime PM
- e1000e adds Receive Packet Steering (RPS)
- FCoE adds ndo_get_fcoe_hbainfo() call
The following are changes since commit fa0f5aa74316c636427ac92dad0bc5714c34ca17:
net_sched: qdisc_alloc_handle() can be too slow
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master
Bruce Allan (5):
e1000e: cleanup Rx checksum offload code
e1000e: add Receive Packet Steering (RPS) support
e1000e: re-enable alternate MAC address for all devices which support
it
e1000e: convert head, tail and itr_register offsets to __iomem
pointers
e1000e: pass pointer to ring struct instead of adapter struct
Eric Dumazet (1):
igb: Add support for byte queue limits.
Jesse Brandeburg (1):
e1000: fix lockdep splat in shutdown handler
Koki Sanagi (1):
igb: reset PHY after recovering from PHY power down
Neerav Parikh (2):
netdev: FCoE: Add new ndo_get_fcoe_hbainfo() call
ixgbe: FCoE: Add support for ndo_get_fcoe_hbainfo() call
Yan, Zheng (1):
igb: add basic runtime PM support
drivers/net/ethernet/intel/e1000/e1000_main.c | 8 +-
drivers/net/ethernet/intel/e1000e/defines.h | 7 +
drivers/net/ethernet/intel/e1000e/e1000.h | 27 +-
drivers/net/ethernet/intel/e1000e/ethtool.c | 10 +-
drivers/net/ethernet/intel/e1000e/hw.h | 9 +-
drivers/net/ethernet/intel/e1000e/lib.c | 7 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 397 +++++++++++++++----------
drivers/net/ethernet/intel/igb/igb.h | 5 +
drivers/net/ethernet/intel/igb/igb_ethtool.c | 16 +
drivers/net/ethernet/intel/igb/igb_main.c | 142 ++++++++--
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 3 +
drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c | 83 +++++
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 5 +-
include/linux/netdevice.h | 26 ++
14 files changed, 541 insertions(+), 204 deletions(-)
--
1.7.7.4
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2011-10-08 6:47 Jeff Kirsher
2011-10-08 6:52 ` Jeff Kirsher
0 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2011-10-08 6:47 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo, sassmann
The following series contains updates to igb only. They are a
continuation of the cleanups and refactoring that Alex has done.
After this series there are 4-5 more patches to complete the work
that Alex has done on igb.
The following are changes since commit 1d0861acfb24d0ca0661ff5a156b992b2c589458:
Add ethtool -g support to 8139cp
and are available in the git repository at
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next.git
or
git://github.com/Jkirsher/net-next.git
Alexander Duyck (11):
igb: push data into first igb_tx_buffer sooner to reduce stack usage
igb: Use node specific allocations for the q_vectors and rings
igb: avoid unnecessary conversions from u16 to int
igb: Consolidate all of the ring feature flags into a single value
igb: Move ITR related data into work container within the q_vector
igb: cleanup IVAR configuration
igb: retire the RX_CSUM flag and use the netdev flag instead
igb: leave staterr in place and instead us a helper function to check
bits
igb: fix recent VLAN changes that would leave VLANs disabled after
reset
igb: move TX hang check flag into ring->flags
igb: add support for NETIF_F_RXHASH
drivers/net/ethernet/intel/igb/e1000_defines.h | 3 +
drivers/net/ethernet/intel/igb/igb.h | 53 ++-
drivers/net/ethernet/intel/igb/igb_ethtool.c | 14 +-
drivers/net/ethernet/intel/igb/igb_main.c | 675 +++++++++++++-----------
4 files changed, 411 insertions(+), 334 deletions(-)
--
1.7.6.4
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2011-09-30 5:24 Jeff Kirsher
2011-09-30 18:35 ` Jeff Kirsher
0 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2011-09-30 5:24 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo
The following series contains updates to e1000e and ixgbe. The one
patch for e1000e makes function tables const, thanks to Stephen
Hemminger for reporting this. The remaining patches are for ixgbe,
and the contain the following:
- minor cleanups
- add support for 82599 device and ethtool -E support
- removal of a PHY which is not used in production silicon
The following are changes since commit 56fd49e399ce1d82200fad5b8924d4e35a587809:
bna: Driver Version changed to 3.0.2.2
and are available in the git repository at
git://github.com/Jkirsher/net-next.git
Emil Tantilov (8):
ixgbe: prevent link checks while resetting
ixgbe: clear the data field in ixgbe_read_i2c_byte_generic
ixgbe: remove return code for functions that always return 0
ixgbe: add support for new 82599 device
ixgbe: send MFLCN to ethtool
ixgbe: do not disable flow control in ixgbe_check_mac_link
ixgbe: remove instances of ixgbe_phy_aq for 82598 and 82599
ixgbe: allow eeprom writes via ethtool
Jacob Keller (1):
ixgbe: fix driver version initialization in firmware
Jeff Kirsher (1):
e1000e: make function tables const
Mika Lansirinne (1):
ixgbe: get pauseparam autoneg
drivers/net/ethernet/intel/e1000e/80003es2lan.c | 8 +-
drivers/net/ethernet/intel/e1000e/82571.c | 20 +++---
drivers/net/ethernet/intel/e1000e/e1000.h | 28 ++++----
drivers/net/ethernet/intel/e1000e/ich8lan.c | 16 +++---
drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | 8 +--
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 7 +--
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 6 --
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 74 +++++++++++++++++++---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 12 +++-
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 33 +++-------
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 1 +
12 files changed, 125 insertions(+), 89 deletions(-)
--
1.7.6.2
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
2011-09-30 5:24 Jeff Kirsher
@ 2011-09-30 18:35 ` Jeff Kirsher
0 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2011-09-30 18:35 UTC (permalink / raw)
To: davem@davemloft.net; +Cc: netdev@vger.kernel.org, gospo@redhat.com
[-- Attachment #1: Type: text/plain, Size: 2427 bytes --]
On Thu, 2011-09-29 at 22:24 -0700, Kirsher, Jeffrey T wrote:
> The following series contains updates to e1000e and ixgbe. The one
> patch for e1000e makes function tables const, thanks to Stephen
> Hemminger for reporting this. The remaining patches are for ixgbe,
> and the contain the following:
>
> - minor cleanups
> - add support for 82599 device and ethtool -E support
> - removal of a PHY which is not used in production silicon
>
> The following are changes since commit 56fd49e399ce1d82200fad5b8924d4e35a587809:
> bna: Driver Version changed to 3.0.2.2
> and are available in the git repository at
> git://github.com/Jkirsher/net-next.git
>
> Emil Tantilov (8):
> ixgbe: prevent link checks while resetting
> ixgbe: clear the data field in ixgbe_read_i2c_byte_generic
> ixgbe: remove return code for functions that always return 0
> ixgbe: add support for new 82599 device
> ixgbe: send MFLCN to ethtool
> ixgbe: do not disable flow control in ixgbe_check_mac_link
> ixgbe: remove instances of ixgbe_phy_aq for 82598 and 82599
> ixgbe: allow eeprom writes via ethtool
>
> Jacob Keller (1):
> ixgbe: fix driver version initialization in firmware
>
> Jeff Kirsher (1):
> e1000e: make function tables const
>
> Mika Lansirinne (1):
> ixgbe: get pauseparam autoneg
>
> drivers/net/ethernet/intel/e1000e/80003es2lan.c | 8 +-
> drivers/net/ethernet/intel/e1000e/82571.c | 20 +++---
> drivers/net/ethernet/intel/e1000e/e1000.h | 28 ++++----
> drivers/net/ethernet/intel/e1000e/ich8lan.c | 16 +++---
> drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | 8 +--
> drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 7 +--
> drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 6 --
> drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 74 +++++++++++++++++++---
> drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 12 +++-
> drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 33 +++-------
> drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 1 +
> drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 1 +
> 12 files changed, 125 insertions(+), 89 deletions(-)
>
Currently there is only 1 small change that needs to be made to patch 11
of the series, based on Ben's comments.
I will wait a bit longer before fixing up patch 11, to ensure that there
are no other changes needed.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2011-09-17 2:15 Jeff Kirsher
0 siblings, 0 replies; 37+ messages in thread
From: Jeff Kirsher @ 2011-09-17 2:15 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo
The following series contains updates to ixgb and ixgbe. The ixgb patch
does the conversion to ndo_fix_features. The remaining patches are for
ixgbe to do the following:
- cleanup register reads, comments, memory allocations
- add SFP support for 82598 PHY and overheat sensor code
- fix register dump for X50
The following are changes since commit f78a5fda9116525809d088917638be912b85f838:
Revert "Scm: Remove unnecessary pid & credential references in Unix socket's send and receive path"
and are available in the git repository at:
git://github.com/Jkirsher/net-next.git
Alexander Duyck (7):
ixgbe: remove redundant configuration of tx_sample_rate
v2 ixgbe: Update packet buffer reservation to correct fdir headroom
size
ixgbe: make ixgbe_up and ixgbe_up_complete void functions
ixgbe: Add missing code for enabling overheat sensor interrupt
ixgbe: Add SFP support for missed 82598 PHY
ixgbe: drop adapter from ixgbe_fso call documentation
ixgbe: Make better use of memory allocations in one-buffer mode w/
RSC
Emil Tantilov (3):
ixgbe: cleanup some register reads
ixgbe: fix FCRTL/H register dump for X540
ixgbe: remove duplicate netif_tx_start_all_queues
Michał Mirosław (1):
ixgb: convert to ndo_fix_features
drivers/net/ethernet/intel/ixgb/ixgb.h | 2 +
drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c | 59 +----------
drivers/net/ethernet/intel/ixgb/ixgb_main.c | 31 +++++-
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 13 ++-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 3 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c | 1 -
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 126 ++++++++++++----------
7 files changed, 112 insertions(+), 123 deletions(-)
--
1.7.6
^ permalink raw reply [flat|nested] 37+ messages in thread
* [net-next 00/11][pull request] Intel Wired LAN Driver Updates
@ 2011-09-16 4:42 Jeff Kirsher
2011-09-16 19:20 ` David Miller
0 siblings, 1 reply; 37+ messages in thread
From: Jeff Kirsher @ 2011-09-16 4:42 UTC (permalink / raw)
To: davem; +Cc: Jeff Kirsher, netdev, gospo
The following series contains updates to ixgbe only. These are primarily
cleanups of the ixgbe driver. The first two patches of the series:
ixgbe: Change default Tx work limit size to 256 buffers
ixgbe: consolidate all MSI-X ring interrupts and poll routines into one
are re-worked based on previous community feedback (Dave and Ben).
The following are changes since commit 4bc71cb983fd2844e603bf633df2bb53385182d2:
net: consolidate and fix ethtool_ops->get_settings calling
and are available in the git repository at:
git://github.com/Jkirsher/net-next.git
Alexander Duyck (11):
ixgbe: Change default Tx work limit size to 256 buffers
v2 ixgbe: consolidate all MSI-X ring interrupts and poll routines
into one
ixgbe: cleanup allocation and freeing of IRQ affinity hint
ixgbe: Use ring->dev instead of adapter->pdev->dev when updating DCA
ixgbe: commonize ixgbe_map_rings_to_vectors to work for all interrupt
types
ixgbe: Drop unnecessary adapter->hw dereference in loopback test
setup
ixgbe: combine PCI_VDEVICE and board declaration to same line
ixgbe: Update TXDCTL configuration to correctly handle WTHRESH
ixgbe: cleanup reset paths
ixgbe: cleanup configuration of EITRSEL and VF reset path
ixgbe: Correctly name and handle MSI-X other interrupt
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | 13 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | 40 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 18 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 775 ++++++++--------------
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c | 72 +--
7 files changed, 341 insertions(+), 580 deletions(-)
--
1.7.6
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
2011-09-16 4:42 Jeff Kirsher
@ 2011-09-16 19:20 ` David Miller
0 siblings, 0 replies; 37+ messages in thread
From: David Miller @ 2011-09-16 19:20 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 15 Sep 2011 21:42:42 -0700
> The following series contains updates to ixgbe only. These are primarily
> cleanups of the ixgbe driver. The first two patches of the series:
>
> ixgbe: Change default Tx work limit size to 256 buffers
> ixgbe: consolidate all MSI-X ring interrupts and poll routines into one
>
> are re-worked based on previous community feedback (Dave and Ben).
>
> The following are changes since commit 4bc71cb983fd2844e603bf633df2bb53385182d2:
> net: consolidate and fix ethtool_ops->get_settings calling
> and are available in the git repository at:
> git://github.com/Jkirsher/net-next.git
Pulled, thanks Jeff.
^ permalink raw reply [flat|nested] 37+ messages in thread
end of thread, other threads:[~2014-05-14 8:54 UTC | newest]
Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-13 14:03 [net-next 00/11][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2012-11-13 14:03 ` [net-next 01/11] ixgbe: Do not use DCA to prefetch the entire packet into the cache Jeff Kirsher
2012-11-13 14:13 ` Eric Dumazet
2012-11-13 17:41 ` Alexander Duyck
2012-11-13 14:03 ` [net-next 02/11] ixgbevf: make sure probe fails on MSI-X enable error Jeff Kirsher
2012-11-13 14:03 ` [net-next 03/11] ixgbevf: fix possible use of uninitialized variable Jeff Kirsher
2012-11-13 14:03 ` [net-next 04/11] ixgbevf: Add flag to indicate when rx is in net poll Jeff Kirsher
2012-11-13 19:20 ` David Miller
2012-11-13 19:25 ` Greg Rose
2012-11-13 14:03 ` [net-next 05/11] ixgbevf: Reduce size of maximum rx buffer Jeff Kirsher
2012-11-13 14:03 ` [net-next 06/11] igb: Clear Go Link Disconnect for 82580 and later devices Jeff Kirsher
2012-11-13 14:03 ` [net-next 07/11] igb: Support for modifying UDP RSS flow hashing Jeff Kirsher
2012-11-13 14:03 ` [net-next 08/11] igb: Make TSO check for CHECKSUM_PARTIAL to avoid skb_is_gso check Jeff Kirsher
2012-11-13 14:03 ` [net-next 09/11] igb: Update igb Tx flags to improve code efficiency Jeff Kirsher
2012-11-13 14:03 ` [net-next 10/11] igb: Improve performance and reduce size of igb_tx_map Jeff Kirsher
2012-11-13 14:03 ` [net-next 11/11] igb: Ethtool support to enable and disable EEE Jeff Kirsher
2012-11-13 19:19 ` [net-next 00/11][pull request] Intel Wired LAN Driver Updates David Miller
-- strict thread matches above, loose matches on Subject: below --
2014-05-14 8:54 Jeff Kirsher
2013-10-29 12:02 Jeff Kirsher
2013-10-29 22:58 ` David Miller
2013-10-24 15:27 Jeff Kirsher
2013-10-26 4:30 ` David Miller
2013-04-12 11:24 Jeff Kirsher
2012-02-25 5:49 Jeff Kirsher
2012-02-26 1:31 ` David Miller
2012-02-07 12:33 Jeff Kirsher
2012-02-07 17:27 ` David Miller
2012-01-27 3:08 Jeff Kirsher
2012-01-28 1:47 ` David Miller
2012-01-03 19:19 Jeff Kirsher
2011-10-08 6:47 Jeff Kirsher
2011-10-08 6:52 ` Jeff Kirsher
2011-09-30 5:24 Jeff Kirsher
2011-09-30 18:35 ` Jeff Kirsher
2011-09-17 2:15 Jeff Kirsher
2011-09-16 4:42 Jeff Kirsher
2011-09-16 19:20 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).