mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: ipsec: Fix deadlock in xfrm_state management. ipv: Re-enable IP when MTU > 68 net/xfrm: Use an IS_ERR test rather than a NULL test ath9: Fix ath_rx_flush_tid() for IRQs disabled kernel warning message. ath9k: Incorrect key used when group and pairwise ciphers are different. rt2x00: Compiler warning unmasked by fix of BUILD_BUG_ON mac80211: Fix debugfs union misuse and pointer corruption wireless/libertas/if_cs.c: fix memory leaks orinoco: Multicast to the specified addresses iwlwifi: fix 64bit platform firmware loading iwlwifi: fix apm_stop (wrong bit polarity for FLAG_INIT_DONE) iwlwifi: workaround interrupt handling no some platforms iwlwifi: do not use GFP_DMA in iwl_tx_queue_init net/wireless/Kconfig: clarify the description for CONFIG_WIRELESS_EXT_SYSFS net: Unbreak userspace usage of linux/mroute.h pkt_sched: Fix locking of qdisc_root with qdisc_root_sleeping_lock() ipv6: When we droped a packet, we should return NET_RX_DROP instead of 0
This commit is contained in:
commit
d26acd92fa
29 changed files with 102 additions and 90 deletions
|
|
@ -7285,15 +7285,15 @@ ath9k_hw_set_keycache_entry(struct ath_hal *ah, u16 entry,
|
|||
}
|
||||
break;
|
||||
case ATH9K_CIPHER_WEP:
|
||||
if (k->kv_len < 40 / NBBY) {
|
||||
if (k->kv_len < LEN_WEP40) {
|
||||
DPRINTF(ah->ah_sc, ATH_DBG_KEYCACHE,
|
||||
"%s: WEP key length %u too small\n",
|
||||
__func__, k->kv_len);
|
||||
return false;
|
||||
}
|
||||
if (k->kv_len <= 40 / NBBY)
|
||||
if (k->kv_len <= LEN_WEP40)
|
||||
keyType = AR_KEYTABLE_TYPE_40;
|
||||
else if (k->kv_len <= 104 / NBBY)
|
||||
else if (k->kv_len <= LEN_WEP104)
|
||||
keyType = AR_KEYTABLE_TYPE_104;
|
||||
else
|
||||
keyType = AR_KEYTABLE_TYPE_128;
|
||||
|
|
@ -7313,7 +7313,7 @@ ath9k_hw_set_keycache_entry(struct ath_hal *ah, u16 entry,
|
|||
key2 = get_unaligned_le32(k->kv_val + 6) ^ xorMask;
|
||||
key3 = (get_unaligned_le16(k->kv_val + 10) ^ xorMask) & 0xffff;
|
||||
key4 = get_unaligned_le32(k->kv_val + 12) ^ xorMask;
|
||||
if (k->kv_len <= 104 / NBBY)
|
||||
if (k->kv_len <= LEN_WEP104)
|
||||
key4 &= 0xff;
|
||||
|
||||
if (keyType == AR_KEYTABLE_TYPE_TKIP && ATH9K_IS_MIC_ENABLED(ah)) {
|
||||
|
|
|
|||
|
|
@ -206,7 +206,8 @@ static int ath_key_config(struct ath_softc *sc,
|
|||
if (!ret)
|
||||
return -EIO;
|
||||
|
||||
sc->sc_keytype = hk.kv_type;
|
||||
if (mac)
|
||||
sc->sc_keytype = hk.kv_type;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -756,7 +757,8 @@ static int ath9k_set_key(struct ieee80211_hw *hw,
|
|||
key->hw_key_idx = key->keyidx;
|
||||
/* push IV and Michael MIC generation to stack */
|
||||
key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
|
||||
key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
|
||||
if (key->alg == ALG_TKIP)
|
||||
key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
|
||||
}
|
||||
break;
|
||||
case DISABLE_KEY:
|
||||
|
|
|
|||
|
|
@ -360,8 +360,9 @@ static void ath_rx_flush_tid(struct ath_softc *sc,
|
|||
struct ath_arx_tid *rxtid, int drop)
|
||||
{
|
||||
struct ath_rxbuf *rxbuf;
|
||||
unsigned long flag;
|
||||
|
||||
spin_lock_bh(&rxtid->tidlock);
|
||||
spin_lock_irqsave(&rxtid->tidlock, flag);
|
||||
while (rxtid->baw_head != rxtid->baw_tail) {
|
||||
rxbuf = rxtid->rxbuf + rxtid->baw_head;
|
||||
if (!rxbuf->rx_wbuf) {
|
||||
|
|
@ -382,7 +383,7 @@ static void ath_rx_flush_tid(struct ath_softc *sc,
|
|||
INCR(rxtid->baw_head, ATH_TID_MAX_BUFS);
|
||||
INCR(rxtid->seq_next, IEEE80211_SEQ_MAX);
|
||||
}
|
||||
spin_unlock_bh(&rxtid->tidlock);
|
||||
spin_unlock_irqrestore(&rxtid->tidlock, flag);
|
||||
}
|
||||
|
||||
static struct sk_buff *ath_rxbuf_alloc(struct ath_softc *sc,
|
||||
|
|
|
|||
|
|
@ -474,8 +474,8 @@ static void iwl4965_apm_stop(struct iwl_priv *priv)
|
|||
iwl_set_bit(priv, CSR_RESET, CSR_RESET_REG_FLAG_SW_RESET);
|
||||
|
||||
udelay(10);
|
||||
|
||||
iwl_set_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_INIT_DONE);
|
||||
/* clear "init complete" move adapter D0A* --> D0U state */
|
||||
iwl_clear_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_INIT_DONE);
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,8 @@ static void iwl5000_apm_stop(struct iwl_priv *priv)
|
|||
|
||||
udelay(10);
|
||||
|
||||
iwl_set_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_INIT_DONE);
|
||||
/* clear "init complete" move adapter D0A* --> D0U state */
|
||||
iwl_clear_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_INIT_DONE);
|
||||
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
}
|
||||
|
|
@ -577,14 +578,11 @@ static int iwl5000_load_section(struct iwl_priv *priv,
|
|||
FH_TFDIB_CTRL0_REG(FH_SRVC_CHNL),
|
||||
phy_addr & FH_MEM_TFDIB_DRAM_ADDR_LSB_MSK);
|
||||
|
||||
/* FIME: write the MSB of the phy_addr in CTRL1
|
||||
* iwl_write_direct32(priv,
|
||||
IWL_FH_TFDIB_CTRL1_REG(IWL_FH_SRVC_CHNL),
|
||||
((phy_addr & MSB_MSK)
|
||||
<< FH_MEM_TFDIB_REG1_ADDR_BITSHIFT) | byte_count);
|
||||
*/
|
||||
iwl_write_direct32(priv,
|
||||
FH_TFDIB_CTRL1_REG(FH_SRVC_CHNL), byte_cnt);
|
||||
FH_TFDIB_CTRL1_REG(FH_SRVC_CHNL),
|
||||
(iwl_get_dma_hi_address(phy_addr)
|
||||
<< FH_MEM_TFDIB_REG1_ADDR_BITSHIFT) | byte_cnt);
|
||||
|
||||
iwl_write_direct32(priv,
|
||||
FH_TCSR_CHNL_TX_BUF_STS_REG(FH_SRVC_CHNL),
|
||||
1 << FH_TCSR_CHNL_TX_BUF_STS_REG_POS_TB_NUM |
|
||||
|
|
|
|||
|
|
@ -2602,6 +2602,7 @@ static int iwl4965_mac_start(struct ieee80211_hw *hw)
|
|||
{
|
||||
struct iwl_priv *priv = hw->priv;
|
||||
int ret;
|
||||
u16 pci_cmd;
|
||||
|
||||
IWL_DEBUG_MAC80211("enter\n");
|
||||
|
||||
|
|
@ -2612,6 +2613,13 @@ static int iwl4965_mac_start(struct ieee80211_hw *hw)
|
|||
pci_restore_state(priv->pci_dev);
|
||||
pci_enable_msi(priv->pci_dev);
|
||||
|
||||
/* enable interrupts if needed: hw bug w/a */
|
||||
pci_read_config_word(priv->pci_dev, PCI_COMMAND, &pci_cmd);
|
||||
if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
|
||||
pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
|
||||
pci_write_config_word(priv->pci_dev, PCI_COMMAND, pci_cmd);
|
||||
}
|
||||
|
||||
ret = request_irq(priv->pci_dev->irq, iwl4965_isr, IRQF_SHARED,
|
||||
DRV_NAME, priv);
|
||||
if (ret) {
|
||||
|
|
|
|||
|
|
@ -287,6 +287,7 @@
|
|||
|
||||
#define FH_RSSR_CHNL0_RX_STATUS_CHNL_IDLE (0x01000000)
|
||||
|
||||
#define FH_MEM_TFDIB_REG1_ADDR_BITSHIFT 28
|
||||
|
||||
/**
|
||||
* Transmit DMA Channel Control/Status Registers (TCSR)
|
||||
|
|
|
|||
|
|
@ -426,7 +426,7 @@ static int iwl_tx_queue_init(struct iwl_priv *priv,
|
|||
continue;
|
||||
}
|
||||
|
||||
txq->cmd[i] = kmalloc(len, GFP_KERNEL | GFP_DMA);
|
||||
txq->cmd[i] = kmalloc(len, GFP_KERNEL);
|
||||
if (!txq->cmd[i])
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -595,7 +595,7 @@ static int if_cs_prog_helper(struct if_cs_card *card)
|
|||
if (ret < 0) {
|
||||
lbs_pr_err("can't download helper at 0x%x, ret %d\n",
|
||||
sent, ret);
|
||||
goto done;
|
||||
goto err_release;
|
||||
}
|
||||
|
||||
if (count == 0)
|
||||
|
|
@ -604,9 +604,8 @@ static int if_cs_prog_helper(struct if_cs_card *card)
|
|||
sent += count;
|
||||
}
|
||||
|
||||
err_release:
|
||||
release_firmware(fw);
|
||||
ret = 0;
|
||||
|
||||
done:
|
||||
lbs_deb_leave_args(LBS_DEB_CS, "ret %d", ret);
|
||||
return ret;
|
||||
|
|
@ -676,14 +675,8 @@ static int if_cs_prog_real(struct if_cs_card *card)
|
|||
}
|
||||
|
||||
ret = if_cs_poll_while_fw_download(card, IF_CS_SCRATCH, 0x5a);
|
||||
if (ret < 0) {
|
||||
if (ret < 0)
|
||||
lbs_pr_err("firmware download failed\n");
|
||||
goto err_release;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
goto done;
|
||||
|
||||
|
||||
err_release:
|
||||
release_firmware(fw);
|
||||
|
|
|
|||
|
|
@ -1970,6 +1970,9 @@ __orinoco_set_multicast_list(struct net_device *dev)
|
|||
priv->promiscuous = promisc;
|
||||
}
|
||||
|
||||
/* If we're not in promiscuous mode, then we need to set the
|
||||
* group address if either we want to multicast, or if we were
|
||||
* multicasting and want to stop */
|
||||
if (! promisc && (mc_count || priv->mc_count) ) {
|
||||
struct dev_mc_list *p = dev->mc_list;
|
||||
struct hermes_multicast mclist;
|
||||
|
|
@ -1989,9 +1992,10 @@ __orinoco_set_multicast_list(struct net_device *dev)
|
|||
printk(KERN_WARNING "%s: Multicast list is "
|
||||
"longer than mc_count\n", dev->name);
|
||||
|
||||
err = hermes_write_ltv(hw, USER_BAP, HERMES_RID_CNFGROUPADDRESSES,
|
||||
HERMES_BYTES_TO_RECLEN(priv->mc_count * ETH_ALEN),
|
||||
&mclist);
|
||||
err = hermes_write_ltv(hw, USER_BAP,
|
||||
HERMES_RID_CNFGROUPADDRESSES,
|
||||
HERMES_BYTES_TO_RECLEN(mc_count * ETH_ALEN),
|
||||
&mclist);
|
||||
if (err)
|
||||
printk(KERN_ERR "%s: Error %d setting multicast list.\n",
|
||||
dev->name, err);
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ struct rt2x00_field32 {
|
|||
*/
|
||||
#define is_power_of_two(x) ( !((x) & ((x)-1)) )
|
||||
#define low_bit_mask(x) ( ((x)-1) & ~(x) )
|
||||
#define is_valid_mask(x) is_power_of_two(1 + (x) + low_bit_mask(x))
|
||||
#define is_valid_mask(x) is_power_of_two(1LU + (x) + low_bit_mask(x))
|
||||
|
||||
/*
|
||||
* Macro's to find first set bit in a variable.
|
||||
|
|
@ -173,8 +173,7 @@ struct rt2x00_field32 {
|
|||
* does not exceed the given typelimit.
|
||||
*/
|
||||
#define FIELD_CHECK(__mask, __type) \
|
||||
BUILD_BUG_ON(!__builtin_constant_p(__mask) || \
|
||||
!(__mask) || \
|
||||
BUILD_BUG_ON(!(__mask) || \
|
||||
!is_valid_mask(__mask) || \
|
||||
(__mask) != (__type)(__mask)) \
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue