netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next-2.6 1/6] be2net: refactor code that decides adapter->num_rx_queues
       [not found] <1300454462-1234-1-git-send-email-sathya.perla@emulex.com>
@ 2011-03-18 13:20 ` Sathya Perla
       [not found] ` <1300454462-1234-2-git-send-email-sathya.perla@emulex.com>
  1 sibling, 0 replies; 9+ messages in thread
From: Sathya Perla @ 2011-03-18 13:20 UTC (permalink / raw)
  To: netdev; +Cc: Sathya Perla

The code has been refactored to not set num_rx_qs inside be_enable_msix().
num_rx_qs is now set at the time of queue creation based on the number of
available msix vectors.

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
 drivers/net/benet/be.h      |    8 +++--
 drivers/net/benet/be_main.c |   64 ++++++++++++++++++++++---------------------
 2 files changed, 38 insertions(+), 34 deletions(-)

diff --git a/drivers/net/benet/be.h b/drivers/net/benet/be.h
index f803c58..3937bca 100644
--- a/drivers/net/benet/be.h
+++ b/drivers/net/benet/be.h
@@ -84,7 +84,8 @@ static inline char *nic_name(struct pci_dev *pdev)
 #define MCC_CQ_LEN		256
 
 #define MAX_RSS_QS		4	/* BE limit is 4 queues/port */
-#define BE_MAX_MSIX_VECTORS	(MAX_RSS_QS + 1 + 1)/* RSS qs + 1 def Rx + Tx */
+#define MAX_RX_QS		(MAX_RSS_QS + 1) /* RSS qs + 1 def Rx */
+#define BE_MAX_MSIX_VECTORS	(MAX_RX_QS + 1)/* RX + TX */
 #define BE_NAPI_WEIGHT		64
 #define MAX_RX_POST 		BE_NAPI_WEIGHT /* Frags posted at a time */
 #define RX_FRAGS_REFILL_WM	(RX_Q_LEN - MAX_RX_POST)
