Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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:
3c509: Add missing EISA IDs
MAINTAINERS: take maintainership of the cpmac Ethernet driver
net/firmare: Ignore .cis files
ath1e: add new device id for asus hardware
mlx4_en: Fix a kernel panic when waking tx queue
rtl8187: add USB ID for Linksys WUSB54GC-EU v2 USB wifi dongle
at76c50x-usb: avoid mutex deadlock in at76_dwork_hw_scan
mac8390: fix build with NET_POLL_CONTROLLER
cxgb3: link fault fixes
cxgb3: fix dma mapping regression
netfilter: nfnetlink_log: fix wrong skbuff size calculation
netfilter: xt_hashlimit does a wrong SEQ_SKIP
bfin_mac: fix build error due to net_device_ops convert
atlx: move modinfo data from atlx.h to atl1.c
gianfar: fix babbling rx error event bug
cls_cgroup: read classid atomically in classifier
netfilter: nf_ct_dccp: add missing DCCP protocol changes in event cache
netfilter: nf_ct_tcp: fix accepting invalid RST segments

+109 -56
+7
MAINTAINERS
··· 1542 1542 S: Maintained 1543 1543 F: drivers/net/wan/cosa* 1544 1544 1545 + CPMAC ETHERNET DRIVER 1546 + P: Florian Fainelli 1547 + M: florian@openwrt.org 1548 + L: netdev@vger.kernel.org 1549 + S: Maintained 1550 + F: drivers/net/cpmac.c 1551 + 1545 1552 CPU FREQUENCY DRIVERS 1546 1553 P: Dave Jones 1547 1554 M: davej@redhat.com
+4
drivers/net/3c509.c
··· 480 480 481 481 #ifdef CONFIG_EISA 482 482 static struct eisa_device_id el3_eisa_ids[] = { 483 + { "TCM5090" }, 484 + { "TCM5091" }, 483 485 { "TCM5092" }, 484 486 { "TCM5093" }, 487 + { "TCM5094" }, 485 488 { "TCM5095" }, 489 + { "TCM5098" }, 486 490 { "" } 487 491 }; 488 492 MODULE_DEVICE_TABLE(eisa, el3_eisa_ids);
+1
drivers/net/atl1e/atl1e_main.c
··· 37 37 */ 38 38 static struct pci_device_id atl1e_pci_tbl[] = { 39 39 {PCI_DEVICE(PCI_VENDOR_ID_ATTANSIC, PCI_DEVICE_ID_ATTANSIC_L1E)}, 40 + {PCI_DEVICE(PCI_VENDOR_ID_ATTANSIC, 0x1066)}, 40 41 /* required last entry */ 41 42 { 0 } 42 43 };
+6
drivers/net/atlx/atl1.c
··· 82 82 83 83 #include "atl1.h" 84 84 85 + #define ATLX_DRIVER_VERSION "2.1.3" 86 + MODULE_AUTHOR("Xiong Huang <xiong.huang@atheros.com>, \ 87 + Chris Snook <csnook@redhat.com>, Jay Cliburn <jcliburn@gmail.com>"); 88 + MODULE_LICENSE("GPL"); 89 + MODULE_VERSION(ATLX_DRIVER_VERSION); 90 + 85 91 /* Temporary hack for merging atl1 and atl2 */ 86 92 #include "atlx.c" 87 93
-6
drivers/net/atlx/atlx.h
··· 29 29 #include <linux/module.h> 30 30 #include <linux/types.h> 31 31 32 - #define ATLX_DRIVER_VERSION "2.1.3" 33 - MODULE_AUTHOR("Xiong Huang <xiong.huang@atheros.com>, \ 34 - Chris Snook <csnook@redhat.com>, Jay Cliburn <jcliburn@gmail.com>"); 35 - MODULE_LICENSE("GPL"); 36 - MODULE_VERSION(ATLX_DRIVER_VERSION); 37 - 38 32 #define ATLX_ERR_PHY 2 39 33 #define ATLX_ERR_PHY_SPEED 7 40 34 #define ATLX_ERR_PHY_RES 8
+14 -15
drivers/net/bfin_mac.c
··· 979 979 return 0; 980 980 } 981 981 982 - static const struct net_device_ops bfin_mac_netdev_ops = { 983 - .ndo_open = bfin_mac_open, 984 - .ndo_stop = bfin_mac_close, 985 - .ndo_start_xmit = bfin_mac_hard_start_xmit, 986 - .ndo_set_mac_address = bfin_mac_set_mac_address, 987 - .ndo_tx_timeout = bfin_mac_timeout, 988 - .ndo_set_multicast_list = bfin_mac_set_multicast_list, 989 - .ndo_validate_addr = eth_validate_addr, 990 - .ndo_change_mtu = eth_change_mtu, 991 - #ifdef CONFIG_NET_POLL_CONTROLLER 992 - .ndo_poll_controller = bfin_mac_poll, 993 - #endif 994 - }; 995 - 996 982 /* 997 - * 998 983 * this makes the board clean up everything that it can 999 984 * and not talk to the outside world. Caused by 1000 985 * an 'ifconfig ethX down' ··· 1003 1018 1004 1019 return 0; 1005 1020 } 1021 + 1022 + static const struct net_device_ops bfin_mac_netdev_ops = { 1023 + .ndo_open = bfin_mac_open, 1024 + .ndo_stop = bfin_mac_close, 1025 + .ndo_start_xmit = bfin_mac_hard_start_xmit, 1026 + .ndo_set_mac_address = bfin_mac_set_mac_address, 1027 + .ndo_tx_timeout = bfin_mac_timeout, 1028 + .ndo_set_multicast_list = bfin_mac_set_multicast_list, 1029 + .ndo_validate_addr = eth_validate_addr, 1030 + .ndo_change_mtu = eth_change_mtu, 1031 + #ifdef CONFIG_NET_POLL_CONTROLLER 1032 + .ndo_poll_controller = bfin_mac_poll, 1033 + #endif 1034 + }; 1006 1035 1007 1036 static int __devinit bfin_mac_probe(struct platform_device *pdev) 1008 1037 {
+2 -2
drivers/net/cxgb3/adapter.h
··· 85 85 struct page *page; 86 86 void *va; 87 87 unsigned int offset; 88 - u64 *p_cnt; 89 - DECLARE_PCI_UNMAP_ADDR(mapping); 88 + unsigned long *p_cnt; 89 + dma_addr_t mapping; 90 90 }; 91 91 92 92 struct rx_desc;
+5 -3
drivers/net/cxgb3/cxgb3_main.c
··· 2496 2496 for_each_port(adapter, i) { 2497 2497 struct net_device *dev = adapter->port[i]; 2498 2498 struct port_info *p = netdev_priv(dev); 2499 + int link_fault; 2499 2500 2500 2501 spin_lock_irq(&adapter->work_lock); 2501 - if (p->link_fault) { 2502 + link_fault = p->link_fault; 2503 + spin_unlock_irq(&adapter->work_lock); 2504 + 2505 + if (link_fault) { 2502 2506 t3_link_fault(adapter, i); 2503 - spin_unlock_irq(&adapter->work_lock); 2504 2507 continue; 2505 2508 } 2506 - spin_unlock_irq(&adapter->work_lock); 2507 2509 2508 2510 if (!(p->phy.caps & SUPPORTED_IRQ) && netif_running(dev)) { 2509 2511 t3_xgm_intr_disable(adapter, i);
+5 -6
drivers/net/cxgb3/sge.c
··· 355 355 (*d->pg_chunk.p_cnt)--; 356 356 if (!*d->pg_chunk.p_cnt) 357 357 pci_unmap_page(pdev, 358 - pci_unmap_addr(&d->pg_chunk, mapping), 358 + d->pg_chunk.mapping, 359 359 q->alloc_size, PCI_DMA_FROMDEVICE); 360 360 361 361 put_page(d->pg_chunk.page); ··· 454 454 q->pg_chunk.offset = 0; 455 455 mapping = pci_map_page(adapter->pdev, q->pg_chunk.page, 456 456 0, q->alloc_size, PCI_DMA_FROMDEVICE); 457 - pci_unmap_addr_set(&q->pg_chunk, mapping, mapping); 457 + q->pg_chunk.mapping = mapping; 458 458 } 459 459 sd->pg_chunk = q->pg_chunk; 460 460 ··· 511 511 nomem: q->alloc_failed++; 512 512 break; 513 513 } 514 - mapping = pci_unmap_addr(&sd->pg_chunk, mapping) + 515 - sd->pg_chunk.offset; 514 + mapping = sd->pg_chunk.mapping + sd->pg_chunk.offset; 516 515 pci_unmap_addr_set(sd, dma_addr, mapping); 517 516 518 517 add_one_rx_chunk(mapping, d, q->gen); ··· 880 881 (*sd->pg_chunk.p_cnt)--; 881 882 if (!*sd->pg_chunk.p_cnt) 882 883 pci_unmap_page(adap->pdev, 883 - pci_unmap_addr(&sd->pg_chunk, mapping), 884 + sd->pg_chunk.mapping, 884 885 fl->alloc_size, 885 886 PCI_DMA_FROMDEVICE); 886 887 if (!skb) { ··· 2095 2096 (*sd->pg_chunk.p_cnt)--; 2096 2097 if (!*sd->pg_chunk.p_cnt) 2097 2098 pci_unmap_page(adap->pdev, 2098 - pci_unmap_addr(&sd->pg_chunk, mapping), 2099 + sd->pg_chunk.mapping, 2099 2100 fl->alloc_size, 2100 2101 PCI_DMA_FROMDEVICE); 2101 2102
+5
drivers/net/cxgb3/t3_hw.c
··· 1274 1274 A_XGM_INT_STATUS + mac->offset); 1275 1275 link_fault &= F_LINKFAULTCHANGE; 1276 1276 1277 + link_ok = lc->link_ok; 1278 + speed = lc->speed; 1279 + duplex = lc->duplex; 1280 + fc = lc->fc; 1281 + 1277 1282 phy->ops->get_link_status(phy, &link_ok, &speed, &duplex, &fc); 1278 1283 1279 1284 if (link_fault) {
+1 -1
drivers/net/gianfar.h
··· 259 259 (IEVENT_RXC | IEVENT_BSY | IEVENT_EBERR | IEVENT_MSRO | \ 260 260 IEVENT_BABT | IEVENT_TXC | IEVENT_TXE | IEVENT_LC \ 261 261 | IEVENT_CRL | IEVENT_XFUN | IEVENT_DPE | IEVENT_PERR \ 262 - | IEVENT_MAG) 262 + | IEVENT_MAG | IEVENT_BABR) 263 263 264 264 #define IMASK_INIT_CLEAR 0x00000000 265 265 #define IMASK_BABR 0x80000000
+1 -1
drivers/net/mac8390.c
··· 489 489 .ndo_set_mac_address = eth_mac_addr, 490 490 .ndo_change_mtu = eth_change_mtu, 491 491 #ifdef CONFIG_NET_POLL_CONTROLLER 492 - .ndo_poll_controller = ei_poll, 492 + .ndo_poll_controller = __ei_poll, 493 493 #endif 494 494 }; 495 495
+4 -4
drivers/net/mlx4/en_tx.c
··· 426 426 427 427 INC_PERF_COUNTER(priv->pstats.tx_poll); 428 428 429 - if (!spin_trylock(&ring->comp_lock)) { 429 + if (!spin_trylock_irq(&ring->comp_lock)) { 430 430 mod_timer(&cq->timer, jiffies + MLX4_EN_TX_POLL_TIMEOUT); 431 431 return; 432 432 } ··· 439 439 if (inflight && priv->port_up) 440 440 mod_timer(&cq->timer, jiffies + MLX4_EN_TX_POLL_TIMEOUT); 441 441 442 - spin_unlock(&ring->comp_lock); 442 + spin_unlock_irq(&ring->comp_lock); 443 443 } 444 444 445 445 static struct mlx4_en_tx_desc *mlx4_en_bounce_to_desc(struct mlx4_en_priv *priv, ··· 482 482 483 483 /* Poll the CQ every mlx4_en_TX_MODER_POLL packets */ 484 484 if ((++ring->poll_cnt & (MLX4_EN_TX_POLL_MODER - 1)) == 0) 485 - if (spin_trylock(&ring->comp_lock)) { 485 + if (spin_trylock_irq(&ring->comp_lock)) { 486 486 mlx4_en_process_tx_cq(priv->dev, cq); 487 - spin_unlock(&ring->comp_lock); 487 + spin_unlock_irq(&ring->comp_lock); 488 488 } 489 489 } 490 490
+1
drivers/net/wireless/Kconfig
··· 430 430 ASUS P5B Deluxe 431 431 Toshiba Satellite Pro series of laptops 432 432 Asus Wireless Link 433 + Linksys WUSB54GC-EU 433 434 434 435 Thanks to Realtek for their support! 435 436
+6 -6
drivers/net/wireless/at76c50x-usb.c
··· 1873 1873 if (ret != CMD_STATUS_COMPLETE) { 1874 1874 queue_delayed_work(priv->hw->workqueue, &priv->dwork_hw_scan, 1875 1875 SCAN_POLL_INTERVAL); 1876 - goto exit; 1876 + mutex_unlock(&priv->mtx); 1877 + return; 1877 1878 } 1878 - 1879 - ieee80211_scan_completed(priv->hw, false); 1880 1879 1881 1880 if (is_valid_ether_addr(priv->bssid)) 1882 1881 at76_join(priv); 1883 1882 1884 - ieee80211_wake_queues(priv->hw); 1885 - 1886 - exit: 1887 1883 mutex_unlock(&priv->mtx); 1884 + 1885 + ieee80211_scan_completed(priv->hw, false); 1886 + 1887 + ieee80211_wake_queues(priv->hw); 1888 1888 } 1889 1889 1890 1890 static int at76_hw_scan(struct ieee80211_hw *hw,
+2
drivers/net/wireless/rtl818x/rtl8187_dev.c
··· 71 71 {USB_DEVICE(0x18E8, 0x6232), .driver_info = DEVICE_RTL8187}, 72 72 /* AirLive */ 73 73 {USB_DEVICE(0x1b75, 0x8187), .driver_info = DEVICE_RTL8187}, 74 + /* Linksys */ 75 + {USB_DEVICE(0x1737, 0x0073), .driver_info = DEVICE_RTL8187B}, 74 76 {} 75 77 }; 76 78
+1
firmware/cis/.gitignore
··· 1 + *.cis
+4
include/linux/netfilter/nf_conntrack_tcp.h
··· 35 35 /* Has unacknowledged data */ 36 36 #define IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED 0x10 37 37 38 + /* The field td_maxack has been set */ 39 + #define IP_CT_TCP_FLAG_MAXACK_SET 0x20 40 + 38 41 struct nf_ct_tcp_flags { 39 42 __u8 flags; 40 43 __u8 mask; ··· 49 46 u_int32_t td_end; /* max of seq + len */ 50 47 u_int32_t td_maxend; /* max of ack + max(win, 1) */ 51 48 u_int32_t td_maxwin; /* max(win) */ 49 + u_int32_t td_maxack; /* max of ack */ 52 50 u_int8_t td_scale; /* window scale factor */ 53 51 u_int8_t flags; /* per direction options */ 54 52 };
+4
net/netfilter/nf_conntrack_proto_dccp.c
··· 22 22 #include <linux/netfilter/nfnetlink_conntrack.h> 23 23 #include <net/netfilter/nf_conntrack.h> 24 24 #include <net/netfilter/nf_conntrack_l4proto.h> 25 + #include <net/netfilter/nf_conntrack_ecache.h> 25 26 #include <net/netfilter/nf_log.h> 26 27 27 28 static DEFINE_RWLOCK(dccp_lock); ··· 553 552 ct->proto.dccp.last_pkt = type; 554 553 ct->proto.dccp.state = new_state; 555 554 write_unlock_bh(&dccp_lock); 555 + 556 + if (new_state != old_state) 557 + nf_conntrack_event_cache(IPCT_PROTOINFO, ct); 556 558 557 559 dn = dccp_pernet(net); 558 560 nf_ct_refresh_acct(ct, ctinfo, skb, dn->dccp_timeout[new_state]);
+18
net/netfilter/nf_conntrack_proto_tcp.c
··· 634 634 sender->td_end = end; 635 635 sender->flags |= IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED; 636 636 } 637 + if (tcph->ack) { 638 + if (!(sender->flags & IP_CT_TCP_FLAG_MAXACK_SET)) { 639 + sender->td_maxack = ack; 640 + sender->flags |= IP_CT_TCP_FLAG_MAXACK_SET; 641 + } else if (after(ack, sender->td_maxack)) 642 + sender->td_maxack = ack; 643 + } 644 + 637 645 /* 638 646 * Update receiver data. 639 647 */ ··· 926 918 "nf_ct_tcp: invalid state "); 927 919 return -NF_ACCEPT; 928 920 case TCP_CONNTRACK_CLOSE: 921 + if (index == TCP_RST_SET 922 + && (ct->proto.tcp.seen[!dir].flags & IP_CT_TCP_FLAG_MAXACK_SET) 923 + && before(ntohl(th->seq), ct->proto.tcp.seen[!dir].td_maxack)) { 924 + /* Invalid RST */ 925 + write_unlock_bh(&tcp_lock); 926 + if (LOG_INVALID(net, IPPROTO_TCP)) 927 + nf_log_packet(pf, 0, skb, NULL, NULL, NULL, 928 + "nf_ct_tcp: invalid RST "); 929 + return -NF_ACCEPT; 930 + } 929 931 if (index == TCP_RST_SET 930 932 && ((test_bit(IPS_SEEN_REPLY_BIT, &ct->status) 931 933 && ct->proto.tcp.last_index == TCP_SYN_SET)
+1 -1
net/netfilter/xt_hashlimit.c
··· 926 926 if (!hlist_empty(&htable->hash[*bucket])) { 927 927 hlist_for_each_entry(ent, pos, &htable->hash[*bucket], node) 928 928 if (dl_seq_real_show(ent, htable->family, s)) 929 - return 1; 929 + return -1; 930 930 } 931 931 return 0; 932 932 }
+11 -11
net/sched/cls_cgroup.c
··· 104 104 struct tcf_result *res) 105 105 { 106 106 struct cls_cgroup_head *head = tp->root; 107 - struct cgroup_cls_state *cs; 108 - int ret = 0; 107 + u32 classid; 109 108 110 109 /* 111 110 * Due to the nature of the classifier it is required to ignore all ··· 120 121 return -1; 121 122 122 123 rcu_read_lock(); 123 - cs = task_cls_state(current); 124 - if (cs->classid && tcf_em_tree_match(skb, &head->ematches, NULL)) { 125 - res->classid = cs->classid; 126 - res->class = 0; 127 - ret = tcf_exts_exec(skb, &head->exts, res); 128 - } else 129 - ret = -1; 130 - 124 + classid = task_cls_state(current)->classid; 131 125 rcu_read_unlock(); 132 126 133 - return ret; 127 + if (!classid) 128 + return -1; 129 + 130 + if (!tcf_em_tree_match(skb, &head->ematches, NULL)) 131 + return -1; 132 + 133 + res->classid = classid; 134 + res->class = 0; 135 + return tcf_exts_exec(skb, &head->exts, res); 134 136 } 135 137 136 138 static unsigned long cls_cgroup_get(struct tcf_proto *tp, u32 handle)