diff options
author | Stanislav Fomichev <sdf@google.com> | 2019-04-22 11:55:48 -0400 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2019-04-23 12:36:34 -0400 |
commit | c43f1255b866b423d2381f77eaa2cbc64a9c49aa (patch) | |
tree | 9bac3c053cce8c9a6ff3091f19cbd0af608adfca /drivers | |
parent | 9b52e3f267a6835efd50ed9002d530666d16a411 (diff) |
net: pass net_device argument to the eth_get_headlen
Update all users of eth_get_headlen to pass network device, fetch
network namespace from it and pass it down to the flow dissector.
This commit is a noop until administrator inserts BPF flow dissector
program.
Cc: Maxim Krasnyansky <maxk@qti.qualcomm.com>
Cc: Saeed Mahameed <saeedm@mellanox.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: intel-wired-lan@lists.osuosl.org
Cc: Yisen Zhuang <yisen.zhuang@huawei.com>
Cc: Salil Mehta <salil.mehta@huawei.com>
Cc: Michael Chan <michael.chan@broadcom.com>
Cc: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/aquantia/atlantic/aq_ring.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/fm10k/fm10k_main.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/iavf/iavf_txrx.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ice/ice_txrx.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 2 | ||||
-rw-r--r-- | drivers/net/tun.c | 3 |
14 files changed, 18 insertions, 14 deletions
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c index c64e2fb5a4f1..350e385528fd 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c | |||
@@ -354,7 +354,8 @@ int aq_ring_rx_clean(struct aq_ring_s *self, | |||
354 | 354 | ||
355 | hdr_len = buff->len; | 355 | hdr_len = buff->len; |
356 | if (hdr_len > AQ_CFG_RX_HDR_SIZE) | 356 | if (hdr_len > AQ_CFG_RX_HDR_SIZE) |
357 | hdr_len = eth_get_headlen(aq_buf_vaddr(&buff->rxdata), | 357 | hdr_len = eth_get_headlen(skb->dev, |
358 | aq_buf_vaddr(&buff->rxdata), | ||
358 | AQ_CFG_RX_HDR_SIZE); | 359 | AQ_CFG_RX_HDR_SIZE); |
359 | 360 | ||
360 | memcpy(__skb_put(skb, hdr_len), aq_buf_vaddr(&buff->rxdata), | 361 | memcpy(__skb_put(skb, hdr_len), aq_buf_vaddr(&buff->rxdata), |
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 6528a597367b..526f36dcb204 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c | |||
@@ -899,7 +899,7 @@ static struct sk_buff *bnxt_rx_page_skb(struct bnxt *bp, | |||
899 | DMA_ATTR_WEAK_ORDERING); | 899 | DMA_ATTR_WEAK_ORDERING); |
900 | 900 | ||
901 | if (unlikely(!payload)) | 901 | if (unlikely(!payload)) |
902 | payload = eth_get_headlen(data_ptr, len); | 902 | payload = eth_get_headlen(bp->dev, data_ptr, len); |
903 | 903 | ||
904 | skb = napi_alloc_skb(&rxr->bnapi->napi, payload); | 904 | skb = napi_alloc_skb(&rxr->bnapi->napi, payload); |
905 | if (!skb) { | 905 | if (!skb) { |
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c index 297b95c1b3c1..65b985acae38 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c | |||
@@ -598,7 +598,7 @@ static int hns_nic_poll_rx_skb(struct hns_nic_ring_data *ring_data, | |||
598 | } else { | 598 | } else { |
599 | ring->stats.seg_pkt_cnt++; | 599 | ring->stats.seg_pkt_cnt++; |
600 | 600 | ||
601 | pull_len = eth_get_headlen(va, HNS_RX_HEAD_SIZE); | 601 | pull_len = eth_get_headlen(ndev, va, HNS_RX_HEAD_SIZE); |
602 | memcpy(__skb_put(skb, pull_len), va, | 602 | memcpy(__skb_put(skb, pull_len), va, |
603 | ALIGN(pull_len, sizeof(long))); | 603 | ALIGN(pull_len, sizeof(long))); |
604 | 604 | ||
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index 176d4b965709..5f7b51c6ee91 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | |||
@@ -2580,7 +2580,7 @@ static int hns3_alloc_skb(struct hns3_enet_ring *ring, int length, | |||
2580 | ring->stats.seg_pkt_cnt++; | 2580 | ring->stats.seg_pkt_cnt++; |
2581 | u64_stats_update_end(&ring->syncp); | 2581 | u64_stats_update_end(&ring->syncp); |
2582 | 2582 | ||
2583 | ring->pull_len = eth_get_headlen(va, HNS3_RX_HEAD_SIZE); | 2583 | ring->pull_len = eth_get_headlen(netdev, va, HNS3_RX_HEAD_SIZE); |
2584 | __skb_put(skb, ring->pull_len); | 2584 | __skb_put(skb, ring->pull_len); |
2585 | hns3_nic_reuse_page(skb, ring->frag_num++, ring, ring->pull_len, | 2585 | hns3_nic_reuse_page(skb, ring->frag_num++, ring, ring->pull_len, |
2586 | desc_cb); | 2586 | desc_cb); |
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_main.c b/drivers/net/ethernet/intel/fm10k/fm10k_main.c index 2325cee76211..b4d970e44163 100644 --- a/drivers/net/ethernet/intel/fm10k/fm10k_main.c +++ b/drivers/net/ethernet/intel/fm10k/fm10k_main.c | |||
@@ -280,7 +280,7 @@ static bool fm10k_add_rx_frag(struct fm10k_rx_buffer *rx_buffer, | |||
280 | /* we need the header to contain the greater of either ETH_HLEN or | 280 | /* we need the header to contain the greater of either ETH_HLEN or |
281 | * 60 bytes if the skb->len is less than 60 for skb_pad. | 281 | * 60 bytes if the skb->len is less than 60 for skb_pad. |
282 | */ | 282 | */ |
283 | pull_len = eth_get_headlen(va, FM10K_RX_HDR_LEN); | 283 | pull_len = eth_get_headlen(skb->dev, va, FM10K_RX_HDR_LEN); |
284 | 284 | ||
285 | /* align pull length to size of long to optimize memcpy performance */ | 285 | /* align pull length to size of long to optimize memcpy performance */ |
286 | memcpy(__skb_put(skb, pull_len), va, ALIGN(pull_len, sizeof(long))); | 286 | memcpy(__skb_put(skb, pull_len), va, ALIGN(pull_len, sizeof(long))); |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index 1a95223c9f99..e1931701cd7e 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c | |||
@@ -2035,7 +2035,8 @@ static struct sk_buff *i40e_construct_skb(struct i40e_ring *rx_ring, | |||
2035 | /* Determine available headroom for copy */ | 2035 | /* Determine available headroom for copy */ |
2036 | headlen = size; | 2036 | headlen = size; |
2037 | if (headlen > I40E_RX_HDR_SIZE) | 2037 | if (headlen > I40E_RX_HDR_SIZE) |
2038 | headlen = eth_get_headlen(xdp->data, I40E_RX_HDR_SIZE); | 2038 | headlen = eth_get_headlen(skb->dev, xdp->data, |
2039 | I40E_RX_HDR_SIZE); | ||
2039 | 2040 | ||
2040 | /* align pull length to size of long to optimize memcpy performance */ | 2041 | /* align pull length to size of long to optimize memcpy performance */ |
2041 | memcpy(__skb_put(skb, headlen), xdp->data, | 2042 | memcpy(__skb_put(skb, headlen), xdp->data, |
diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.c b/drivers/net/ethernet/intel/iavf/iavf_txrx.c index b64187753ad6..cf8be63a8a4f 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_txrx.c +++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.c | |||
@@ -1315,7 +1315,7 @@ static struct sk_buff *iavf_construct_skb(struct iavf_ring *rx_ring, | |||
1315 | /* Determine available headroom for copy */ | 1315 | /* Determine available headroom for copy */ |
1316 | headlen = size; | 1316 | headlen = size; |
1317 | if (headlen > IAVF_RX_HDR_SIZE) | 1317 | if (headlen > IAVF_RX_HDR_SIZE) |
1318 | headlen = eth_get_headlen(va, IAVF_RX_HDR_SIZE); | 1318 | headlen = eth_get_headlen(skb->dev, va, IAVF_RX_HDR_SIZE); |
1319 | 1319 | ||
1320 | /* align pull length to size of long to optimize memcpy performance */ | 1320 | /* align pull length to size of long to optimize memcpy performance */ |
1321 | memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); | 1321 | memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); |
diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c index 79043fec0187..259f118c7d8b 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx.c +++ b/drivers/net/ethernet/intel/ice/ice_txrx.c | |||
@@ -699,7 +699,7 @@ ice_construct_skb(struct ice_ring *rx_ring, struct ice_rx_buf *rx_buf, | |||
699 | /* Determine available headroom for copy */ | 699 | /* Determine available headroom for copy */ |
700 | headlen = size; | 700 | headlen = size; |
701 | if (headlen > ICE_RX_HDR_SIZE) | 701 | if (headlen > ICE_RX_HDR_SIZE) |
702 | headlen = eth_get_headlen(va, ICE_RX_HDR_SIZE); | 702 | headlen = eth_get_headlen(skb->dev, va, ICE_RX_HDR_SIZE); |
703 | 703 | ||
704 | /* align pull length to size of long to optimize memcpy performance */ | 704 | /* align pull length to size of long to optimize memcpy performance */ |
705 | memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); | 705 | memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); |
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index acbb5b4f333d..9b8a4bb25327 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c | |||
@@ -8051,7 +8051,7 @@ static struct sk_buff *igb_construct_skb(struct igb_ring *rx_ring, | |||
8051 | /* Determine available headroom for copy */ | 8051 | /* Determine available headroom for copy */ |
8052 | headlen = size; | 8052 | headlen = size; |
8053 | if (headlen > IGB_RX_HDR_LEN) | 8053 | if (headlen > IGB_RX_HDR_LEN) |
8054 | headlen = eth_get_headlen(va, IGB_RX_HDR_LEN); | 8054 | headlen = eth_get_headlen(skb->dev, va, IGB_RX_HDR_LEN); |
8055 | 8055 | ||
8056 | /* align pull length to size of long to optimize memcpy performance */ | 8056 | /* align pull length to size of long to optimize memcpy performance */ |
8057 | memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); | 8057 | memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); |
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index f79728381e8a..e58a6e0dc4d9 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c | |||
@@ -1199,7 +1199,7 @@ static struct sk_buff *igc_construct_skb(struct igc_ring *rx_ring, | |||
1199 | /* Determine available headroom for copy */ | 1199 | /* Determine available headroom for copy */ |
1200 | headlen = size; | 1200 | headlen = size; |
1201 | if (headlen > IGC_RX_HDR_LEN) | 1201 | if (headlen > IGC_RX_HDR_LEN) |
1202 | headlen = eth_get_headlen(va, IGC_RX_HDR_LEN); | 1202 | headlen = eth_get_headlen(skb->dev, va, IGC_RX_HDR_LEN); |
1203 | 1203 | ||
1204 | /* align pull length to size of long to optimize memcpy performance */ | 1204 | /* align pull length to size of long to optimize memcpy performance */ |
1205 | memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); | 1205 | memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 60cec3540dd7..7b903206b534 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -1800,7 +1800,7 @@ static void ixgbe_pull_tail(struct ixgbe_ring *rx_ring, | |||
1800 | * we need the header to contain the greater of either ETH_HLEN or | 1800 | * we need the header to contain the greater of either ETH_HLEN or |
1801 | * 60 bytes if the skb->len is less than 60 for skb_pad. | 1801 | * 60 bytes if the skb->len is less than 60 for skb_pad. |
1802 | */ | 1802 | */ |
1803 | pull_len = eth_get_headlen(va, IXGBE_RX_HDR_SIZE); | 1803 | pull_len = eth_get_headlen(skb->dev, va, IXGBE_RX_HDR_SIZE); |
1804 | 1804 | ||
1805 | /* align pull length to size of long to optimize memcpy performance */ | 1805 | /* align pull length to size of long to optimize memcpy performance */ |
1806 | skb_copy_to_linear_data(skb, va, ALIGN(pull_len, sizeof(long))); | 1806 | skb_copy_to_linear_data(skb, va, ALIGN(pull_len, sizeof(long))); |
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index 49e23afa05a2..d189ed247665 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | |||
@@ -895,7 +895,8 @@ struct sk_buff *ixgbevf_construct_skb(struct ixgbevf_ring *rx_ring, | |||
895 | /* Determine available headroom for copy */ | 895 | /* Determine available headroom for copy */ |
896 | headlen = size; | 896 | headlen = size; |
897 | if (headlen > IXGBEVF_RX_HDR_SIZE) | 897 | if (headlen > IXGBEVF_RX_HDR_SIZE) |
898 | headlen = eth_get_headlen(xdp->data, IXGBEVF_RX_HDR_SIZE); | 898 | headlen = eth_get_headlen(skb->dev, xdp->data, |
899 | IXGBEVF_RX_HDR_SIZE); | ||
899 | 900 | ||
900 | /* align pull length to size of long to optimize memcpy performance */ | 901 | /* align pull length to size of long to optimize memcpy performance */ |
901 | memcpy(__skb_put(skb, headlen), xdp->data, | 902 | memcpy(__skb_put(skb, headlen), xdp->data, |
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c index 40f3f98aa279..7b61126fcec9 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | |||
@@ -163,7 +163,7 @@ static inline u16 mlx5e_calc_min_inline(enum mlx5_inline_modes mode, | |||
163 | case MLX5_INLINE_MODE_NONE: | 163 | case MLX5_INLINE_MODE_NONE: |
164 | return 0; | 164 | return 0; |
165 | case MLX5_INLINE_MODE_TCP_UDP: | 165 | case MLX5_INLINE_MODE_TCP_UDP: |
166 | hlen = eth_get_headlen(skb->data, skb_headlen(skb)); | 166 | hlen = eth_get_headlen(skb->dev, skb->data, skb_headlen(skb)); |
167 | if (hlen == ETH_HLEN && !skb_vlan_tag_present(skb)) | 167 | if (hlen == ETH_HLEN && !skb_vlan_tag_present(skb)) |
168 | hlen += VLAN_HLEN; | 168 | hlen += VLAN_HLEN; |
169 | break; | 169 | break; |
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 24d0220b9ba0..9d72f8c76c15 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c | |||
@@ -1965,7 +1965,8 @@ drop: | |||
1965 | 1965 | ||
1966 | if (frags) { | 1966 | if (frags) { |
1967 | /* Exercise flow dissector code path. */ | 1967 | /* Exercise flow dissector code path. */ |
1968 | u32 headlen = eth_get_headlen(skb->data, skb_headlen(skb)); | 1968 | u32 headlen = eth_get_headlen(tun->dev, skb->data, |
1969 | skb_headlen(skb)); | ||
1969 | 1970 | ||
1970 | if (unlikely(headlen > skb_headlen(skb))) { | 1971 | if (unlikely(headlen > skb_headlen(skb))) { |
1971 | this_cpu_inc(tun->pcpu_stats->rx_dropped); | 1972 | this_cpu_inc(tun->pcpu_stats->rx_dropped); |