<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.network">
    <title>gmane.linux.network</title>
    <link>http://blog.gmane.org/gmane.linux.network</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270271"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270270"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270268"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270266"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270265"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270264"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270263"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270261"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270259"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270258"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270257"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270256"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270255"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270253"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270252"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270251"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270250"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270249"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270248"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network/270247"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270271">
    <title>[PATCH] qlge: add missing free_netdev() on error in qlge_probe()</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270271</link>
    <description>&lt;pre&gt;From: Wei Yongjun &amp;lt;yongjun_wei&amp;lt; at &amp;gt;trendmicro.com.cn&amp;gt;

Add the missing free_netdev() before return from function
qlge_probe() in the error handling case.

Signed-off-by: Wei Yongjun &amp;lt;yongjun_wei&amp;lt; at &amp;gt;trendmicro.com.cn&amp;gt;
---
 drivers/net/ethernet/qlogic/qlge/qlge_main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index e04d471..2553cf4 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4717,6 +4717,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int qlge_probe(struct pci_dev *pdev,
 dev_err(&amp;amp;pdev-&amp;gt;dev, "net device registration failed.\n");
 ql_release_all(pdev);
 pci_disable_device(pdev);
+free_netdev(ndev);
 return err;
 }
 /* Start up the timer to trigger EEH if

&lt;/pre&gt;</description>
    <dc:creator>Wei Yongjun</dc:creator>
    <dc:date>2013-05-23T09:09:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270270">
    <title>[PATCH net-next] be2net: refactor HW workarounds in be_xmit()</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270270</link>
    <description>&lt;pre&gt;Refactor all TX HW workarounds into a separate routine called
be_xmit_workarounds().

Signed-off-by: Sathya Perla &amp;lt;sathya.perla&amp;lt; at &amp;gt;emulex.com&amp;gt;
---
 drivers/net/ethernet/emulex/benet/be_main.c |   62 ++++++++++++++++----------
 1 files changed, 38 insertions(+), 24 deletions(-)

diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index a444110..7892361 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -842,32 +842,27 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int be_vlan_tag_tx_chk(struct be_adapter *adapter, struct sk_buff *skb)
 return vlan_tx_tag_present(skb) || adapter-&amp;gt;pvid || adapter-&amp;gt;qnq_vid;
 }
 
-static int be_ipv6_tx_stall_chk(struct be_adapter *adapter, struct sk_buff *skb)
+static int be_ipv6_tx_stall_chk(struct be_adapter *adapter,
+struct sk_buff *skb)
 {
-return BE3_chip(adapter) &amp;amp;&amp;amp;
-be_ipv6_exthdr_check(skb);
+return BE3_chip(adapter) &amp;amp;&amp;amp; be_ipv6_exthdr_check(skb);
 }
 
-static netdev_tx_t be_xmit(struct sk_buff *skb,
-struct net_device *netdev)
+static struct sk_buff *be_xmit_workarounds(struct be_adapter *adapter,
+   struct sk_buff *skb,
+   bool *skip_hw_vlan)
 {
-struct be_adapter *adapter = netdev_priv(netdev);
-struct be_tx_obj *txo = &amp;amp;adapter-&amp;gt;tx_obj[skb_get_queue_mapping(skb)];
-struct be_queue_info *txq = &amp;amp;txo-&amp;gt;q;
-struct iphdr *ip = NULL;
-u32 wrb_cnt = 0, copied = 0;
-u32 start = txq-&amp;gt;head, eth_hdr_len;
-bool dummy_wrb, stopped = false;
-bool skip_hw_vlan = false;
 struct vlan_ethhdr *veh = (struct vlan_ethhdr *)skb-&amp;gt;data;
-
-eth_hdr_len = ntohs(skb-&amp;gt;protocol) == ETH_P_8021Q ?
-VLAN_ETH_HLEN : ETH_HLEN;
+unsigned int eth_hdr_len;
+struct iphdr *ip;
 
 /* For padded packets, BE HW modifies tot_len field in IP header
  * incorrecly when VLAN tag is inserted by HW.
  */
