Skip to content

Commit 34c9204

Browse files
Matt Carlsondavem330
authored andcommitted
tg3: Use new VLAN code
This patch pivots the tg3 driver to the new VLAN infrastructure. All references to vlgrp have been removed. The driver still attempts to disable VLAN tag stripping if CONFIG_VLAN_8021Q or CONFIG_VLAN_8021Q_MODULE is not defined. Signed-off-by: Matt Carlson <mcarlson@broadcom.com> Reviewed-by: Michael Chan <mchan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 9b6941d commit 34c9204

File tree

2 files changed

+10
-88
lines changed

2 files changed

+10
-88
lines changed

drivers/net/tg3.c

Lines changed: 10 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,6 @@
6060
#define BAR_0 0
6161
#define BAR_2 2
6262

63-
#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
64-
#define TG3_VLAN_TAG_USED 1
65-
#else
66-
#define TG3_VLAN_TAG_USED 0
67-
#endif
68-
6963
#include "tg3.h"
7064

7165
#define DRV_MODULE_NAME "tg3"
@@ -134,9 +128,6 @@
134128
TG3_TX_RING_SIZE)
135129
#define NEXT_TX(N) (((N) + 1) & (TG3_TX_RING_SIZE - 1))
136130

137-
#define TG3_RX_DMA_ALIGN 16
138-
#define TG3_RX_HEADROOM ALIGN(VLAN_HLEN, TG3_RX_DMA_ALIGN)
139-
140131
#define TG3_DMA_BYTE_ENAB 64
141132

142133
#define TG3_RX_STD_DMA_SZ 1536
@@ -4722,8 +4713,6 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget)
47224713
struct sk_buff *skb;
47234714
dma_addr_t dma_addr;
47244715
u32 opaque_key, desc_idx, *post_ptr;
4725-
bool hw_vlan __maybe_unused = false;
4726-
u16 vtag __maybe_unused = 0;
47274716

47284717
desc_idx = desc->opaque & RXD_OPAQUE_INDEX_MASK;
47294718
opaque_key = desc->opaque & RXD_OPAQUE_RING_MASK;
@@ -4782,12 +4771,12 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget)
47824771
tg3_recycle_rx(tnapi, tpr, opaque_key,
47834772
desc_idx, *post_ptr);
47844773

4785-
copy_skb = netdev_alloc_skb(tp->dev, len + VLAN_HLEN +
4774+
copy_skb = netdev_alloc_skb(tp->dev, len +
47864775
TG3_RAW_IP_ALIGN);
47874776
if (copy_skb == NULL)
47884777
goto drop_it_no_recycle;
47894778

4790-
skb_reserve(copy_skb, TG3_RAW_IP_ALIGN + VLAN_HLEN);
4779+
skb_reserve(copy_skb, TG3_RAW_IP_ALIGN);
47914780
skb_put(copy_skb, len);
47924781
pci_dma_sync_single_for_cpu(tp->pdev, dma_addr, len, PCI_DMA_FROMDEVICE);
47934782
skb_copy_from_linear_data(skb, copy_skb->data, len);
@@ -4814,30 +4803,11 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget)
48144803
}
48154804

48164805
if (desc->type_flags & RXD_FLAG_VLAN &&
4817-
!(tp->rx_mode & RX_MODE_KEEP_VLAN_TAG)) {
4818-
vtag = desc->err_vlan & RXD_VLAN_MASK;
4819-
#if TG3_VLAN_TAG_USED
4820-
if (tp->vlgrp)
4821-
hw_vlan = true;
4822-
else
4823-
#endif
4824-
{
4825-
struct vlan_ethhdr *ve = (struct vlan_ethhdr *)
4826-
__skb_push(skb, VLAN_HLEN);
4827-
4828-
memmove(ve, skb->data + VLAN_HLEN,
4829-
ETH_ALEN * 2);
4830-
ve->h_vlan_proto = htons(ETH_P_8021Q);
4831-
ve->h_vlan_TCI = htons(vtag);
4832-
}
4833-
}
4806+
!(tp->rx_mode & RX_MODE_KEEP_VLAN_TAG))
4807+
__vlan_hwaccel_put_tag(skb,
4808+
desc->err_vlan & RXD_VLAN_MASK);
48344809

4835-
#if TG3_VLAN_TAG_USED
4836-
if (hw_vlan)
4837-
vlan_gro_receive(&tnapi->napi, tp->vlgrp, vtag, skb);
4838-
else
4839-
#endif
4840-
napi_gro_receive(&tnapi->napi, skb);
4810+
napi_gro_receive(&tnapi->napi, skb);
48414811

48424812
received++;
48434813
budget--;
@@ -5740,11 +5710,9 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb,
57405710
base_flags |= TXD_FLAG_TCPUDP_CSUM;
57415711
}
57425712

5743-
#if TG3_VLAN_TAG_USED
57445713
if (vlan_tx_tag_present(skb))
57455714
base_flags |= (TXD_FLAG_VLAN |
57465715
(vlan_tx_tag_get(skb) << 16));
5747-
#endif
57485716

57495717
len = skb_headlen(skb);
57505718

@@ -5986,11 +5954,10 @@ static netdev_tx_t tg3_start_xmit_dma_bug(struct sk_buff *skb,
59865954
}
59875955
}
59885956
}
5989-
#if TG3_VLAN_TAG_USED
5957+
59905958
if (vlan_tx_tag_present(skb))
59915959
base_flags |= (TXD_FLAG_VLAN |
59925960
(vlan_tx_tag_get(skb) << 16));
5993-
#endif
59945961

