Hi David,
The following patch set contains a few bug fixes.
Please consider applying this to the net-next tree.
Thanks.
Patch-1 Obtains proper PF number for BEx chips
Patch-2 Fixes a FW update issue seen with BEx chips
Patch-3 Updates copyright string
Patch-4 Fixes TX stats for TSO packets
Patch-5 Enables VF link state setting for BE3
******
Sriharsha Basavapatna (4):
be2net: Provide an alternate way to read pf_num for BEx chips
be2net: NCSI FW section should be properly updated with ethtool for
BE3
be2net: Update Copyright string in be_hw.h
be2net: Fix TX stats for TSO packets
Suresh Reddy (1):
be2net: Enable VF link state setting for BE3
drivers/net/ethernet/emulex/benet/be_cmds.c | 31 +++++++++++++++++++++++++++--
drivers/net/ethernet/emulex/benet/be_cmds.h | 6 +++++-
drivers/net/ethernet/emulex/benet/be_hw.h | 2 +-
drivers/net/ethernet/emulex/benet/be_main.c | 14 +++++++++++--
4 files changed, 47 insertions(+), 6 deletions(-)
--
2.10.0.478.g3ef7618
The driver has a check to ensure that NCSI FW section is updated only
if the current FW version in the card supports it. This FW version check
is done using memcmp() which obviously fails in some cases. Fix this by
breaking up the version string into integer version components and
comparing them.
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
---
drivers/net/ethernet/emulex/benet/be_cmds.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
@@ -2728,6 +2728,26 @@ static int be_flash(struct be_adapter *adapter, const u8 *img,return0;}+#define NCSI_UPDATE_LOG "NCSI section update is not supported in FW ver %s\n"+staticboolbe_fw_ncsi_supported(char*ver)+{+intv1[4]={3,102,148,0};/* Min ver that supports NCSI FW */+intv2[4];+inti;++if(sscanf(ver,"%d.%d.%d.%d",&v2[0],&v2[1],&v2[2],&v2[3])!=4)+returnfalse;++for(i=0;i<4;i++){+if(v1[i]<v2[i])+returntrue;+elseif(v1[i]>v2[i])+returnfalse;+}++returntrue;+}+/* For BE2, BE3 and BE3-R */staticintbe_flash_BEx(structbe_adapter*adapter,conststructfirmware*fw,
@@ -2805,8 +2825,10 @@ static int be_flash_BEx(struct be_adapter *adapter,continue;if((pflashcomp[i].optype==OPTYPE_NCSI_FW)&&-memcmp(adapter->fw_ver,"3.102.148.0",11)<0)+!be_fw_ncsi_supported(adapter->fw_ver)){+dev_info(dev,NCSI_UPDATE_LOG,adapter->fw_ver);continue;+}if(pflashcomp[i].optype==OPTYPE_PHY_FW&&!phy_flashing_required(adapter))
The driver gets the pf_num for Skyhawk and Lancer using
GET_FUNC_CONFIG FW command. But since that command is not
supported in BEx, we need to get it from some other command.
Otherwise TPE recovery would fail since all NIC PFs would
end up with a func num of 0. There's a pci function number
field in the response of GET_CNTL_ATTRIBUTES command that
can be read to get the same info for BEx adapters.
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
---
drivers/net/ethernet/emulex/benet/be_cmds.c | 5 +++++
drivers/net/ethernet/emulex/benet/be_cmds.h | 6 +++++-
2 files changed, 10 insertions(+), 1 deletion(-)
@@ -3527,6 +3527,11 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)for(i=0;i<CNTL_SERIAL_NUM_WORDS;i++)adapter->serial_num[i]=le32_to_cpu(serial_num[i])&(BIT_MASK(16)-1);+/* For BEx, since GET_FUNC_CONFIG command is not+*supported,wereadfuncnumhereasaworkaround.+*/+if(BEx_chip(adapter))+adapter->pf_num=attribs->hba_attribs.pci_funcnum;}err:
This patch updates the year and company name in the copyright string
in be_hw.h.
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
---
drivers/net/ethernet/emulex/benet/be_hw.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
TX stats update does not take into account headers which get duplicated
when the TSO packet is split into segments by HW. Fix this for both
tunneled (vxlan) and non-tunneled TSO packets.
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
---
drivers/net/ethernet/emulex/benet/be_main.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
@@ -724,14 +724,24 @@ void be_link_status_update(struct be_adapter *adapter, u8 link_status)netdev_info(netdev,"Link is %s\n",link_status?"Up":"Down");}+staticintbe_gso_hdr_len(structsk_buff*skb)+{+if(skb->encapsulation)+returnskb_inner_transport_offset(skb)++inner_tcp_hdrlen(skb);+returnskb_transport_offset(skb)+tcp_hdrlen(skb);+}+staticvoidbe_tx_stats_update(structbe_tx_obj*txo,structsk_buff*skb){structbe_tx_stats*stats=tx_stats(txo);-u64tx_pkts=skb_shinfo(skb)->gso_segs?:1;+u32tx_pkts=skb_shinfo(skb)->gso_segs?:1;+/* Account for headers which get duplicated in TSO pkt */+u32dup_hdr_len=tx_pkts>1?be_gso_hdr_len(skb)*(tx_pkts-1):0;u64_stats_update_begin(&stats->sync);stats->tx_reqs++;-stats->tx_bytes+=skb->len;+stats->tx_bytes+=skb->len+dup_hdr_len;stats->tx_pkts+=tx_pkts;if(skb->encapsulation&&skb->ip_summed==CHECKSUM_PARTIAL)stats->tx_vxlan_offload_pkts+=tx_pkts;
From: Suresh Reddy <redacted>
The VF link state setting feature now works on BE3 chips too from
FW ver 11.1.192.0 onwards.
Signed-off-by: Suresh Reddy <redacted>
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
---
drivers/net/ethernet/emulex/benet/be_cmds.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
The following patch set contains a few bug fixes.
Please consider applying this to the net-next tree.
Thanks.
Patch-1 Obtains proper PF number for BEx chips
Patch-2 Fixes a FW update issue seen with BEx chips
Patch-3 Updates copyright string
Patch-4 Fixes TX stats for TSO packets
Patch-5 Enables VF link state setting for BE3
Please do not target real bug fixes at net-next, they should
target 'net' instead.
And that's where I have applied this series.
Thanks.