Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/emulex/benet/be_main.c drivers/net/ethernet/intel/igb/igb_main.c drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c include/net/scm.h net/batman-adv/routing.c net/ipv4/tcp_input.c The e{uid,gid} --> {uid,gid} credentials fix conflicted with the cleanup in net-next to now pass cred structs around. The be2net driver had a bug fix in 'net' that overlapped with the VLAN interface changes by Patrick McHardy in net-next. An IGB conflict existed because in 'net' the build_skb() support was reverted, and in 'net-next' there was a comment style fix within that code. Several batman-adv conflicts were resolved by making sure that all calls to batadv_is_my_mac() are changed to have a new bat_priv first argument. Eric Dumazet's TS ECR fix in TCP in 'net' conflicted with the F-RTO rewrite in 'net-next', mostly overlapping changes. Thanks to Stephen Rothwell and Antonio Quartulli for help with several of these merge resolutions. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1619,6 +1619,12 @@ int qlcnic_83xx_loopback_test(struct net_device *netdev, u8 mode)
|
||||
}
|
||||
} while ((adapter->ahw->linkup && ahw->has_link_events) != 1);
|
||||
|
||||
/* Make sure carrier is off and queue is stopped during loopback */
|
||||
if (netif_running(netdev)) {
|
||||
netif_carrier_off(netdev);
|
||||
netif_stop_queue(netdev);
|
||||
}
|
||||
|
||||
ret = qlcnic_do_lb_test(adapter, mode);
|
||||
|
||||
qlcnic_83xx_clear_lb_mode(adapter, mode);
|
||||
@@ -2944,6 +2950,7 @@ static u64 *qlcnic_83xx_fill_stats(struct qlcnic_adapter *adapter,
|
||||
void qlcnic_83xx_get_stats(struct qlcnic_adapter *adapter, u64 *data)
|
||||
{
|
||||
struct qlcnic_cmd_args cmd;
|
||||
struct net_device *netdev = adapter->netdev;
|
||||
int ret = 0;
|
||||
|
||||
qlcnic_alloc_mbx_args(&cmd, adapter, QLCNIC_CMD_GET_STATISTICS);
|
||||
@@ -2953,7 +2960,7 @@ void qlcnic_83xx_get_stats(struct qlcnic_adapter *adapter, u64 *data)
|
||||
data = qlcnic_83xx_fill_stats(adapter, &cmd, data,
|
||||
QLC_83XX_STAT_TX, &ret);
|
||||
if (ret) {
|
||||
dev_info(&adapter->pdev->dev, "Error getting MAC stats\n");
|
||||
netdev_err(netdev, "Error getting Tx stats\n");
|
||||
goto out;
|
||||
}
|
||||
/* Get MAC stats */
|
||||
@@ -2963,8 +2970,7 @@ void qlcnic_83xx_get_stats(struct qlcnic_adapter *adapter, u64 *data)
|
||||
data = qlcnic_83xx_fill_stats(adapter, &cmd, data,
|
||||
QLC_83XX_STAT_MAC, &ret);
|
||||
if (ret) {
|
||||
dev_info(&adapter->pdev->dev,
|
||||
"Error getting Rx stats\n");
|
||||
netdev_err(netdev, "Error getting MAC stats\n");
|
||||
goto out;
|
||||
}
|
||||
/* Get Rx stats */
|
||||
@@ -2974,8 +2980,7 @@ void qlcnic_83xx_get_stats(struct qlcnic_adapter *adapter, u64 *data)
|
||||
data = qlcnic_83xx_fill_stats(adapter, &cmd, data,
|
||||
QLC_83XX_STAT_RX, &ret);
|
||||
if (ret)
|
||||
dev_info(&adapter->pdev->dev,
|
||||
"Error getting Tx stats\n");
|
||||
netdev_err(netdev, "Error getting Rx stats\n");
|
||||
out:
|
||||
qlcnic_free_mbx_args(&cmd);
|
||||
}
|
||||
|
@@ -362,8 +362,7 @@ set_flags:
|
||||
memcpy(&first_desc->eth_addr, skb->data, ETH_ALEN);
|
||||
}
|
||||
opcode = TX_ETHER_PKT;
|
||||
if ((adapter->netdev->features & (NETIF_F_TSO | NETIF_F_TSO6)) &&
|
||||
skb_shinfo(skb)->gso_size > 0) {
|
||||
if (skb_is_gso(skb)) {
|
||||
hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
|
||||
first_desc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
|
||||
first_desc->total_hdr_length = hdr_len;
|
||||
|
@@ -198,10 +198,10 @@ beacon_err:
|
||||
}
|
||||
|
||||
err = qlcnic_config_led(adapter, b_state, b_rate);
|
||||
if (!err)
|
||||
if (!err) {
|
||||
err = len;
|
||||
else
|
||||
ahw->beacon_state = b_state;
|
||||
}
|
||||
|
||||
if (test_and_clear_bit(__QLCNIC_DIAG_RES_ALLOC, &adapter->state))
|
||||
qlcnic_diag_free_res(adapter->netdev, max_sds_rings);
|
||||
|
@@ -18,7 +18,7 @@
|
||||
*/
|
||||
#define DRV_NAME "qlge"
|
||||
#define DRV_STRING "QLogic 10 Gigabit PCI-E Ethernet Driver "
|
||||
#define DRV_VERSION "v1.00.00.31"
|
||||
#define DRV_VERSION "v1.00.00.32"
|
||||
|
||||
#define WQ_ADDR_ALIGN 0x3 /* 4 byte alignment */
|
||||
|
||||
|
@@ -379,13 +379,13 @@ static int ql_get_settings(struct net_device *ndev,
|
||||
|
||||
ecmd->supported = SUPPORTED_10000baseT_Full;
|
||||
ecmd->advertising = ADVERTISED_10000baseT_Full;
|
||||
ecmd->autoneg = AUTONEG_ENABLE;
|
||||
ecmd->transceiver = XCVR_EXTERNAL;
|
||||
if ((qdev->link_status & STS_LINK_TYPE_MASK) ==
|
||||
STS_LINK_TYPE_10GBASET) {
|
||||
ecmd->supported |= (SUPPORTED_TP | SUPPORTED_Autoneg);
|
||||
ecmd->advertising |= (ADVERTISED_TP | ADVERTISED_Autoneg);
|
||||
ecmd->port = PORT_TP;
|
||||
ecmd->autoneg = AUTONEG_ENABLE;
|
||||
} else {
|
||||
ecmd->supported |= SUPPORTED_FIBRE;
|
||||
ecmd->advertising |= ADVERTISED_FIBRE;
|
||||
|
@@ -1432,11 +1432,13 @@ map_error:
|
||||
}
|
||||
|
||||
/* Categorizing receive firmware frame errors */
|
||||
static void ql_categorize_rx_err(struct ql_adapter *qdev, u8 rx_err)
|
||||
static void ql_categorize_rx_err(struct ql_adapter *qdev, u8 rx_err,
|
||||
struct rx_ring *rx_ring)
|
||||
{
|
||||
struct nic_stats *stats = &qdev->nic_stats;
|
||||
|
||||
stats->rx_err_count++;
|
||||
rx_ring->rx_errors++;
|
||||
|
||||
switch (rx_err & IB_MAC_IOCB_RSP_ERR_MASK) {
|
||||
case IB_MAC_IOCB_RSP_ERR_CODE_ERR:
|
||||
@@ -1472,6 +1474,12 @@ static void ql_process_mac_rx_gro_page(struct ql_adapter *qdev,
|
||||
struct bq_desc *lbq_desc = ql_get_curr_lchunk(qdev, rx_ring);
|
||||
struct napi_struct *napi = &rx_ring->napi;
|
||||
|
||||
/* Frame error, so drop the packet. */
|
||||
if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
|
||||
ql_categorize_rx_err(qdev, ib_mac_rsp->flags2, rx_ring);
|
||||
put_page(lbq_desc->p.pg_chunk.page);
|
||||
return;
|
||||
}
|
||||
napi->dev = qdev->ndev;
|
||||
|
||||
skb = napi_get_frags(napi);
|
||||
@@ -1525,6 +1533,12 @@ static void ql_process_mac_rx_page(struct ql_adapter *qdev,
|
||||
addr = lbq_desc->p.pg_chunk.va;
|
||||
prefetch(addr);
|
||||
|
||||
/* Frame error, so drop the packet. */
|
||||
if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
|
||||
ql_categorize_rx_err(qdev, ib_mac_rsp->flags2, rx_ring);
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
/* The max framesize filter on this chip is set higher than
|
||||
* MTU since FCoE uses 2k frames.
|
||||
*/
|
||||
@@ -1608,6 +1622,13 @@ static void ql_process_mac_rx_skb(struct ql_adapter *qdev,
|
||||
memcpy(skb_put(new_skb, length), skb->data, length);
|
||||
skb = new_skb;
|
||||
|
||||
/* Frame error, so drop the packet. */
|
||||
if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
|
||||
ql_categorize_rx_err(qdev, ib_mac_rsp->flags2, rx_ring);
|
||||
dev_kfree_skb_any(skb);
|
||||
return;
|
||||
}
|
||||
|
||||
/* loopback self test for ethtool */
|
||||
if (test_bit(QL_SELFTEST, &qdev->flags)) {
|
||||
ql_check_lb_frame(qdev, skb);
|
||||
@@ -1913,6 +1934,13 @@ static void ql_process_mac_split_rx_intr(struct ql_adapter *qdev,
|
||||
return;
|
||||
}
|
||||
|
||||
/* Frame error, so drop the packet. */
|
||||
if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
|
||||
ql_categorize_rx_err(qdev, ib_mac_rsp->flags2, rx_ring);
|
||||
dev_kfree_skb_any(skb);
|
||||
return;
|
||||
}
|
||||
|
||||
/* The max framesize filter on this chip is set higher than
|
||||
* MTU since FCoE uses 2k frames.
|
||||
*/
|
||||
@@ -1994,12 +2022,6 @@ static unsigned long ql_process_mac_rx_intr(struct ql_adapter *qdev,
|
||||
|
||||
QL_DUMP_IB_MAC_RSP(ib_mac_rsp);
|
||||
|
||||
/* Frame error, so drop the packet. */
|
||||
if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
|
||||
ql_categorize_rx_err(qdev, ib_mac_rsp->flags2);
|
||||
return (unsigned long)length;
|
||||
}
|
||||
|
||||
if (ib_mac_rsp->flags4 & IB_MAC_IOCB_RSP_HV) {
|
||||
/* The data and headers are split into
|
||||
* separate buffers.
|
||||
|
Reference in New Issue
Block a user