Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
David S. Miller [Wed, 1 Oct 2008 13:12:56 +0000 (06:12 -0700)]
Conflicts:

drivers/net/wireless/ath9k/core.c
drivers/net/wireless/ath9k/main.c
net/core/dev.c

15 files changed:
1  2 
Documentation/feature-removal-schedule.txt
MAINTAINERS
drivers/net/bnx2.h
drivers/net/e100.c
drivers/net/forcedeth.c
drivers/net/wireless/ath9k/core.c
drivers/net/wireless/ath9k/core.h
drivers/net/wireless/ath9k/main.c
drivers/net/wireless/ath9k/xmit.c
drivers/net/wireless/b43/rfkill.c
include/net/netlink.h
net/core/dev.c
net/ipv4/tcp_ipv4.c
net/ipv6/route.c
net/ipv6/tcp_ipv6.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -683,9 -806,9 +689,10 @@@ int ath_open(struct ath_softc *sc, stru
         * Note we only do this (at the moment) for station mode.
         */
        if (ath9k_hw_phycounters(ah) &&
 -          ((sc->sc_opmode == ATH9K_M_STA) || (sc->sc_opmode == ATH9K_M_IBSS)))
 +          ((sc->sc_ah->ah_opmode == ATH9K_M_STA) ||
 +           (sc->sc_ah->ah_opmode == ATH9K_M_IBSS)))
                sc->sc_imask |= ATH9K_INT_MIB;
+ #endif
        /*
         * Some hardware processes the TIM IE and fires an
         * interrupt when the TIM bit is set.  For hardware
@@@ -1184,8 -1341,10 +1191,10 @@@ void ath_deinit(struct ath_softc *sc
  
        DPRINTF(sc, ATH_DBG_CONFIG, "%s\n", __func__);
  
+       tasklet_kill(&sc->intr_tq);
+       tasklet_kill(&sc->bcon_tasklet);
        ath_stop(sc);
 -      if (!sc->sc_invalid)
 +      if (!(sc->sc_flags & SC_OP_INVALID))
                ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE);
        ath_rate_detach(sc->sc_rc);
        /* cleanup tx queues */
Simple merge
@@@ -1784,10 -1411,17 +1781,17 @@@ static void ath_pci_remove(struct pci_d
  {
        struct ieee80211_hw *hw = pci_get_drvdata(pdev);
        struct ath_softc *sc = hw->priv;
+       enum ath9k_int status;
  
-       if (pdev->irq)
+       if (pdev->irq) {
+               ath9k_hw_set_interrupts(sc->sc_ah, 0);
+               /* clear the ISR */
+               ath9k_hw_getisr(sc->sc_ah, &status);
 -              sc->sc_invalid = 1;
++              sc->sc_flags |= SC_OP_INVALID;
                free_irq(pdev->irq, sc);
+       }
        ath_detach(sc);
        pci_iounmap(pdev, sc->mem);
        pci_release_region(pdev, 0);
        pci_disable_device(pdev);
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
@@@ -1706,8 -1676,9 +1707,9 @@@ static u16 simple_tx_hash(struct net_de
        }
  
        switch (skb->protocol) {
 -      case __constant_htons(ETH_P_IP):
 +      case htons(ETH_P_IP):
-               ip_proto = ip_hdr(skb)->protocol;
+               if (!(ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)))
+                       ip_proto = ip_hdr(skb)->protocol;
                addr1 = ip_hdr(skb)->saddr;
                addr2 = ip_hdr(skb)->daddr;
                ihl = ip_hdr(skb)->ihl;
Simple merge
Simple merge
Simple merge