@@ -276,7 +277,7 @@ struct be_adapter {
 	spinlock_t mcc_cq_lock;
 
 	struct msix_entry msix_entries[BE_MAX_MSIX_VECTORS];
-	bool msix_enabled;
+	u32 num_msix_vec;
 	bool isr_registered;
 
 	/* TX Rings */
@@ -287,7 +288,7 @@ struct be_adapter {
 	u32 cache_line_break[8];
 
 	/* Rx rings */
-	struct be_rx_obj rx_obj[MAX_RSS_QS + 1]; /* one default non-rss Q */
+	struct be_rx_obj rx_obj[MAX_RX_QS];
 	u32 num_rx_qs;
 	u32 big_page_size;	/* Compounded page size shared by rx wrbs */
 
@@ -351,6 +352,7 @@ struct be_adapter {
 
 extern const struct ethtool_ops be_ethtool_ops;
 
+#define msix_enabled(adapter)		(adapter->num_msix_vec > 0)
 #define tx_stats(adapter)		(&adapter->tx_stats)
 #define rx_stats(rxo)			(&rxo->stats)
 
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index a71163f..97c5167 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -1567,12 +1567,31 @@ static void be_rx_queues_destroy(struct be_adapter *adapter)
 	}
 }
 
+static u32 be_num_rxqs_want(struct be_adapter *adapter)
+{
+	if (multi_rxq && (adapter->function_caps & BE_FUNCTION_CAPS_RSS) &&
+		!adapter->sriov_enabled && !(adapter->function_mode & 0x400)) {
+		return 1 + MAX_RSS_QS; /* one default non-RSS queue */
+	} else {
+		dev_warn(&adapter->pdev->dev,
+			"No support for multiple RX queues\n");
+		return 1;
+	}
+}
+
 static int be_rx_queues_create(struct be_adapter *adapter)
 {
 	struct be_queue_info *eq, *q, *cq;
 	struct be_rx_obj *rxo;
 	int rc, i;
 
+	adapter->num_rx_qs = min(be_num_rxqs_want(adapter),
+				msix_enabled(adapter) ?
+					adapter->num_msix_vec - 1 : 1);
+	if (adapter->num_rx_qs != MAX_RX_QS)
+		dev_warn(&adapter->pdev->dev,
+			"Can create only %d RX queues", adapter->num_rx_qs);
+
 	adapter->big_page_size = (1 << get_order(rx_frag_size)) * PAGE_SIZE;
 	for_all_rx_queues(adapter, rxo, i) {
 		rxo->adapter = adapter;
@@ -1878,51 +1897,35 @@ reschedule:
 
 static void be_msix_disable(struct be_adapter *adapter)
 {
-	if (adapter->msix_enabled) {
+	if (msix_enabled(adapter)) {
 		pci_disable_msix(adapter->pdev);
-		adapter->msix_enabled = false;
-	}
-}
-
-static int be_num_rxqs_get(struct be_adapter *adapter)
-{
-	if (multi_rxq && (adapter->function_caps & BE_FUNCTION_CAPS_RSS) &&
-		!adapter->sriov_enabled && !(adapter->function_mode & 0x400)) {
-		return 1 + MAX_RSS_QS; /* one default non-RSS queue */
-	} else {
-		dev_warn(&adapter->pdev->dev,
-			"No support for multiple RX queues\n");
-		return 1;
+		adapter->num_msix_vec = 0;
 	}
 }
 
 static void be_msix_enable(struct be_adapter *adapter)
 {
 #define BE_MIN_MSIX_VECTORS	(1 + 1) /* Rx + Tx */
-	int i, status;
+	int i, status, num_vec;
 
-	adapter->num_rx_qs = be_num_rxqs_get(adapter);
+	num_vec = be_num_rxqs_want(adapter) + 1;
 
-	for (i = 0; i < (adapter->num_rx_qs + 1); i++)
+	for (i = 0; i < num_vec; i++)
 		adapter->msix_entries[i].entry = i;
 
-	status = pci_enable_msix(adapter->pdev, adapter->msix_entries,
-			adapter->num_rx_qs + 1);
+	status = pci_enable_msix(adapter->pdev, adapter->msix_entries, num_vec);
 	if (status == 0) {
 		goto done;
 	} else if (status >= BE_MIN_MSIX_VECTORS) {
+		num_vec = status;
 		if (pci_enable_msix(adapter->pdev, adapter->msix_entries,
-				status) == 0) {
-			adapter->num_rx_qs = status - 1;
-			dev_warn(&adapter->pdev->dev,
-				"Could alloc only %d MSIx vectors. "
-				"Using %d RX Qs\n", status, adapter->num_rx_qs);
+				num_vec) == 0)
 			goto done;
-		}
 	}
 	return;
 done:
-	adapter->msix_enabled = true;
+	adapter->num_msix_vec = num_vec;
+	return;
 }
 
 static void be_sriov_enable(struct be_adapter *adapter)
@@ -2003,8 +2006,7 @@ err_msix:
 err:
 	dev_warn(&adapter->pdev->dev,
 		"MSIX Request IRQ failed - err %d\n", status);
-	pci_disable_msix(adapter->pdev);
-	adapter->msix_enabled = false;
+	be_msix_disable(adapter);
 	return status;
 }
 
@@ -2013,7 +2015,7 @@ static int be_irq_register(struct be_adapter *adapter)
 	struct net_device *netdev = adapter->netdev;
 	int status;
 
-	if (adapter->msix_enabled) {
+	if (msix_enabled(adapter)) {
 		status = be_msix_register(adapter);
 		if (status == 0)
 			goto done;
@@ -2046,7 +2048,7 @@ static void be_irq_unregister(struct be_adapter *adapter)
 		return;
 
 	/* INTx */
-	if (!adapter->msix_enabled) {
+	if (!msix_enabled(adapter)) {
 		free_irq(netdev->irq, adapter);
 		goto done;
 	}
@@ -2088,7 +2090,7 @@ static int be_close(struct net_device *netdev)
 			 be_cq_notify(adapter, rxo->cq.id, false, 0);
 	}
 
-	if (adapter->msix_enabled) {
+	if (msix_enabled(adapter)) {
 		vec = be_msix_vec_get(adapter, tx_eq);
 		synchronize_irq(vec);
 
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next-2.6 2/6] be2net: fix to not drop unfiltered vlan pkts
       [not found] ` <1300454462-1234-2-git-send-email-sathya.perla@emulex.com>
@ 2011-03-18 13:20   ` Sathya Perla
  2011-03-18 20:35     ` Jesse Gross
       [not found]   ` <1300454462-1234-3-git-send-email-sathya.perla@emulex.com>
  1 sibling, 1 reply; 9+ messages in thread
From: Sathya Perla @ 2011-03-18 13:20 UTC (permalink / raw)
  To: netdev; +Cc: Sathya Perla

When the device is in promiscuous mode, the driver can receive vlan packets
(tag is always stripped by card) even when there is no vlan configuration.
Such packets must be sent to the stack and not dropped.

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
 drivers/net/benet/be_main.c |    9 ++-------
 1 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 97c5167..18c6da4 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -1013,15 +1013,10 @@ static void be_rx_compl_process(struct be_adapter *adapter,
 	skb->truesize = skb->len + sizeof(struct sk_buff);
 	skb->protocol = eth_type_trans(skb, adapter->netdev);
 
-	if (unlikely(rxcp->vlanf)) {
-		if (!adapter->vlan_grp || adapter->vlans_added == 0) {
-			kfree_skb(skb);
-			return;
-		}
+	if (unlikely(rxcp->vlanf))
 		vlan_hwaccel_receive_skb(skb, adapter->vlan_grp, rxcp->vid);
-	} else {
+	else
 		netif_receive_skb(skb);
-	}
 }
 
 /* Process the RX completion indicated by rxcp when GRO is enabled */
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next-2.6 3/6] be2net: parse vid and vtm fields of rx-compl only if vlanf bit is set
       [not found]   ` <1300454462-1234-3-git-send-email-sathya.perla@emulex.com>
@ 2011-03-18 13:20     ` Sathya Perla
       [not found]     ` <1300454462-1234-4-git-send-email-sathya.perla@emulex.com>
  1 sibling, 0 replies; 9+ messages in thread
From: Sathya Perla @ 2011-03-18 13:20 UTC (permalink / raw)
  To: netdev; +Cc: Sathya Perla


Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
 drivers/net/benet/be_main.c |   34 +++++++++++++++++++++++-----------
 1 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 18c6da4..6be06df 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -1096,8 +1096,12 @@ static void be_parse_rx_compl_v1(struct be_adapter *adapter,
 		AMAP_GET_BITS(struct amap_eth_rx_compl_v1, numfrags, compl);
 	rxcp->pkt_type =
 		AMAP_GET_BITS(struct amap_eth_rx_compl_v1, cast_enc, compl);
-	rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vtm, compl);
-	rxcp->vid = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vlan_tag, compl);
+	if (rxcp->vlanf) {
+		rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vtm,
+				compl);
+		rxcp->vid = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vlan_tag,
+				compl);
+	}
 }
 
 static void be_parse_rx_compl_v0(struct be_adapter *adapter,
@@ -1122,8 +1126,12 @@ static void be_parse_rx_compl_v0(struct be_adapter *adapter,
 		AMAP_GET_BITS(struct amap_eth_rx_compl_v0, numfrags, compl);
 	rxcp->pkt_type =
 		AMAP_GET_BITS(struct amap_eth_rx_compl_v0, cast_enc, compl);
-	rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vtm, compl);
-	rxcp->vid = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vlan_tag, compl);
+	if (rxcp->vlanf) {
+		rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vtm,
+				compl);
+		rxcp->vid = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vlan_tag,
+				compl);
+	}
 }
 
 static struct be_rx_compl_info *be_rx_compl_get(struct be_rx_obj *rxo)
@@ -1145,15 +1153,19 @@ static struct be_rx_compl_info *be_rx_compl_get(struct be_rx_obj *rxo)
 	else
 		be_parse_rx_compl_v0(adapter, compl, rxcp);
 
-	/* vlanf could be wrongly set in some cards. ignore if vtm is not set */
-	if ((adapter->function_mode & 0x400) && !rxcp->vtm)
-		rxcp->vlanf = 0;
+	if (rxcp->vlanf) {
+		/* vlanf could be wrongly set in some cards.
+		 * ignore if vtm is not set */
+		if ((adapter->function_mode & 0x400) && !rxcp->vtm)
+			rxcp->vlanf = 0;
 
-	if (!lancer_chip(adapter))
-		rxcp->vid = swab16(rxcp->vid);
+		if (!lancer_chip(adapter))
+			rxcp->vid = swab16(rxcp->vid);
 
-	if ((adapter->pvid == rxcp->vid) && !adapter->vlan_tag[rxcp->vid])
-		rxcp->vlanf = 0;
+		if ((adapter->pvid == rxcp->vid) &&
+			!adapter->vlan_tag[rxcp->vid])
+			rxcp->vlanf = 0;
+	}
 
 	/* As the compl has been parsed, reset it; we wont touch it again */
 	compl->dw[offsetof(struct amap_eth_rx_compl_v1, valid) / 32] = 0;
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next-2.6 4/6] be2net: remove redundant code in be_worker()
       [not found]     ` <1300454462-1234-4-git-send-email-sathya.perla@emulex.com>
@ 2011-03-18 13:21       ` Sathya Perla
       [not found]       ` <1300454462-1234-5-git-send-email-sathya.perla@emulex.com>
  1 sibling, 0 replies; 9+ messages in thread
From: Sathya Perla @ 2011-03-18 13:21 UTC (permalink / raw)
  To: netdev; +Cc: Sathya Perla


Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
 drivers/net/benet/be_main.c |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 6be06df..0efa639 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -1863,6 +1863,9 @@ static void be_worker(struct work_struct *work)
 	struct be_rx_obj *rxo;
 	int i;
 
+	if (!adapter->ue_detected && !lancer_chip(adapter))
+		be_detect_dump_ue(adapter);
+
 	/* when interrupts are not yet enabled, just reap any pending
 	* mcc completions */
 	if (!netif_running(adapter->netdev)) {
@@ -1875,9 +1878,6 @@ static void be_worker(struct work_struct *work)
 			be_cq_notify(adapter, mcc_obj->cq.id, false, mcc_compl);
 		}
 
-		if (!adapter->ue_detected && !lancer_chip(adapter))
-			be_detect_dump_ue(adapter);
-
 		goto reschedule;
 	}
 
@@ -1895,8 +1895,6 @@ static void be_worker(struct work_struct *work)
 			be_post_rx_frags(rxo, GFP_KERNEL);
 		}
 	}
