* [PATCH net] be2net: call napi_disable() for all event queues
From: Ivan Vecera @ 2013-11-26 16:54 UTC (permalink / raw)
To: netdev; +Cc: Sathya Perla, Subbu Seetharaman, Ajit Khaparde
The recent be2net commit 6384a4d (adds a support for busy polling)
introduces a regression that results in kernel crash. It incorrectly
modified be_close() so napi_disable() is called only for the first queue.
This breaks a correct pairing of napi_enable/_disable for the rest
of event queues and causes a crash in subsequent be_open() call.
Cc: Sathya Perla <sathya.perla@emulex.com>
Cc: Subbu Seetharaman <subbu.seetharaman@emulex.com>
Cc: Ajit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: Ivan Vecera <ivecera@redhat.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 78a0e85..0aec4d2 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2663,8 +2663,8 @@ static int be_close(struct net_device *netdev)
napi_disable(&eqo->napi);
be_disable_busy_poll(eqo);
}
- adapter->flags &= ~BE_FLAGS_NAPI_ENABLED;
}
+ adapter->flags &= ~BE_FLAGS_NAPI_ENABLED;
be_async_mcc_disable(adapter);
--
1.8.3.2
^ permalink raw reply related
* [PATCH 0/17 v2] net: Add rxhash utility hash functions
From: Tom Herbert @ 2013-11-26 17:22 UTC (permalink / raw)
To: netdev, davem
v2: Change occurences of 'get' to be 'set' in commit logs.
This patch series introduce skb_set_rxhash and skb_clear_rxhash
which are called to set the rxhash (from network drivers) and
to clear the rxhash. This API should be used instead of updating
fields in the skbuff directly.
Verified that the drivers compiled with the changes (verified
bnx2x is operational).
By my count 15 NIC drivers set the rxhash, but only two of them
mark the hash as L4. It looks like several of those have capability
do determine an L4 hash was done.
^ permalink raw reply
* [PATCH v2 01/17] net: Add utility function to clear rxhash
From: Tom Herbert @ 2013-11-26 17:22 UTC (permalink / raw)
To: netdev, davem
In several places 'skb->rxhash = 0' is being done to clear the
rxhash value in an skb. This does not clear l4_rxhash which could
still be set so that the rxhash wouldn't be recalculated on subsequent
call to skb_get_rxhash. This patch adds an explict function to clear
all the rxhash related information in the skb properly.
Signed-off-by: Tom Herbert <therbert@google.com>
---
include/linux/skbuff.h | 6 ++++++
net/ipv4/ip_fragment.c | 2 +-
net/ipv4/ip_tunnel_core.c | 4 ++--
net/openvswitch/actions.c | 10 +++++-----
4 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 215b5ea..76d3aa9 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -712,6 +712,12 @@ static inline __u32 skb_get_rxhash(struct sk_buff *skb)
return skb->rxhash;
}
+static inline void skb_clear_rxhash(struct sk_buff *skb)
+{
+ skb->rxhash = 0;
+ skb->l4_rxhash = 0;
+}
+
#ifdef NET_SKBUFF_DATA_USES_OFFSET
static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
{
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
index 2481993..3bc1d0d 100644
--- a/net/ipv4/ip_fragment.c
+++ b/net/ipv4/ip_fragment.c
@@ -704,7 +704,7 @@ struct sk_buff *ip_check_defrag(struct sk_buff *skb, u32 user)
memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
if (ip_defrag(skb, user))
return NULL;
- skb->rxhash = 0;
+ skb_clear_rxhash(skb);
}
}
return skb;
diff --git a/net/ipv4/ip_tunnel_core.c b/net/ipv4/ip_tunnel_core.c
index 42ffbc8..2148c1d 100644
--- a/net/ipv4/ip_tunnel_core.c
+++ b/net/ipv4/ip_tunnel_core.c
@@ -56,7 +56,7 @@ int iptunnel_xmit(struct rtable *rt, struct sk_buff *skb,
skb_scrub_packet(skb, xnet);
- skb->rxhash = 0;
+ skb_clear_rxhash(skb);
skb_dst_set(skb, &rt->dst);
memset(IPCB(skb), 0, sizeof(*IPCB(skb)));
@@ -108,7 +108,7 @@ int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto)
nf_reset(skb);
secpath_reset(skb);
if (!skb->l4_rxhash)
- skb->rxhash = 0;
+ skb_clear_rxhash(skb);
skb_dst_drop(skb);
skb->vlan_tci = 0;
skb_set_queue_mapping(skb, 0);
diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c
index 65cfaa8..ab0d925 100644
--- a/net/openvswitch/actions.c
+++ b/net/openvswitch/actions.c
@@ -165,7 +165,7 @@ static void set_ip_addr(struct sk_buff *skb, struct iphdr *nh,
}
csum_replace4(&nh->check, *addr, new_addr);
- skb->rxhash = 0;
+ skb_clear_rxhash(skb);
*addr = new_addr;
}
@@ -199,7 +199,7 @@ static void set_ipv6_addr(struct sk_buff *skb, u8 l4_proto,
if (recalculate_csum)
update_ipv6_checksum(skb, l4_proto, addr, new_addr);
- skb->rxhash = 0;
+ skb_clear_rxhash(skb);
memcpy(addr, new_addr, sizeof(__be32[4]));
}
@@ -296,7 +296,7 @@ static void set_tp_port(struct sk_buff *skb, __be16 *port,
{
inet_proto_csum_replace2(check, skb, *port, new_port, 0);
*port = new_port;
- skb->rxhash = 0;
+ skb_clear_rxhash(skb);
}
static void set_udp_port(struct sk_buff *skb, __be16 *port, __be16 new_port)
@@ -310,7 +310,7 @@ static void set_udp_port(struct sk_buff *skb, __be16 *port, __be16 new_port)
uh->check = CSUM_MANGLED_0;
} else {
*port = new_port;
- skb->rxhash = 0;
+ skb_clear_rxhash(skb);
}
}
@@ -381,7 +381,7 @@ static int set_sctp(struct sk_buff *skb,
/* Carry any checksum errors through. */
sh->checksum = old_csum ^ old_correct_csum ^ new_csum;
- skb->rxhash = 0;
+ skb_clear_rxhash(skb);
}
return 0;
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 02/17] net: Add utility function to set the rxhash
From: Tom Herbert @ 2013-11-26 17:22 UTC (permalink / raw)
To: netdev, davem
The function skb_set_rxash was added for drivers to call to set
the rxhash in an skb. The type of hash is also specified as
a parameter (L2, L3, L4, or unknown type).
Signed-off-by: Tom Herbert <therbert@google.com>
---
include/linux/skbuff.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 76d3aa9..25f190e 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -703,6 +703,20 @@ unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
unsigned int to, struct ts_config *config,
struct ts_state *state);
+enum rxhash_types {
+ RXHASH_TYPE_NONE, /* Undefined type */
+ RXHASH_TYPE_L2, /* Uses L2 information (addresses) */
+ RXHASH_TYPE_L3, /* Uses L3 information */
+ RXHASH_TYPE_L4, /* Uses L4 information (ports) */
+};
+
+static inline void
+skb_set_rxhash(struct sk_buff *skb, __u32 hash, enum rxhash_types type)
+{
+ skb->l4_rxhash = (type == RXHASH_TYPE_L4);
+ skb->rxhash = hash;
+}
+
void __skb_get_rxhash(struct sk_buff *skb);
static inline __u32 skb_get_rxhash(struct sk_buff *skb)
{
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 03/17] net: bnx2 calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:22 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/broadcom/bnx2.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index d9980ad..0d7bea2b 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -3234,7 +3234,8 @@ bnx2_rx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
if ((bp->dev->features & NETIF_F_RXHASH) &&
((status & L2_FHDR_STATUS_USE_RXHASH) ==
L2_FHDR_STATUS_USE_RXHASH))
- skb->rxhash = rx_hdr->l2_fhdr_hash;
+ skb_set_rxhash(skb, rx_hdr->l2_fhdr_hash,
+ RXHASH_TYPE_L3);
skb_record_rx_queue(skb, bnapi - &bp->bnx2_napi[0]);
napi_gro_receive(&bnapi->napi, skb);
--
1.8.4.1
^ permalink raw reply related
* r8169 Wake on Lan
From: Pablo Cholaky @ 2013-11-26 17:23 UTC (permalink / raw)
To: netdev
Hi there:
I have a HP ENVY laptop with this RealTek, and my laptop don't have a
BIOS option to disable WOL. I'm currently using a script on start and
shutdown to disable WOL, but could you guys make a module param to
enable/disable WOL?
This freaking WOL eats a lot of battery on my laptop and my scripts
don't work when I'm using a hibernation or booting a Linux ISO per
example. I don't know really if many HP laptops have this RealTek, but
a lot of HP laptops have this annoying problem (just see on Google hp
WOL battery drain). Seems like HP is only giving a bios option to
enterprise, and for users let a OS dependent option (Windows will
disable on boot).
Thank you very much dudes ;)
--
Pablo Cholaky
Linux user and developer
Slash.cl Owner
Blablabla
^ permalink raw reply
* [PATCH v2 05/17] net: cxgb4 calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:27 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/chelsio/cxgb4/sge.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
index ac311f5..c9fd598 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
@@ -1630,7 +1630,8 @@ static void do_gro(struct sge_eth_rxq *rxq, const struct pkt_gl *gl,
skb->ip_summed = CHECKSUM_UNNECESSARY;
skb_record_rx_queue(skb, rxq->rspq.idx);
if (rxq->rspq.netdev->features & NETIF_F_RXHASH)
- skb->rxhash = (__force u32)pkt->rsshdr.hash_val;
+ skb_set_rxhash(skb, (__force u32)pkt->rsshdr.hash_val,
+ RXHASH_TYPE_L3);
if (unlikely(pkt->vlan_ex)) {
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), ntohs(pkt->vlan));
@@ -1686,7 +1687,8 @@ int t4_ethrx_handler(struct sge_rspq *q, const __be64 *rsp,
skb->protocol = eth_type_trans(skb, q->netdev);
skb_record_rx_queue(skb, q->idx);
if (skb->dev->features & NETIF_F_RXHASH)
- skb->rxhash = (__force u32)pkt->rsshdr.hash_val;
+ skb_set_rxhash(skb, (__force u32)pkt->rsshdr.hash_val,
+ RXHASH_TYPE_L3);
rxq->stats.pkts++;
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 07/17] net: emulex-benet calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:27 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 741d3bf..4678858 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -1581,7 +1581,7 @@ static void be_rx_compl_process(struct be_rx_obj *rxo, struct napi_struct *napi,
skb->protocol = eth_type_trans(skb, netdev);
skb_record_rx_queue(skb, rxo - &adapter->rx_obj[0]);
if (netdev->features & NETIF_F_RXHASH)
- skb->rxhash = rxcp->rss_hash;
+ skb_set_rxhash(skb, rxcp->rss_hash, RXHASH_TYPE_L3);
skb_mark_napi_id(skb, napi);
if (rxcp->vlanf)
@@ -1639,7 +1639,7 @@ static void be_rx_compl_process_gro(struct be_rx_obj *rxo,
skb->ip_summed = CHECKSUM_UNNECESSARY;
skb_record_rx_queue(skb, rxo - &adapter->rx_obj[0]);
if (adapter->netdev->features & NETIF_F_RXHASH)
- skb->rxhash = rxcp->rss_hash;
+ skb_set_rxhash(skb, rxcp->rss_hash, RXHASH_TYPE_L3);
skb_mark_napi_id(skb, napi);
if (rxcp->vlanf)
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 08/17] net: e1000e calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:27 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/intel/e1000e/netdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 4ef7867..128534f 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -885,7 +885,7 @@ static inline void e1000_rx_hash(struct net_device *netdev, __le32 rss,
struct sk_buff *skb)
{
if (netdev->features & NETIF_F_RXHASH)
- skb->rxhash = le32_to_cpu(rss);
+ skb_set_rxhash(skb, le32_to_cpu(rss), RXHASH_TYPE_L3);
}
/**
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 04/17] net: bnx2x calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:22 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index dcafbda..7c1d45d 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -728,8 +728,8 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,
skb_reserve(skb, pad + NET_SKB_PAD);
skb_put(skb, len);
- skb->rxhash = tpa_info->rxhash;
- skb->l4_rxhash = tpa_info->l4_rxhash;
+ skb_set_rxhash(skb, tpa_info->rxhash,
+ tpa_info->l4_rxhash ? RXHASH_TYPE_L4 : RXHASH_TYPE_L3);
skb->protocol = eth_type_trans(skb, bp->dev);
skb->ip_summed = CHECKSUM_UNNECESSARY;
@@ -846,6 +846,7 @@ int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
enum eth_rx_cqe_type cqe_fp_type;
u16 len, pad, queue;
u8 *data;
+ u32 rxhash;
bool l4_rxhash;
#ifdef BNX2X_STOP_ON_ERROR
@@ -987,8 +988,9 @@ reuse_rx:
skb->protocol = eth_type_trans(skb, bp->dev);
/* Set Toeplitz hash for a none-LRO skb */
- skb->rxhash = bnx2x_get_rxhash(bp, cqe_fp, &l4_rxhash);
- skb->l4_rxhash = l4_rxhash;
+ rxhash = bnx2x_get_rxhash(bp, cqe_fp, &l4_rxhash);
+ skb_set_rxhash(skb, rxhash,
+ l4_rxhash ? RXHASH_TYPE_L4 : RXHASH_TYPE_L3);
skb_checksum_none_assert(skb);
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 10/17] net: igb calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:31 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/intel/igb/igb_main.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index ebe6370..4e8e2b2 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -6412,7 +6412,9 @@ static inline void igb_rx_hash(struct igb_ring *ring,
struct sk_buff *skb)
{
if (ring->netdev->features & NETIF_F_RXHASH)
- skb->rxhash = le32_to_cpu(rx_desc->wb.lower.hi_dword.rss);
+ skb_set_rxhash(skb,
+ le32_to_cpu(rx_desc->wb.lower.hi_dword.rss),
+ RXHASH_TYPE_L3);
}
/**
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 11/17] net: ixgbe calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:31 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index bd8f523..9973eaf 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -1233,7 +1233,9 @@ static inline void ixgbe_rx_hash(struct ixgbe_ring *ring,
struct sk_buff *skb)
{
if (ring->netdev->features & NETIF_F_RXHASH)
- skb->rxhash = le32_to_cpu(rx_desc->wb.lower.hi_dword.rss);
+ skb_set_rxhash(skb,
+ le32_to_cpu(rx_desc->wb.lower.hi_dword.rss),
+ RXHASH_TYPE_L3);
}
#ifdef IXGBE_FCOE
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 12/17] net: sky2 calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:31 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/marvell/sky2.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index a7df981..abfe57a 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -2495,7 +2495,7 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2,
skb_copy_from_linear_data(re->skb, skb->data, length);
skb->ip_summed = re->skb->ip_summed;
skb->csum = re->skb->csum;
- skb->rxhash = re->skb->rxhash;
+ skb_set_rxhash(skb, re->skb->rxhash, RXHASH_TYPE_L3);
skb->vlan_proto = re->skb->vlan_proto;
skb->vlan_tci = re->skb->vlan_tci;
@@ -2503,7 +2503,7 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2,
length, PCI_DMA_FROMDEVICE);
re->skb->vlan_proto = 0;
re->skb->vlan_tci = 0;
- re->skb->rxhash = 0;
+ skb_clear_rxhash(re->skb);
re->skb->ip_summed = CHECKSUM_NONE;
skb_put(skb, length);
}
@@ -2723,7 +2723,7 @@ static void sky2_rx_hash(struct sky2_port *sky2, u32 status)
struct sk_buff *skb;
skb = sky2->rx_ring[sky2->rx_next].skb;
- skb->rxhash = le32_to_cpu(status);
+ skb_set_rxhash(skb, le32_to_cpu(status), RXHASH_TYPE_L3);
}
/* Process status response ring */
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 13/17] net: mlx4 calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:31 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/mellanox/mlx4/en_rx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
index 07a1d0f..3e48c44 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
@@ -747,7 +747,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud
}
if (dev->features & NETIF_F_RXHASH)
- gro_skb->rxhash = be32_to_cpu(cqe->immed_rss_invalid);
+ skb_set_rxhash(gro_skb, be32_to_cpu(cqe->immed_rss_invalid), RXHASH_TYPE_L3);
skb_record_rx_queue(gro_skb, cq->ring);
@@ -789,7 +789,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud
skb_record_rx_queue(skb, cq->ring);
if (dev->features & NETIF_F_RXHASH)
- skb->rxhash = be32_to_cpu(cqe->immed_rss_invalid);
+ skb_set_rxhash(skb, be32_to_cpu(cqe->immed_rss_invalid), RXHASH_TYPE_L3);
if ((be32_to_cpu(cqe->vlan_my_qpn) &
MLX4_CQE_VLAN_PRESENT_MASK) &&
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 14/17] net: vxge calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:32 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/neterion/vxge/vxge-main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index 8614eeb..17749a2 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -507,7 +507,8 @@ vxge_rx_1b_compl(struct __vxge_hw_ring *ringh, void *dtr,
* if rss is disabled/enabled, so key off of that.
*/
if (ext_info.rth_value)
- skb->rxhash = ext_info.rth_value;
+ skb_set_rxhash(skb, ext_info.rth_value,
+ RXHASH_TYPE_L3);
vxge_rx_complete(ring, skb, ext_info.vlan,
pkt_length, &ext_info);
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 09/17] net: i40e calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:27 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index f1f03bc..203048d 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1029,7 +1029,8 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
goto next_desc;
}
- skb->rxhash = i40e_rx_hash(rx_ring, rx_desc);
+ skb_set_rxhash(skb, i40e_rx_hash(rx_ring, rx_desc),
+ RXHASH_TYPE_L3);
i40e_rx_checksum(vsi, skb, rx_status, rx_error);
/* probably a little skewed due to removing CRC */
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 15/17] net: sfc calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:34 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/sfc/rx.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/sfc/rx.c b/drivers/net/ethernet/sfc/rx.c
index 8f09e68..b51466e 100644
--- a/drivers/net/ethernet/sfc/rx.c
+++ b/drivers/net/ethernet/sfc/rx.c
@@ -439,7 +439,8 @@ efx_rx_packet_gro(struct efx_channel *channel, struct efx_rx_buffer *rx_buf,
}
if (efx->net_dev->features & NETIF_F_RXHASH)
- skb->rxhash = efx_rx_buf_hash(efx, eh);
+ skb_set_rxhash(skb, efx_rx_buf_hash(efx, eh),
+ RXHASH_TYPE_L3);
skb->ip_summed = ((rx_buf->flags & EFX_RX_PKT_CSUMMED) ?
CHECKSUM_UNNECESSARY : CHECKSUM_NONE);
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 16/17] net: sun-niu calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:34 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/sun/niu.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index 388540f..805808d 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -3493,10 +3493,12 @@ static int niu_process_rx_pkt(struct napi_struct *napi, struct niu *np,
rh = (struct rx_pkt_hdr1 *) skb->data;
if (np->dev->features & NETIF_F_RXHASH)
- skb->rxhash = ((u32)rh->hashval2_0 << 24 |
- (u32)rh->hashval2_1 << 16 |
- (u32)rh->hashval1_1 << 8 |
- (u32)rh->hashval1_2 << 0);
+ skb_set_rxhash(skb,
+ ((u32)rh->hashval2_0 << 24 |
+ (u32)rh->hashval2_1 << 16 |
+ (u32)rh->hashval1_1 << 8 |
+ (u32)rh->hashval1_2 << 0),
+ RXHASH_TYPE_L3);
skb_pull(skb, sizeof(*rh));
rp->rx_packets++;
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 17/17] net: vmxnet3 calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:34 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/vmxnet3/vmxnet3_drv.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 7e2788c..88d8ff8 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -1235,7 +1235,8 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
#ifdef VMXNET3_RSS
if (rcd->rssType != VMXNET3_RCD_RSS_TYPE_NONE &&
(adapter->netdev->features & NETIF_F_RXHASH))
- ctx->skb->rxhash = le32_to_cpu(rcd->rssHash);
+ skb_set_rxhash(skb, le32_to_cpu(rcd->rssHash),
+ RXHASH_TYPE_L3);
#endif
skb_put(ctx->skb, rcd->len);
--
1.8.4.1
^ permalink raw reply related
* [PATCH v2 06/17] net: cisco-enic calls skb_set_rxhash
From: Tom Herbert @ 2013-11-26 17:27 UTC (permalink / raw)
To: netdev, davem
Drivers should call skb_set_rxhash to set the rxhash and its type
in an skbuff.
Signed-off-by: Tom Herbert <therbert@google.com>
---
drivers/net/ethernet/cisco/enic/enic_main.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index ff78dfa..ea30551 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -1036,11 +1036,12 @@ static void enic_rq_indicate_buf(struct vnic_rq *rq,
skb->protocol = eth_type_trans(skb, netdev);
skb_record_rx_queue(skb, q_number);
if (netdev->features & NETIF_F_RXHASH) {
- skb->rxhash = rss_hash;
- if (rss_type & (NIC_CFG_RSS_HASH_TYPE_TCP_IPV6_EX |
- NIC_CFG_RSS_HASH_TYPE_TCP_IPV6 |
- NIC_CFG_RSS_HASH_TYPE_TCP_IPV4))
- skb->l4_rxhash = true;
+ skb_set_rxhash(skb, rss_hash,
+ (rss_type & (NIC_CFG_RSS_HASH_TYPE_TCP_IPV6_EX |
+ NIC_CFG_RSS_HASH_TYPE_TCP_IPV6 |
+ NIC_CFG_RSS_HASH_TYPE_TCP_IPV4)) ?
+ RXHASH_TYPE_L4 : RXHASH_TYPE_L3);
+
}
if ((netdev->features & NETIF_F_RXCSUM) && !csum_not_calc) {
--
1.8.4.1
^ permalink raw reply related
* [PATCH] macvtap: Do not double-count received packets
From: Vlad Yasevich @ 2013-11-26 17:37 UTC (permalink / raw)
To: netdev; +Cc: mst, Vlad Yasevich
Currently macvlan will count received packets after calling each
vlans receive handler. Macvtap attempts to count the packet
yet again when the user reads the packet from the tap socket.
This code doesn't do this consistently either. Remove the
counting from macvap and let only macvlan count received
packets.
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
---
drivers/net/macvtap.c | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
index dc76670..50f8dce 100644
--- a/drivers/net/macvtap.c
+++ b/drivers/net/macvtap.c
@@ -767,7 +767,6 @@ static ssize_t macvtap_put_user(struct macvtap_queue *q,
const struct sk_buff *skb,
const struct iovec *iv, int len)
{
- struct macvlan_dev *vlan;
int ret;
int vnet_hdr_len = 0;
int vlan_offset = 0;
@@ -821,15 +820,6 @@ static ssize_t macvtap_put_user(struct macvtap_queue *q,
copied += len;
done:
- rcu_read_lock();
- vlan = rcu_dereference(q->vlan);
- if (vlan) {
- preempt_disable();
- macvlan_count_rx(vlan, copied - vnet_hdr_len, ret == 0, 0);
- preempt_enable();
- }
- rcu_read_unlock();
-
return ret ? ret : copied;
}
--
1.8.4.2
^ permalink raw reply related
* Re: [PATCH 1/5] tg3: Convert to use hwmon_device_register_with_groups
From: Nithin Nayak Sujir @ 2013-11-26 17:50 UTC (permalink / raw)
To: Guenter Roeck, netdev
Cc: David S. Miller, Jeff Kirsher, Jesse Brandeburg, Bruce Allan,
Carolyn Wyborny, Don Skidmore, Greg Rose, Michael Chan,
e1000-devel, lm-sensors
In-Reply-To: <52940BD4.9000605@roeck-us.net>
On 11/25/2013 06:47 PM, Guenter Roeck wrote:
> On 11/25/2013 05:52 PM, Nithin Nayak Sujir wrote:
>>
>>
>> On 11/22/2013 10:07 PM, Guenter Roeck wrote:
>>> Use new hwmon API to simplify code, provide missing mandatory 'name'
>>> sysfs attribute, and attach hwmon attributes to hwmon device instead
>>> of pci device.
>>>
>>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>>> ---
>>> drivers/net/ethernet/broadcom/tg3.c | 25 ++++++-------------------
>>> 1 file changed, 6 insertions(+), 19 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/broadcom/tg3.c
>>> b/drivers/net/ethernet/broadcom/tg3.c
>>> index a9e0684..369b736 100644
>>> --- a/drivers/net/ethernet/broadcom/tg3.c
>>> +++ b/drivers/net/ethernet/broadcom/tg3.c
>>> @@ -10629,10 +10629,8 @@ static void tg3_sd_scan_scratchpad(struct tg3 *tp,
>>> struct tg3_ocir *ocir)
>>> static ssize_t tg3_show_temp(struct device *dev,
>>> struct device_attribute *devattr, char *buf)
>>> {
>>> - struct pci_dev *pdev = to_pci_dev(dev);
>>> - struct net_device *netdev = pci_get_drvdata(pdev);
>>> - struct tg3 *tp = netdev_priv(netdev);
>>> struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
>>> + struct tg3 *tp = dev_get_drvdata(dev);
>>
>>
>> Shouldn't this be
>> struct tg3 *tp = netdev_priv(dev_get_drvdata(dev));
>>
>
> 'struct tg3 *tp' is attached to the hwmon device in
> hwmon_device_register_with_groups(), so it can be retrieved
> with dev_get_drvdata() from there. Keep in mind that 'dev'
> is no longer the pci device but the hwmon device.
>
Ah, I see.
Acked-by: Nithin Nayak Sujir <nsujir@broadcom.com>
> Guenter
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply
* Re: [PATCH] ipv6 addrconf: source address selection, Rule 7: Prefer temporary addresses (RFC 6724)
From: Florent Fourcot @ 2013-11-26 17:58 UTC (permalink / raw)
To: Hannes Frederic Sowa
Cc: fx.lebail, netdev, David S. Miller, Alexey Kuznetsov,
James Morris, Hideaki YOSHIFUJI, Patrick McHardy, dcbw, jiri
In-Reply-To: <20131126085404.GA20630@order.stressinduktion.org>
>> The RFC 6724 change the default recommendation for source address selection
>> Rule 7 to prefer temporary addresses rather than public addresses,
>> while providing an administrative override.
>>
>> The administrative override is based on the prefer_src_public sysctl.
>
> I like the idea and it could be useful in addition to the new
> IFA_F_MANAGETEMPADDR flag which should show up any time soon.
>
I like the principle of the idea too, but is it acceptable to break the
user space compatibility?
If the patch is accepted, someone with the value "1" in use_tempaddr
will have a big surprise with a newer kernel (I do not see any use case
to set this option to 1, but maybe...).
Regards,
Florent.
^ permalink raw reply
* RE: loop on reset adapter with ixgbe
From: Tantilov, Emil S @ 2013-11-26 18:47 UTC (permalink / raw)
To: William Dauchy, Skidmore, Donald C
Cc: netdev@vger.kernel.org, Keller, Jacob E, Fastabend, John R,
Potenza, Leonardo
In-Reply-To: <20131126130410.GD2849@gandi.net>
Could you please send the complete output from dmesg along with the stats (ethtool -S) from the interface and also your .config from your kernel?
You can send the attachments directly to me or Don, or better yet open a bug at e1000.sf.net if possible.
Thanks,
Emil
>-----Original Message-----
>From: William Dauchy [mailto:william@gandi.net]
>Sent: Tuesday, November 26, 2013 5:04 AM
>To: Skidmore, Donald C
>Cc: William Dauchy; netdev@vger.kernel.org; Keller, Jacob E;
>Fastabend, John R; Tantilov, Emil S; Potenza, Leonardo
>Subject: Re: loop on reset adapter with ixgbe
>
>On Nov20 18:58, Skidmore, Donald C wrote:
>> I also just noticed your firmware looks in correct. What
>is the DevID for your device?
>
>might be a stupid question, but which id are you talking
>about? How can
>I get it?
>
>> Likewise do you have another NIC and if so could you check
>it's firmware-version?
>
>I have some NIC with the same firmware without any problem.
>
>Regards,
>--
>William
^ permalink raw reply
* Re: [PATCH] phy: Add Vitesse 8514 phy ID
From: Shruti Kanetkar @ 2013-11-26 18:38 UTC (permalink / raw)
To: shh.xie@gmail.com; +Cc: netdev@vger.kernel.org, David Miller
Hello Shao-Hui,
<shh.xie@gmail.com> wrote in message news:<1385354449-2943-1-git-send-email-shh.xie@gmail.com>...
> From: Shaohui Xie <Shaohui.Xie@freescale.com>
>
> Phy is compatible with Vitesse 82xx
>
> Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
> ---
> drivers/net/phy/vitesse.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
Ack-ed by: Shruti Kanetkar <Shruti@freescale.com>
Regards,
Shruti.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox