From: David S. Miller Date: Tue, 19 Apr 2011 07:21:33 +0000 (-0700) Subject: Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=e1943424e43974f85b82bb31eaf832823bf49ce7;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git Merge branch 'master' of /linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/bnx2x/bnx2x_ethtool.c --- e1943424e43974f85b82bb31eaf832823bf49ce7 diff --cc drivers/net/bna/bfa_ioc.c index c1c9e70eec2f,7581518ecfa2..ba2a4e13cf4f --- a/drivers/net/bna/bfa_ioc.c +++ b/drivers/net/bna/bfa_ioc.c @@@ -1505,10 -1511,10 +1510,10 @@@ bfa_ioc_hb_stop(struct bfa_ioc *ioc */ static void bfa_ioc_download_fw(struct bfa_ioc *ioc, u32 boot_type, - u32 boot_param) + u32 boot_env) { u32 *fwimg; - u32 pgnum, pgoff; + u32 pgnum; u32 loff = 0; u32 chunkno = 0; u32 i; diff --cc drivers/net/bnx2x/bnx2x_ethtool.c index e711a2292446,89cb977898cb..4f42c314986c --- a/drivers/net/bnx2x/bnx2x_ethtool.c +++ b/drivers/net/bnx2x/bnx2x_ethtool.c @@@ -2013,38 -2097,35 +2013,37 @@@ static void bnx2x_get_ethtool_stats(str } } -static int bnx2x_phys_id(struct net_device *dev, u32 data) +static int bnx2x_set_phys_id(struct net_device *dev, + enum ethtool_phys_id_state state) { struct bnx2x *bp = netdev_priv(dev); - int i; if (!netif_running(dev)) - return 0; + return -EAGAIN; if (!bp->port.pmf) - return 0; + return -EOPNOTSUPP; - if (data == 0) - data = 2; + switch (state) { + case ETHTOOL_ID_ACTIVE: + return 1; /* cycle on/off once per second */ - for (i = 0; i < (data * 2); i++) { - if ((i % 2) == 0) - bnx2x_set_led(&bp->link_params, &bp->link_vars, - LED_MODE_ON, SPEED_1000); - else - bnx2x_set_led(&bp->link_params, &bp->link_vars, - LED_MODE_FRONT_PANEL_OFF, 0); + case ETHTOOL_ID_ON: + bnx2x_set_led(&bp->link_params, &bp->link_vars, - LED_MODE_OPER, SPEED_1000); ++ LED_MODE_ON, SPEED_1000); + break; - msleep_interruptible(500); - if (signal_pending(current)) - break; - } + case ETHTOOL_ID_OFF: + bnx2x_set_led(&bp->link_params, &bp->link_vars, - LED_MODE_OFF, 0); ++ LED_MODE_FRONT_PANEL_OFF, 0); + + break; - bnx2x_set_led(&bp->link_params, &bp->link_vars, - LED_MODE_OPER, bp->link_vars.line_speed); + case ETHTOOL_ID_INACTIVE: - if (bp->link_vars.link_up) - bnx2x_set_led(&bp->link_params, &bp->link_vars, - LED_MODE_OPER, - bp->link_vars.line_speed); ++ bnx2x_set_led(&bp->link_params, &bp->link_vars, ++ LED_MODE_OPER, ++ bp->link_vars.line_speed); + } return 0; } diff --cc drivers/net/qlcnic/qlcnic_main.c index 7f9edb2f1474,cb1a1ef36c0a..e9e9ba6efc5f --- a/drivers/net/qlcnic/qlcnic_main.c +++ b/drivers/net/qlcnic/qlcnic_main.c @@@ -2157,9 -2119,26 +2158,22 @@@ qlcnic_xmit_frame(struct sk_buff *skb, } frag_count = skb_shinfo(skb)->nr_frags + 1; + /* 14 frags supported for normal packet and + * 32 frags supported for TSO packet + */ + if (!skb_is_gso(skb) && frag_count > QLCNIC_MAX_FRAGS_PER_TX) { + + for (i = 0; i < (frag_count - QLCNIC_MAX_FRAGS_PER_TX); i++) + delta += skb_shinfo(skb)->frags[i].size; + + if (!__pskb_pull_tail(skb, delta)) + goto drop_packet; + + frag_count = 1 + skb_shinfo(skb)->nr_frags; + } - /* 4 fragments per cmd des */ - no_of_desc = (frag_count + 3) >> 2; - if (unlikely(qlcnic_tx_avail(tx_ring) <= TX_STOP_THRESH)) { netif_stop_queue(netdev); - smp_mb(); if (qlcnic_tx_avail(tx_ring) > TX_STOP_THRESH) netif_start_queue(netdev); else { diff --cc drivers/net/wireless/ath/ath9k/mac.c index 6f431cbff38a,edc1cbbfecaf..1968c67e3fab --- a/drivers/net/wireless/ath/ath9k/mac.c +++ b/drivers/net/wireless/ath/ath9k/mac.c @@@ -710,12 -751,20 +710,19 @@@ void ath9k_hw_abortpcurecv(struct ath_h } EXPORT_SYMBOL(ath9k_hw_abortpcurecv); - bool ath9k_hw_stopdmarecv(struct ath_hw *ah) + bool ath9k_hw_stopdmarecv(struct ath_hw *ah, bool *reset) { #define AH_RX_STOP_DMA_TIMEOUT 10000 /* usec */ -#define AH_RX_TIME_QUANTUM 100 /* usec */ struct ath_common *common = ath9k_hw_common(ah); + u32 mac_status, last_mac_status = 0; int i; + /* Enable access to the DMA observation bus */ + REG_WRITE(ah, AR_MACMISC, + ((AR_MACMISC_DMA_OBS_LINE_8 << AR_MACMISC_DMA_OBS_S) | + (AR_MACMISC_MISC_OBS_BUS_1 << + AR_MACMISC_MISC_OBS_BUS_MSB_S))); + REG_WRITE(ah, AR_CR, AR_CR_RXD); /* Wait for rx enable bit to go low */