59955962
if ((tp->tg3_flags3 & TG3_FLG3_USE_JUMBO_BDFLAG) &&
59965963
!mss && skb->len > VLAN_ETH_FRAME_LEN)
@@ -9532,17 +9499,10 @@ static void __tg3_set_rx_mode(struct net_device *dev)
95329499
rx_mode = tp->rx_mode & ~(RX_MODE_PROMISC |
95339500
RX_MODE_KEEP_VLAN_TAG);
95349501

9502+
#if !defined(CONFIG_VLAN_8021Q) && !defined(CONFIG_VLAN_8021Q_MODULE)
95359503
/* When ASF is in use, we always keep the RX_MODE_KEEP_VLAN_TAG
95369504
* flag clear.
95379505
*/
9538-
#if TG3_VLAN_TAG_USED
9539-
if (!tp->vlgrp &&
9540-
!(tp->tg3_flags & TG3_FLAG_ENABLE_ASF))
9541-
rx_mode |= RX_MODE_KEEP_VLAN_TAG;
9542-
#else
9543-
/* By definition, VLAN is disabled always in this
9544-
* case.
9545-
*/
95469506
if (!(tp->tg3_flags & TG3_FLAG_ENABLE_ASF))
95479507
rx_mode |= RX_MODE_KEEP_VLAN_TAG;
95489508
#endif
@@ -11230,31 +11190,6 @@ static int tg3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
1123011190
return -EOPNOTSUPP;
1123111191
}
1123211192

11233-
#if TG3_VLAN_TAG_USED
11234-
static void tg3_vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
11235-
{
11236-
struct tg3 *tp = netdev_priv(dev);
11237-
11238-
if (!netif_running(dev)) {
11239-
tp->vlgrp = grp;
11240-
return;
11241-
}
11242-
11243-
tg3_netif_stop(tp);
11244-
11245-
tg3_full_lock(tp, 0);
11246-
11247-
tp->vlgrp = grp;
11248-
11249-
/* Update RX_MODE_KEEP_VLAN_TAG bit in RX_MODE register. */
11250-
__tg3_set_rx_mode(dev);
11251-
11252-
tg3_netif_start(tp);
11253-
11254-
tg3_full_unlock(tp);
11255-
}
11256-
#endif
11257-
1125811193
static int tg3_get_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
1125911194
{
1126011195
struct tg3 *tp = netdev_priv(dev);
@@ -13066,9 +13001,7 @@ static struct pci_dev * __devinit tg3_find_peer(struct tg3 *);
1306613001

1306713002
static void inline vlan_features_add(struct net_device *dev, unsigned long flags)
1306813003
{
13069-
#if TG3_VLAN_TAG_USED
1307013004
dev->vlan_features |= flags;
13071-
#endif
1307213005
}
1307313006

1307413007
static inline u32 tg3_rx_ret_ring_size(struct tg3 *tp)
@@ -13861,11 +13794,11 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
1386113794
else
1386213795
tp->tg3_flags &= ~TG3_FLAG_POLL_SERDES;
1386313796

13864-
tp->rx_offset = NET_IP_ALIGN + TG3_RX_HEADROOM;
13797+
tp->rx_offset = NET_IP_ALIGN;
1386513798
tp->rx_copy_thresh = TG3_RX_COPY_THRESHOLD;
1386613799
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701 &&
1386713800
(tp->tg3_flags & TG3_FLAG_PCIX_MODE) != 0) {
13868-
tp->rx_offset -= NET_IP_ALIGN;
13801+
tp->rx_offset = 0;
1386913802
#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
1387013803
tp->rx_copy_thresh = ~(u16)0;
1387113804
#endif
@@ -14629,9 +14562,6 @@ static const struct net_device_ops tg3_netdev_ops = {
1462914562
.ndo_do_ioctl = tg3_ioctl,
1463014563
.ndo_tx_timeout = tg3_tx_timeout,
1463114564
.ndo_change_mtu = tg3_change_mtu,
14632-
#if TG3_VLAN_TAG_USED
14633-
.ndo_vlan_rx_register = tg3_vlan_rx_register,
14634-
#endif
1463514565
#ifdef CONFIG_NET_POLL_CONTROLLER
1463614566
.ndo_poll_controller = tg3_poll_controller,
1463714567
#endif
@@ -14648,9 +14578,6 @@ static const struct net_device_ops tg3_netdev_ops_dma_bug = {
1464814578
.ndo_do_ioctl = tg3_ioctl,
1464914579
.ndo_tx_timeout = tg3_tx_timeout,
1465014580
.ndo_change_mtu = tg3_change_mtu,
14651-
#if TG3_VLAN_TAG_USED
14652-
.ndo_vlan_rx_register = tg3_vlan_rx_register,
14653-
#endif
1465414581
#ifdef CONFIG_NET_POLL_CONTROLLER
1465514582
.ndo_poll_controller = tg3_poll_controller,
1465614583
#endif
@@ -14700,9 +14627,7 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
1470014627

1470114628
SET_NETDEV_DEV(dev, &pdev->dev);
1470214629

14703-
#if TG3_VLAN_TAG_USED
1470414630
dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
14705-
#endif
1470614631

1470714632
tp = netdev_priv(dev);
1470814633
tp->pdev = pdev;

drivers/net/tg3.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2808,9 +2808,6 @@ struct tg3 {
28082808
u32 rx_std_max_post;
28092809
u32 rx_offset;
28102810
u32 rx_pkt_map_sz;
2811-
#if TG3_VLAN_TAG_USED
2812-
struct vlan_group *vlgrp;
2813-
#endif
28142811

28152812

28162813
/* begin "everything else" cacheline(s) section */

0 commit comments

Comments
 (0)