[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <78C9135A3D2ECE4B8162EBDCE82CAD7704330523@nekter>
Date: Thu, 4 Sep 2008 17:00:01 -0400
From: "Ramkrishna Vepa" <Ramkrishna.Vepa@...erion.com>
To: "Breno Leitao" <leitao@...ux.vnet.ibm.com>
Cc: "Rastapur Santosh" <santosh.rastapur@...erion.com>,
"Sivakumar Subramani" <Sivakumar.Subramani@...erion.com>,
"Sreenivasa Honnur" <Sreenivasa.Honnur@...erion.com>,
<jeff@...zik.org>, "Jay Vosburgh" <fubar@...ibm.com>,
"netdev" <netdev@...r.kernel.org>, "Lorandi" <rafaello@...ibm.com>,
"support" <support@...erion.com>
Subject: RE: [PATCH 1/1 net-2.6] s2io: enabling VLAN tag stripping at driver initialization
Breno/Jeff,
This patch looks good.
Thanks,
Ram
> -----Original Message-----
> From: Breno Leitao [mailto:leitao@...ux.vnet.ibm.com]
> Sent: Thursday, September 04, 2008 1:53 PM
> To: Ramkrishna Vepa
> Cc: Rastapur Santosh; Sivakumar Subramani; Sreenivasa Honnur;
> jeff@...zik.org; Jay Vosburgh; netdev; Lorandi
> Subject: Re: [PATCH 1/1 net-2.6] s2io: enabling VLAN tag stripping at
> driver initialization
>
> Actually s2io has a bug in VLAN support. VLAN doesn't work except if
> you'd opened the interface in promiscuous mode before.
> This happens because VLAN tag stripping is not correctly marked as
> enabled at device startup
>
> Also, the vlan_strip_flag field was moved to the private network
> structure.
>
> Signed-off-by: Breno Leitao <leitao@...ux.vnet.ibm.com>
> Signed-off-by: Jay Vosburgh <fubar@...ibm.com>
>
> ---
>
> diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
> index a2b0730..1386d76 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,
> flags[i]);
> }
>
> -/* A flag indicating whether 'RX_PA_CFG_STRIP_VLAN_TAG' bit is set or
not
> */
> -static int vlan_strip_flag;
> -
> /* Unregister the vlan */
> static void s2io_vlan_rx_kill_vid(struct net_device *dev, unsigned
long
> vid)
> {
> @@ -2303,7 +2300,7 @@ static int start_nic(struct s2io_nic *nic)
> val64 = readq(&bar0->rx_pa_cfg);
> val64 &= ~RX_PA_CFG_STRIP_VLAN_TAG;
> writeq(val64, &bar0->rx_pa_cfg);
> - vlan_strip_flag = 0;
> + nic->vlan_strip_flag = 0;
> }
>
> /*
> @@ -5010,7 +5007,7 @@ static void s2io_set_multicast(struct net_device
> *dev)
> val64 = readq(&bar0->rx_pa_cfg);
> val64 &= ~RX_PA_CFG_STRIP_VLAN_TAG;
> writeq(val64, &bar0->rx_pa_cfg);
> - vlan_strip_flag = 0;
> + sp->vlan_strip_flag = 0;
> }
>
> val64 = readq(&bar0->mac_cfg);
> @@ -5032,7 +5029,7 @@ static void s2io_set_multicast(struct net_device
> *dev)
> val64 = readq(&bar0->rx_pa_cfg);
> val64 |= RX_PA_CFG_STRIP_VLAN_TAG;
> writeq(val64, &bar0->rx_pa_cfg);
> - vlan_strip_flag = 1;
> + sp->vlan_strip_flag = 1;
> }
>
> val64 = readq(&bar0->mac_cfg);
> @@ -8206,6 +8203,11 @@ s2io_init_nic(struct pci_dev *pdev, const
struct
> pci_device_id *pre)
> /* Initialize device name */
> sprintf(sp->name, "%s Neterion %s", dev->name,
sp->product_name);
>
> + if (vlan_tag_strip)
> + sp->vlan_strip_flag = 1;
> + else
> + sp->vlan_strip_flag = 0;
> +
> /*
> * Make Link state as off at this point, when the Link change
> * interrupt comes the state will be automatically changed to
> @@ -8311,7 +8313,7 @@ static int check_L2_lro_capable(u8 *buffer,
struct
> iphdr **ip,
> * If vlan stripping is disabled and the frame is VLAN
tagged,
> * shift the offset by the VLAN header size bytes.
> */
> - if ((!vlan_strip_flag) &&
> + if ((!sp->vlan_strip_flag) &&
> (rxdp->Control_1 & RXD_FRAME_VLAN_TAG))
> ip_off += HEADER_VLAN_SIZE;
> } else {
> @@ -8592,7 +8594,7 @@ static void queue_rx_frame(struct sk_buff *skb,
u16
> vlan_tag)
>
> skb->protocol = eth_type_trans(skb, dev);
> if (sp->vlgrp && vlan_tag
> - && (vlan_strip_flag)) {
> + && (sp->vlan_strip_flag)) {
> /* Queueing the vlan frame to the upper layer */
> if (sp->config.napi)
> vlan_hwaccel_receive_skb(skb, sp->vlgrp,
vlan_tag);
> diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h
> index 6722a2f..55cb943 100644
> --- a/drivers/net/s2io.h
> +++ b/drivers/net/s2io.h
> @@ -962,6 +962,7 @@ struct s2io_nic {
> int task_flag;
> unsigned long long start_time;
> struct vlan_group *vlgrp;
> + int vlan_strip_flag;
> #define MSIX_FLG 0xA5
> int num_entries;
> struct msix_entry *entries;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists