diff options
Diffstat (limited to 'drivers/net/s2io.c')
-rw-r--r-- | drivers/net/s2io.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index 243db33042a8..a2d50fad61a1 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
@@ -371,9 +371,6 @@ static void s2io_vlan_rx_register(struct net_device *dev, | |||
371 | flags[i]); | 371 | flags[i]); |
372 | } | 372 | } |
373 | 373 | ||
374 | /* A flag indicating whether 'RX_PA_CFG_STRIP_VLAN_TAG' bit is set or not */ | ||
375 | static int vlan_strip_flag; | ||
376 | |||
377 | /* Unregister the vlan */ | 374 | /* Unregister the vlan */ |
378 | static void s2io_vlan_rx_kill_vid(struct net_device *dev, unsigned long vid) | 375 | static void s2io_vlan_rx_kill_vid(struct net_device *dev, unsigned long vid) |
379 | { | 376 | { |
@@ -2303,7 +2300,7 @@ static int start_nic(struct s2io_nic *nic) | |||
2303 | val64 = readq(&bar0->rx_pa_cfg); | 2300 | val64 = readq(&bar0->rx_pa_cfg); |
2304 | val64 &= ~RX_PA_CFG_STRIP_VLAN_TAG; | 2301 | val64 &= ~RX_PA_CFG_STRIP_VLAN_TAG; |
2305 | writeq(val64, &bar0->rx_pa_cfg); | 2302 | writeq(val64, &bar0->rx_pa_cfg); |
2306 | vlan_strip_flag = 0; | 2303 | nic->vlan_strip_flag = 0; |
2307 | } | 2304 | } |
2308 | 2305 | ||
2309 | /* | 2306 | /* |
@@ -5010,7 +5007,7 @@ static void s2io_set_multicast(struct net_device *dev) | |||
5010 | val64 = readq(&bar0->rx_pa_cfg); | 5007 | val64 = readq(&bar0->rx_pa_cfg); |
5011 | val64 &= ~RX_PA_CFG_STRIP_VLAN_TAG; | 5008 | val64 &= ~RX_PA_CFG_STRIP_VLAN_TAG; |
5012 | writeq(val64, &bar0->rx_pa_cfg); | 5009 | writeq(val64, &bar0->rx_pa_cfg); |
5013 | vlan_strip_flag = 0; | 5010 | sp->vlan_strip_flag = 0; |
5014 | } | 5011 | } |
5015 | 5012 | ||
5016 | val64 = readq(&bar0->mac_cfg); | 5013 | val64 = readq(&bar0->mac_cfg); |
@@ -5032,7 +5029,7 @@ static void s2io_set_multicast(struct net_device *dev) | |||
5032 | val64 = readq(&bar0->rx_pa_cfg); | 5029 | val64 = readq(&bar0->rx_pa_cfg); |
5033 | val64 |= RX_PA_CFG_STRIP_VLAN_TAG; | 5030 | val64 |= RX_PA_CFG_STRIP_VLAN_TAG; |
5034 | writeq(val64, &bar0->rx_pa_cfg); | 5031 | writeq(val64, &bar0->rx_pa_cfg); |
5035 | vlan_strip_flag = 1; | 5032 | sp->vlan_strip_flag = 1; |
5036 | } | 5033 | } |
5037 | 5034 | ||
5038 | val64 = readq(&bar0->mac_cfg); | 5035 | val64 = readq(&bar0->mac_cfg); |
@@ -8206,6 +8203,11 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre) | |||
8206 | /* Initialize device name */ | 8203 | /* Initialize device name */ |
8207 | sprintf(sp->name, "%s Neterion %s", dev->name, sp->product_name); | 8204 | sprintf(sp->name, "%s Neterion %s", dev->name, sp->product_name); |
8208 | 8205 | ||
8206 | if (vlan_tag_strip) | ||
8207 | sp->vlan_strip_flag = 1; | ||
8208 | else | ||
8209 | sp->vlan_strip_flag = 0; | ||
8210 | |||
8209 | /* | 8211 | /* |
8210 | * Make Link state as off at this point, when the Link change | 8212 | * Make Link state as off at this point, when the Link change |
8211 | * interrupt comes the state will be automatically changed to | 8213 | * interrupt comes the state will be automatically changed to |
@@ -8311,7 +8313,7 @@ static int check_L2_lro_capable(u8 *buffer, struct iphdr **ip, | |||
8311 | * If vlan stripping is disabled and the frame is VLAN tagged, | 8313 | * If vlan stripping is disabled and the frame is VLAN tagged, |
8312 | * shift the offset by the VLAN header size bytes. | 8314 | * shift the offset by the VLAN header size bytes. |
8313 | */ | 8315 | */ |
8314 | if ((!vlan_strip_flag) && | 8316 | if ((!sp->vlan_strip_flag) && |
8315 | (rxdp->Control_1 & RXD_FRAME_VLAN_TAG)) | 8317 | (rxdp->Control_1 & RXD_FRAME_VLAN_TAG)) |
8316 | ip_off += HEADER_VLAN_SIZE; | 8318 | ip_off += HEADER_VLAN_SIZE; |
8317 | } else { | 8319 | } else { |
@@ -8592,7 +8594,7 @@ static void queue_rx_frame(struct sk_buff *skb, u16 vlan_tag) | |||
8592 | 8594 | ||
8593 | skb->protocol = eth_type_trans(skb, dev); | 8595 | skb->protocol = eth_type_trans(skb, dev); |
8594 | if (sp->vlgrp && vlan_tag | 8596 | if (sp->vlgrp && vlan_tag |
8595 | && (vlan_strip_flag)) { | 8597 | && (sp->vlan_strip_flag)) { |
8596 | /* Queueing the vlan frame to the upper layer */ | 8598 | /* Queueing the vlan frame to the upper layer */ |
8597 | if (sp->config.napi) | 8599 | if (sp->config.napi) |
8598 | vlan_hwaccel_receive_skb(skb, sp->vlgrp, vlan_tag); | 8600 | vlan_hwaccel_receive_skb(skb, sp->vlgrp, vlan_tag); |