-	if (!adapter->ue_detected && !lancer_chip(adapter))
-		be_detect_dump_ue(adapter);
 
 reschedule:
 	schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next-2.6 5/6] be2net: cancel be_worker() in be_shutdown() even when i/f is down
       [not found]       ` <1300454462-1234-5-git-send-email-sathya.perla@emulex.com>
@ 2011-03-18 13:21         ` Sathya Perla
       [not found]         ` <1300454462-1234-6-git-send-email-sathya.perla@emulex.com>
  1 sibling, 0 replies; 9+ messages in thread
From: Sathya Perla @ 2011-03-18 13:21 UTC (permalink / raw)
  To: netdev; +Cc: Sathya Perla

As the be_worker() workqueue is scheduled in be_probe() it must
be canceled unconditionally in be_shutdown().

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
 drivers/net/benet/be_main.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 0efa639..acd53e6 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -3150,8 +3150,7 @@ static void be_shutdown(struct pci_dev *pdev)
 	struct be_adapter *adapter = pci_get_drvdata(pdev);
 	struct net_device *netdev =  adapter->netdev;
 
-	if (netif_running(netdev))
-		cancel_delayed_work_sync(&adapter->work);
+	cancel_delayed_work_sync(&adapter->work);
 
 	netif_device_detach(netdev);
 
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next-2.6 6/6] be2net: remove one useless line
       [not found]         ` <1300454462-1234-6-git-send-email-sathya.perla@emulex.com>