-if (skb-&amp;gt;len &amp;lt;= 60 &amp;amp;&amp;amp; vlan_tx_tag_present(skb) &amp;amp;&amp;amp; is_ipv4_pkt(skb)) {
+eth_hdr_len = ntohs(skb-&amp;gt;protocol) == ETH_P_8021Q ?
+VLAN_ETH_HLEN : ETH_HLEN;
+if (skb-&amp;gt;len &amp;lt;= 60 &amp;amp;&amp;amp; vlan_tx_tag_present(skb) &amp;amp;&amp;amp;
+    is_ipv4_pkt(skb)) {
 ip = (struct iphdr *)ip_hdr(skb);
 pskb_trim(skb, eth_hdr_len + ntohs(ip-&amp;gt;tot_len));
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -877,15 +872,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static netdev_tx_t be_xmit(struct sk_buff *skb,
  */
 if ((adapter-&amp;gt;function_mode &amp;amp; UMC_ENABLED) &amp;amp;&amp;amp;
     veh-&amp;gt;h_vlan_proto == htons(ETH_P_8021Q))
-skip_hw_vlan = true;
+*skip_hw_vlan = true;
 
 /* HW has a bug wherein it will calculate CSUM for VLAN
  * pkts even though it is disabled.
  * Manually insert VLAN in pkt.
  */
 if (skb-&amp;gt;ip_summed != CHECKSUM_PARTIAL &amp;amp;&amp;amp;
-vlan_tx_tag_present(skb)) {
-skb = be_insert_vlan_in_pkt(adapter, skb, &amp;amp;skip_hw_vlan);
+    vlan_tx_tag_present(skb)) {
+skb = be_insert_vlan_in_pkt(adapter, skb, skip_hw_vlan);
 if (unlikely(!skb))
 goto tx_drop;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -895,8 +890,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static netdev_tx_t be_xmit(struct sk_buff *skb,
  * skip HW tagging is not enabled by FW.
  */
 if (unlikely(be_ipv6_tx_stall_chk(adapter, skb) &amp;amp;&amp;amp;
-     (adapter-&amp;gt;pvid || adapter-&amp;gt;qnq_vid) &amp;amp;&amp;amp;
-     !qnq_async_evt_rcvd(adapter)))
+    (adapter-&amp;gt;pvid || adapter-&amp;gt;qnq_vid) &amp;amp;&amp;amp;
+    !qnq_async_evt_rcvd(adapter)))
 goto tx_drop;
 
 /* Manual VLAN tag insertion to prevent:
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -907,11 +902,31 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static netdev_tx_t be_xmit(struct sk_buff *skb,
  */
 if (be_ipv6_tx_stall_chk(adapter, skb) &amp;amp;&amp;amp;
     be_vlan_tag_tx_chk(adapter, skb)) {
-skb = be_insert_vlan_in_pkt(adapter, skb, &amp;amp;skip_hw_vlan);
+skb = be_insert_vlan_in_pkt(adapter, skb, skip_hw_vlan);
 if (unlikely(!skb))
 goto tx_drop;
 }
 
+return skb;
+tx_drop:
+dev_kfree_skb_any(skb);
+return NULL;
+}
+
+static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev)
+{
+struct be_adapter *adapter = netdev_priv(netdev);
+struct be_tx_obj *txo = &amp;amp;adapter-&amp;gt;tx_obj[skb_get_queue_mapping(skb)];
+struct be_queue_info *txq = &amp;amp;txo-&amp;gt;q;
+bool dummy_wrb, stopped = false;
+u32 wrb_cnt = 0, copied = 0;
+bool skip_hw_vlan = false;
+u32 start = txq-&amp;gt;head;
+
+skb = be_xmit_workarounds(adapter, skb, &amp;amp;skip_hw_vlan);
+if (!skb)
+return NETDEV_TX_OK;
+
 wrb_cnt = wrb_cnt_for_skb(adapter, skb, &amp;amp;dummy_wrb);
 
 copied = make_tx_wrbs(adapter, txq, skb, wrb_cnt, dummy_wrb,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -941,7 +956,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static netdev_tx_t be_xmit(struct sk_buff *skb,
 txq-&amp;gt;head = start;
 dev_kfree_skb_any(skb);
 }
-tx_drop:
 return NETDEV_TX_OK;
 }
 
&lt;/pre&gt;</description>
    <dc:creator>Sathya Perla</dc:creator>
    <dc:date>2013-05-23T09:04:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270268">
    <title>Re: [PATCH] ip_gre: fix kernel panic with icmp_dest_unreach</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270268</link>
    <description>&lt;pre&gt;
Hello again Eric,
we applied the little patch from:
http://lkml.indiana.edu/hypermail/linux/kernel/1007.0/00961.html
we have flapped the link few times and everything recovered smooth.


&lt;/pre&gt;</description>
    <dc:creator>Daniel Petre</dc:creator>
    <dc:date>2013-05-23T08:47:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270266">
    <title>Re: [PATCH ipsec] xfrm: properly handle invalid states as an error</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270266</link>
    <description>&lt;pre&gt;From: Timo Teräs &amp;lt;timo.teras&amp;lt; at &amp;gt;iki.fi&amp;gt;
Date: Wed, 22 May 2013 14:40:47 +0300


Applied and queued up for -stable, thanks.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T08:20:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270265">
    <title>Re: [Patch net-next] ipv6: use ipv6_addr_scope() helper</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270265</link>
    <description>&lt;pre&gt;From: Cong Wang &amp;lt;xiyou.wangcong&amp;lt; at &amp;gt;gmail.com&amp;gt;
Date: Wed, 22 May 2013 23:52:22 +0800


Applied.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T08:18:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270264">
    <title>Re: [Patch net-next] ipv6: use ipv6_addr_any() helper</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270264</link>
    <description>&lt;pre&gt;From: Nicolas Dichtel &amp;lt;nicolas.dichtel&amp;lt; at &amp;gt;6wind.com&amp;gt;
Date: Wed, 22 May 2013 18:06:38 +0200


Applied.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T08:18:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270263">
    <title>Re: [PATCH] bonding: add synchronize_net() after netdev_rx_handler_unregister</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270263</link>
    <description>&lt;pre&gt;ok, I agree with the views of yours, it is no way to access the rx_handler_data after that.



&lt;/pre&gt;</description>
    <dc:creator>dingtianhong</dc:creator>
    <dc:date>2013-05-23T07:50:46</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270261">
    <title>Re: [PATCH v2 net-next] arp: flush arp cache on IFF_NOARP change</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270261</link>
    <description>&lt;pre&gt;On Thu, 23 May 2013 00:01:36 -0700 (PDT)
David Miller &amp;lt;davem&amp;lt; at &amp;gt;davemloft.net&amp;gt; wrote:


Sure. I'll split this to two patches then and do this.

I would prefer "flags_changed" as then the notifiers can easily test on
the change. Usually the care only about the new state, or if it
changed. Otherwise the change calculation is needed on all notify
callbacks.

Will post this briefly, unless you feel that "orig_flags" is still
preferred.
&lt;/pre&gt;</description>
    <dc:creator>Timo Teras</dc:creator>
    <dc:date>2013-05-23T07:49:44</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270259">
    <title>[PATCH v2 net-next 2/4] bnx2x: Link-flap avoidance in switch dependent mode</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270259</link>
    <description>&lt;pre&gt;From: Dmitry Kravkov &amp;lt;dmitry&amp;lt; at &amp;gt;broadcom.com&amp;gt;

As part of the previous unload flow, probed devices will reset the chip
in order to clean the remains of the UNDI driver.
As a result, it's possible for the FW to toggle the link.

This toggling can prove fatal, as long periods without link can cause the
filesystem mount to fail as the storage protocol timeouts. This has been
observed against particular switches with long link re-establishment time.

This patch informs FW during the reset period that the link should not
be toggled - the FW will keep it alive until some interface will load and claim
the link as its own.

Signed-off-by: Dmitry Kravkov &amp;lt;dmitry&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Yuval Mintz &amp;lt;yuvalmin&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Ariel Elior &amp;lt;ariele&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Eilon Greenstein &amp;lt;eilong&amp;lt; at &amp;gt;broadcom.com&amp;gt;
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x.h      |  2 ++
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c  | 10 ++++++++--
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h  |  2 ++
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 19 ++++++++++++++++---
 4 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
index 3f42910..946450d 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1937,6 +1937,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int bnx2x_sp_post(struct bnx2x *bp, int command, int cid,
 void bnx2x_update_coalesce(struct bnx2x *bp);
 int bnx2x_get_cur_phy_idx(struct bnx2x *bp);
 
+bool bnx2x_port_after_undi(struct bnx2x *bp);
+
 static inline u32 reg_poll(struct bnx2x *bp, u32 reg, u32 expected, int ms,
    int wait)
 {
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index b8fbe26..925d205 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2183,6 +2183,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; alloc_mem_err:
 /* send load request to mcp and analyze response */
 static int bnx2x_nic_load_request(struct bnx2x *bp, u32 *load_code)
 {
+u32 param;
+
 /* init fw_seq */
 bp-&amp;gt;fw_seq =
 (SHMEM_RD(bp, func_mb[BP_FW_MB_IDX(bp)].drv_mb_header) &amp;amp;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2195,9 +2197,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int bnx2x_nic_load_request(struct bnx2x *bp, u32 *load_code)
  DRV_PULSE_SEQ_MASK);
 BNX2X_DEV_INFO("drv_pulse 0x%x\n", bp-&amp;gt;fw_drv_pulse_wr_seq);
 
+param = DRV_MSG_CODE_LOAD_REQ_WITH_LFA;
+
+if (IS_MF_SD(bp) &amp;amp;&amp;amp; bnx2x_port_after_undi(bp))
+param |= DRV_MSG_CODE_LOAD_REQ_FORCE_LFA;
+
 /* load request */
-(*load_code) = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ,
-DRV_MSG_CODE_LOAD_REQ_WITH_LFA);
+(*load_code) = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ, param);
 
 /* if mcp fails to respond we must abort */
 if (!(*load_code)) {
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
index 12f00a4..5ef3f96 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1323,6 +1323,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct drv_func_mb {
 #define DRV_MSG_CODE_UNLOAD_SKIP_LINK_RESET     0x00000002
 
 #define DRV_MSG_CODE_LOAD_REQ_WITH_LFA          0x0000100a
+#define DRV_MSG_CODE_LOAD_REQ_FORCE_LFA         0x00002000
+
 u32 fw_mb_header;
 #define FW_MSG_CODE_MASK                        0xffff0000
 #define FW_MSG_CODE_DRV_LOAD_COMMON             0x10100000
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index b4c9dea..649880d 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -9780,6 +9780,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static bool bnx2x_prev_is_path_marked(struct bnx2x *bp)
 return rc;
 }
 
+bool bnx2x_port_after_undi(struct bnx2x *bp)
+{
+struct bnx2x_prev_path_list *entry;
+bool val;
+
+down(&amp;amp;bnx2x_prev_sem);
+
+entry = bnx2x_prev_path_get_entry(bp);
+val = !!(entry &amp;amp;&amp;amp; (entry-&amp;gt;undi &amp;amp; (1 &amp;lt;&amp;lt; BP_PORT(bp))));
+
+up(&amp;amp;bnx2x_prev_sem);
+
+return val;
+}
+
 static int bnx2x_prev_mark_path(struct bnx2x *bp, bool after_undi)
 {
 struct bnx2x_prev_path_list *tmp_list;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -10036,7 +10051,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int bnx2x_prev_unload(struct bnx2x *bp)
 {
 int time_counter = 10;
 u32 rc, fw, hw_lock_reg, hw_lock_val;
-struct bnx2x_prev_path_list *prev_list;
 BNX2X_DEV_INFO("Entering Previous Unload Flow\n");
 
 /* clear hw from errors which may have resulted from an interrupted
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -10107,8 +10121,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int bnx2x_prev_unload(struct bnx2x *bp)
 }
 
 /* Mark function if its port was used to boot from SAN */
-prev_list = bnx2x_prev_path_get_entry(bp);
-if (prev_list &amp;amp;&amp;amp; (prev_list-&amp;gt;undi &amp;amp; (1 &amp;lt;&amp;lt; BP_PORT(bp))))
+if (bnx2x_port_after_undi(bp))
 bp-&amp;gt;link_params.feature_config_flags |=
 FEATURE_CONFIG_BOOT_FROM_SAN;
 
&lt;/pre&gt;</description>
    <dc:creator>Yuval Mintz</dc:creator>
    <dc:date>2013-05-23T07:21:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270258">
    <title>[PATCH v2 net-next 4/4] bnx2x: Enable `set_phys_id' for all functions</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270258</link>
    <description>&lt;pre&gt;From: Yaniv Rosner &amp;lt;yanivr&amp;lt; at &amp;gt;broadcom.com&amp;gt;

In Multi-function mode, all functions should be able to utilize said function;
There's no reason why only the link owner should be able to do so.

Signed-off-by: Yaniv Rosner &amp;lt;yanivr&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Yuval Mintz &amp;lt;yuvalmin&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Eilon Greenstein &amp;lt;eilong&amp;lt; at &amp;gt;broadcom.com&amp;gt;
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
index da23aea..5bd6b24 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3146,11 +3146,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int bnx2x_set_phys_id(struct net_device *dev,
 return -EAGAIN;
 }
 
-if (!bp-&amp;gt;port.pmf) {
-DP(BNX2X_MSG_ETHTOOL, "Interface is not pmf\n");
-return -EOPNOTSUPP;
-}
-
 switch (state) {
 case ETHTOOL_ID_ACTIVE:
 return 1;/* cycle on/off once per second */
&lt;/pre&gt;</description>
    <dc:creator>Yuval Mintz</dc:creator>
    <dc:date>2013-05-23T07:21:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270257">
    <title>[PATCH v2 net-next 1/4] bnx2x: Add Private Flags Support</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270257</link>
    <description>&lt;pre&gt;Utilize ethtool's callback `get_priv_flags' - shed more light on the
feasibility of devices as storage interfaces.

CC: Ben Hutchings &amp;lt;bhutchings&amp;lt; at &amp;gt;solarflare.com&amp;gt;
Signed-off-by: Yuval Mintz &amp;lt;yuvalmin&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Ariel Elior &amp;lt;ariele&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Eilon Greenstein &amp;lt;eilong&amp;lt; at &amp;gt;broadcom.com&amp;gt;
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x.h        |  2 +
 .../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c    | 49 ++++++++++++++++++----
 2 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
index 3dba2a7..3f42910 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2137,6 +2137,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void bnx2x_igu_clear_sb_gen(struct bnx2x *bp, u8 func, u8 idu_sb_id,
 #define ATTN_HARD_WIRED_MASK0xff00
 #define ATTENTION_ID4
 
+#define IS_MF_STORAGE_ONLY(bp) (IS_MF_STORAGE_SD(bp) || \
+ IS_MF_FCOE_AFEX(bp))
 
 /* stuff added to make the code fit 80Col */
 
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
index ce1a916..da23aea 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1921,6 +1921,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const char bnx2x_tests_str_arr[BNX2X_NUM_TESTS_SF][ETH_GSTRING_LEN] = {
 "link_test (online)         "
 };
 
+enum {
+BNX2X_PRI_FLAG_ISCSI,
+BNX2X_PRI_FLAG_FCOE,
+BNX2X_PRI_FLAG_STORAGE,
+BNX2X_PRI_FLAG_LEN,
+};
+
+static const char bnx2x_private_arr[BNX2X_PRI_FLAG_LEN][ETH_GSTRING_LEN] = {
+"iSCSI offload support",
+"FCoE offload support",
+"Storage only interface"
+};
+
 static u32 bnx2x_eee_to_adv(u32 eee_adv)
 {
 u32 modes = 0;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2978,32 +2991,47 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int bnx2x_num_stat_queues(struct bnx2x *bp)
 static int bnx2x_get_sset_count(struct net_device *dev, int stringset)
 {
 struct bnx2x *bp = netdev_priv(dev);
-int i, num_stats;
+int i, num_strings = 0;
 
 switch (stringset) {
 case ETH_SS_STATS:
 if (is_multi(bp)) {
-num_stats = bnx2x_num_stat_queues(bp) *
-BNX2X_NUM_Q_STATS;
+num_strings = bnx2x_num_stat_queues(bp) *
+      BNX2X_NUM_Q_STATS;
 } else
-num_stats = 0;
+num_strings = 0;
 if (IS_MF_MODE_STAT(bp)) {
 for (i = 0; i &amp;lt; BNX2X_NUM_STATS; i++)
 if (IS_FUNC_STAT(i))
-num_stats++;
+num_strings++;
 } else
-num_stats += BNX2X_NUM_STATS;
+num_strings += BNX2X_NUM_STATS;
 
-return num_stats;
+return num_strings;
 
 case ETH_SS_TEST:
 return BNX2X_NUM_TESTS(bp);
 
+case ETH_SS_PRIV_FLAGS:
+return BNX2X_PRI_FLAG_LEN;
+
 default:
 return -EINVAL;
 }
 }
 
+static u32 bnx2x_get_private_flags(struct net_device *dev)
+{
+struct bnx2x *bp = netdev_priv(dev);
+u32 flags = 0;
+
+flags |= (!(bp-&amp;gt;flags &amp;amp; NO_ISCSI_FLAG) ? 1 : 0) &amp;lt;&amp;lt; BNX2X_PRI_FLAG_ISCSI;
+flags |= (!(bp-&amp;gt;flags &amp;amp; NO_FCOE_FLAG)  ? 1 : 0) &amp;lt;&amp;lt; BNX2X_PRI_FLAG_FCOE;
+flags |= (!!IS_MF_STORAGE_ONLY(bp)) &amp;lt;&amp;lt; BNX2X_PRI_FLAG_STORAGE;
+
+return flags;
+}
+
 static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
 {
 struct bnx2x *bp = netdev_priv(dev);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3045,6 +3073,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
 start = 4;
 memcpy(buf, bnx2x_tests_str_arr + start,
        ETH_GSTRING_LEN * BNX2X_NUM_TESTS(bp));
+break;
+
+case ETH_SS_PRIV_FLAGS:
+memcpy(buf, bnx2x_private_arr,
+       ETH_GSTRING_LEN * BNX2X_PRI_FLAG_LEN);
+break;
 }
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3445,6 +3479,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const struct ethtool_ops bnx2x_ethtool_ops = {
 .set_pauseparam= bnx2x_set_pauseparam,
 .self_test= bnx2x_self_test,
 .get_sset_count= bnx2x_get_sset_count,
+.get_priv_flags= bnx2x_get_private_flags,
 .get_strings= bnx2x_get_strings,
 .set_phys_id= bnx2x_set_phys_id,
 .get_ethtool_stats= bnx2x_get_ethtool_stats,
&lt;/pre&gt;</description>
    <dc:creator>Yuval Mintz</dc:creator>
    <dc:date>2013-05-23T07:21:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270256">
    <title>[PATCH v2 net-next 0/4] bnx2x: Enhancement patch series</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270256</link>
    <description>&lt;pre&gt;Hi Dave,

This series contain several small enhancements - chief among those are
the implementation of ethtool's private flags callback to share information
about the storage offload capabilities of its network interfaces,
and the prevention of a link flap when booting from storage area networks.

Please consider applying these patches to `net-next'.

Changes from V1:
  - Patch 1, removed trailing whitespaces from private flag strings.

Thanks,
Yuval Mintz

&lt;/pre&gt;</description>
    <dc:creator>Yuval Mintz</dc:creator>
    <dc:date>2013-05-23T07:21:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270255">
    <title>[PATCH v2 net-next 3/4] bnx2x: Wait for MCP validity during AER</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270255</link>
    <description>&lt;pre&gt;During PCIe advanced error recovery, the secondary bus reset will cause FW
to reset; This will cause the shared memory between it and the driver to be
invalidated.

During the driver's recovery flow, the driver should not make any assumption
on the validity of that memory and instead re-initialize it.

This also removes a redundant re-initialization of a previously
initialized mutex.

Signed-off-by: Yuval Mintz &amp;lt;yuvalmin&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Ariel Elior &amp;lt;ariele&amp;lt; at &amp;gt;broadcom.com&amp;gt;
Signed-off-by: Eilon Greenstein &amp;lt;eilong&amp;lt; at &amp;gt;broadcom.com&amp;gt;
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 649880d..7ed9cdf 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12760,19 +12760,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int bnx2x_eeh_nic_unload(struct bnx2x *bp)
 return 0;
 }
 
-static void bnx2x_eeh_recover(struct bnx2x *bp)
-{
-u32 val;
-
-mutex_init(&amp;amp;bp-&amp;gt;port.phy_mutex);
-
-
-val = SHMEM_RD(bp, validity_map[BP_PORT(bp)]);
-if ((val &amp;amp; (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB))
-!= (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB))
-BNX2X_ERR("BAD MCP validity signature\n");
-}
-
 /**
  * bnx2x_io_error_detected - called when PCI error is detected
  * &amp;lt; at &amp;gt;pdev: Pointer to PCI device
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12841,6 +12828,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static pci_ers_result_t bnx2x_io_slot_reset(struct pci_dev *pdev)
 
 if (netif_running(dev)) {
 BNX2X_ERR("IO slot reset --&amp;gt; driver unload\n");
+
+/* MCP should have been reset; Need to wait for validity */
+bnx2x_init_shmem(bp);
+
 if (IS_PF(bp) &amp;amp;&amp;amp; SHMEM2_HAS(bp, drv_capabilities_flag)) {
 u32 v;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12899,8 +12890,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void bnx2x_io_resume(struct pci_dev *pdev)
 
 rtnl_lock();
 
-bnx2x_eeh_recover(bp);
-
 bp-&amp;gt;fw_seq = SHMEM_RD(bp, func_mb[BP_FW_MB_IDX(bp)].drv_mb_header) &amp;amp;
 DRV_MSG_SEQ_NUMBER_MASK;
 
&lt;/pre&gt;</description>
    <dc:creator>Yuval Mintz</dc:creator>
    <dc:date>2013-05-23T07:21:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270253">
    <title>Re: [PATCH v2] tcp: bug fix in proportional rate reduction.</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270253</link>
    <description>&lt;pre&gt;From: Yuchung Cheng &amp;lt;ycheng&amp;lt; at &amp;gt;google.com&amp;gt;
Date: Tue, 21 May 2013 18:27:09 -0700


Applied, and queued up for -stable, thanks.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T07:10:31</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270252">
    <title>Re: [B.A.T.M.A.N.] (no subject)</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270252</link>
    <description>&lt;pre&gt;From: Antonio Quartulli &amp;lt;ordex&amp;lt; at &amp;gt;autistici.org&amp;gt;
Date: Tue, 21 May 2013 21:56:26 +0200


Pulled, thanks Antonio.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T07:08:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270251">
    <title>Re: [PATCH net-next] sch_tbf: segment too big GSO packets</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270251</link>
    <description>&lt;pre&gt;From: Jiri Pirko &amp;lt;jiri&amp;lt; at &amp;gt;resnulli.us&amp;gt;
Date: Tue, 21 May 2013 22:39:45 +0200


Applied, thanks everyone.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T07:07:14</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270250">
    <title>Re: [PATCH 2/2] fec: Remove &lt;linux/fec.h&gt; header file</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270250</link>
    <description>&lt;pre&gt;From: Fabio Estevam &amp;lt;festevam&amp;lt; at &amp;gt;gmail.com&amp;gt;
Date: Tue, 21 May 2013 13:02:56 -0300


Ok.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T07:06:07</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270249">
    <title>Re: [PATCH 1/2] fec: Use DIV_ROUND_UP macro</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270249</link>
    <description>&lt;pre&gt;From: Fabio Estevam &amp;lt;fabio.estevam&amp;lt; at &amp;gt;freescale.com&amp;gt;
Date: Tue, 21 May 2013 12:44:26 -0300


Applied.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T07:05:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270248">
    <title>Re: [PATCH net-next 0/2] Fix warnings in cxgb3</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270248</link>
    <description>&lt;pre&gt;From: Vipul Pandya &amp;lt;vipul&amp;lt; at &amp;gt;chelsio.com&amp;gt;
Date: Tue, 21 May 2013 19:51:27 +0530


All applied, thanks.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T07:04:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270247">
    <title>Re: [PATCH v2 net-next] arp: flush arp cache on IFF_NOARP change</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270247</link>
    <description>&lt;pre&gt;From: Timo Teräs &amp;lt;timo.teras&amp;lt; at &amp;gt;iki.fi&amp;gt;
Date: Tue, 21 May 2013 13:23:44 +0300


I agree with Ben that we should have a "orig_priv_flags" or
something like that to implement this, rather than adding
transient state flags to -&amp;gt;priv_flags.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T07:01:36</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network/270246">
    <title>Re: [PATCH RESEND] net: smsc911x: don't artificially limit build</title>
    <link>http://permalink.gmane.org/gmane.linux.network/270246</link>
    <description>&lt;pre&gt;From: Mark Rutland &amp;lt;mark.rutland&amp;lt; at &amp;gt;arm.com&amp;gt;
Date: Tue, 21 May 2013 11:22:37 +0100


Applied.
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2013-05-23T06:58:55</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.network">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.network</link>
  </textinput>
</rdf:RDF>