@ 2011-03-18 13:21           ` Sathya Perla
  0 siblings, 0 replies; 9+ messages in thread
From: Sathya Perla @ 2011-03-18 13:21 UTC (permalink / raw)
  To: netdev; +Cc: Sathya Perla


Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
---
 drivers/net/benet/be_main.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index acd53e6..cfe986f 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -2325,7 +2325,6 @@ static int be_setup(struct be_adapter *adapter)
 
 	return 0;
 
-	be_mcc_queues_destroy(adapter);
 rx_qs_destroy:
 	be_rx_queues_destroy(adapter);
 tx_qs_destroy:
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH net-next-2.6 2/6] be2net: fix to not drop unfiltered vlan pkts
  2011-03-18 13:20   ` [PATCH net-next-2.6 2/6] be2net: fix to not drop unfiltered vlan pkts Sathya Perla
@ 2011-03-18 20:35     ` Jesse Gross
  2011-03-21  5:41       ` Sathya.Perla
  0 siblings, 1 reply; 9+ messages in thread
From: Jesse Gross @ 2011-03-18 20:35 UTC (permalink / raw)
  To: Sathya Perla; +Cc: netdev

On Fri, Mar 18, 2011 at 6:20 AM, Sathya Perla <sathya.perla@emulex.com> wrote:
> When the device is in promiscuous mode, the driver can receive vlan packets
> (tag is always stripped by card) even when there is no vlan configuration.
> Such packets must be sent to the stack and not dropped.
>
> Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
> ---
>  drivers/net/benet/be_main.c |    9 ++-------
>  1 files changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
> index 97c5167..18c6da4 100644
> --- a/drivers/net/benet/be_main.c
> +++ b/drivers/net/benet/be_main.c
> @@ -1013,15 +1013,10 @@ static void be_rx_compl_process(struct be_adapter *adapter,
>        skb->truesize = skb->len + sizeof(struct sk_buff);
>        skb->protocol = eth_type_trans(skb, adapter->netdev);
>
> -       if (unlikely(rxcp->vlanf)) {
> -               if (!adapter->vlan_grp || adapter->vlans_added == 0) {
> -                       kfree_skb(skb);
> -                       return;
> -               }
> +       if (unlikely(rxcp->vlanf))
>                vlan_hwaccel_receive_skb(skb, adapter->vlan_grp, rxcp->vid);

It would be better to use __vlan_hwaccel_put_tag() here - it's
equivalent but at least moves in the right direction.  Under the old
vlan model (which vlan_hwaccel_receive_skb() is left over from)
passing in a NULL vlan group is illegal, so it's inconsistent anyways.

Of course even better would be to fully convert over to the new vlan
model.  A quick skim through the code shows that there might be
similar issue with vlan_gro_frags() as above, so it could help catch
some of that.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH net-next-2.6 2/6] be2net: fix to not drop unfiltered vlan pkts
  2011-03-18 20:35     ` Jesse Gross
@ 2011-03-21  5:41       ` Sathya.Perla
  2011-03-22  2:21         ` Jesse Gross
  0 siblings, 1 reply; 9+ messages in thread
From: Sathya.Perla @ 2011-03-21  5:41 UTC (permalink / raw)
  To: jesse; +Cc: netdev

Hi, can you pls clarify what you mean by the "new vlan model" below...

thanks,
-Sathya

-----Original Message-----
From: Jesse Gross [mailto:jesse@nicira.com] 
Sent: Saturday, March 19, 2011 2:05 AM
To: Perla, Sathya
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH net-next-2.6 2/6] be2net: fix to not drop unfiltered vlan pkts

On Fri, Mar 18, 2011 at 6:20 AM, Sathya Perla <sathya.perla@emulex.com> wrote:
> When the device is in promiscuous mode, the driver can receive vlan packets
> (tag is always stripped by card) even when there is no vlan configuration.
> Such packets must be sent to the stack and not dropped.
>
> Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
> ---
>  drivers/net/benet/be_main.c |    9 ++-------
>  1 files changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
> index 97c5167..18c6da4 100644
> --- a/drivers/net/benet/be_main.c
> +++ b/drivers/net/benet/be_main.c
> @@ -1013,15 +1013,10 @@ static void be_rx_compl_process(struct be_adapter *adapter,
>        skb->truesize = skb->len + sizeof(struct sk_buff);
>        skb->protocol = eth_type_trans(skb, adapter->netdev);
>
> -       if (unlikely(rxcp->vlanf)) {
> -               if (!adapter->vlan_grp || adapter->vlans_added == 0) {
> -                       kfree_skb(skb);
> -                       return;
> -               }
> +       if (unlikely(rxcp->vlanf))
>                vlan_hwaccel_receive_skb(skb, adapter->vlan_grp, rxcp->vid);

It would be better to use __vlan_hwaccel_put_tag() here - it's
equivalent but at least moves in the right direction.  Under the old
vlan model (which vlan_hwaccel_receive_skb() is left over from)
passing in a NULL vlan group is illegal, so it's inconsistent anyways.

Of course even better would be to fully convert over to the new vlan
model.  A quick skim through the code shows that there might be
similar issue with vlan_gro_frags() as above, so it could help catch
some of that.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH net-next-2.6 2/6] be2net: fix to not drop unfiltered vlan pkts
  2011-03-21  5:41       ` Sathya.Perla
@ 2011-03-22  2:21         ` Jesse Gross
  0 siblings, 0 replies; 9+ messages in thread
From: Jesse Gross @ 2011-03-22  2:21 UTC (permalink / raw)
  To: Sathya.Perla; +Cc: netdev

On Sun, Mar 20, 2011 at 10:41 PM,  <Sathya.Perla@emulex.com> wrote:
> Hi, can you pls clarify what you mean by the "new vlan model" below...

The interface that drivers use to pass vlan information to the
networking core has changed starting in 2.6.37, although the old
methods still exist for compatibility until all drivers have been
switched over.  The idea is that drivers should no longer need any
knowledge of the vlan group and should instead simply pass along
whatever tagging information was received.  With this patch you are
implicitly relying on the changes because you are giving a NULL vlan
group in some situations, which now works because the compatibility
functions ignore it.

An example of a driver conversion is in 7a8fc77b3744e26ce1249d9ccb23e356d6010679

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2011-03-22  2:22 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1300454462-1234-1-git-send-email-sathya.perla@emulex.com>
2011-03-18 13:20 ` [PATCH net-next-2.6 1/6] be2net: refactor code that decides adapter->num_rx_queues Sathya Perla
     [not found] ` <1300454462-1234-2-git-send-email-sathya.perla@emulex.com>
2011-03-18 13:20   ` [PATCH net-next-2.6 2/6] be2net: fix to not drop unfiltered vlan pkts Sathya Perla
2011-03-18 20:35     ` Jesse Gross
2011-03-21  5:41       ` Sathya.Perla
2011-03-22  2:21         ` Jesse Gross
     [not found]   ` <1300454462-1234-3-git-send-email-sathya.perla@emulex.com>
2011-03-18 13:20     ` [PATCH net-next-2.6 3/6] be2net: parse vid and vtm fields of rx-compl only if vlanf bit is set Sathya Perla
     [not found]     ` <1300454462-1234-4-git-send-email-sathya.perla@emulex.com>
2011-03-18 13:21       ` [PATCH net-next-2.6 4/6] be2net: remove redundant code in be_worker() Sathya Perla
     [not found]       ` <1300454462-1234-5-git-send-email-sathya.perla@emulex.com>
2011-03-18 13:21         ` [PATCH net-next-2.6 5/6] be2net: cancel be_worker() in be_shutdown() even when i/f is down Sathya Perla
     [not found]         ` <1300454462-1234-6-git-send-email-sathya.perla@emulex.com>
2011-03-18 13:21           ` [PATCH net-next-2.6 6/6] be2net: remove one useless line Sathya Perla

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).