diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-21 13:12:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-21 13:12:25 -0500 |
commit | 292be57e152ef6881089a62298c6ec885ed46f0e (patch) | |
tree | 2f6d79a372be4d6659c7eb393cd7f57ecb1ee869 | |
parent | 1814f2da5ebd7a516805e0a62047cb45eee10bdc (diff) | |
parent | b74665606962456af7f92b1e448cee30ce70967b (diff) |
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:
bnx2: Fix bnx2_netif_stop() merge error.
gianfar: Fix bit definitions of IMASK_GRSC and IMASK_GTSC
gianfar: Fix stats support
gianfar: Fix a filer bug
bnx2: fixing a timout error due not refreshing TX timers correctly
can/at91: don't check platform_get_irq's return value against zero
mISDN: use DECLARE_COMPLETION_ONSTACK for non-constant completion
bnx2: reset_task is crashing the kernel. Fixing it.
ipv6: fix an oops when force unload ipv6 module
TI DaVinci EMAC: Fix MDIO bus frequency configuration
e100: Fix broken cbs accounting due to missing memset.
broadcom: bcm54xx_shadow_read() errors ignored in bcm54xx_adjust_rxrefclk()
e1000e: LED settings in EEPROM ignored on 82571 and 82572
netxen: use module parameter correctly
netns: fix net.ipv6.route.gc_min_interval_ms in netns
Bluetooth: Prevent ill-timed autosuspend in USB driver
Bluetooth: Fix L2CAP locking scheme regression
Bluetooth: Ack L2CAP I-frames before retransmit missing packet
Bluetooth: Fix unset of RemoteBusy flag for L2CAP
Bluetooth: Fix PTR_ERR return of wrong pointer in hidp_setup_hid()
-rw-r--r-- | drivers/bluetooth/btusb.c | 1 | ||||
-rw-r--r-- | drivers/isdn/mISDN/l1oip_core.c | 2 | ||||
-rw-r--r-- | drivers/net/bnx2.c | 12 | ||||
-rw-r--r-- | drivers/net/can/at91_can.c | 2 | ||||
-rw-r--r-- | drivers/net/davinci_emac.c | 2 | ||||
-rw-r--r-- | drivers/net/e100.c | 2 | ||||
-rw-r--r-- | drivers/net/e1000e/82571.c | 6 | ||||
-rw-r--r-- | drivers/net/gianfar.c | 50 | ||||
-rw-r--r-- | drivers/net/gianfar.h | 18 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 57 | ||||
-rw-r--r-- | drivers/net/phy/broadcom.c | 3 | ||||
-rw-r--r-- | net/bluetooth/hidp/core.c | 2 | ||||
-rw-r--r-- | net/bluetooth/l2cap.c | 5 | ||||
-rw-r--r-- | net/ipv6/reassembly.c | 3 | ||||
-rw-r--r-- | net/ipv6/route.c | 1 |
15 files changed, 86 insertions, 80 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 4d2905996751..a699f09ddf7c 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
@@ -307,6 +307,7 @@ static void btusb_bulk_complete(struct urb *urb) | |||
307 | return; | 307 | return; |
308 | 308 | ||
309 | usb_anchor_urb(urb, &data->bulk_anchor); | 309 | usb_anchor_urb(urb, &data->bulk_anchor); |
310 | usb_mark_last_busy(data->udev); | ||
310 | 311 | ||
311 | err = usb_submit_urb(urb, GFP_ATOMIC); | 312 | err = usb_submit_urb(urb, GFP_ATOMIC); |
312 | if (err < 0) { | 313 | if (err < 0) { |
diff --git a/drivers/isdn/mISDN/l1oip_core.c b/drivers/isdn/mISDN/l1oip_core.c index 7e5f30dbc0a0..f1e8af54dff0 100644 --- a/drivers/isdn/mISDN/l1oip_core.c +++ b/drivers/isdn/mISDN/l1oip_core.c | |||
@@ -661,7 +661,7 @@ l1oip_socket_thread(void *data) | |||
661 | size_t recvbuf_size = 1500; | 661 | size_t recvbuf_size = 1500; |
662 | int recvlen; | 662 | int recvlen; |
663 | struct socket *socket = NULL; | 663 | struct socket *socket = NULL; |
664 | DECLARE_COMPLETION(wait); | 664 | DECLARE_COMPLETION_ONSTACK(wait); |
665 | 665 | ||
666 | /* allocate buffer memory */ | 666 | /* allocate buffer memory */ |
667 | recvbuf = kmalloc(recvbuf_size, GFP_KERNEL); | 667 | recvbuf = kmalloc(recvbuf_size, GFP_KERNEL); |
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 4bfc80812926..65df1de447e4 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
@@ -653,12 +653,20 @@ static void | |||
653 | bnx2_netif_stop(struct bnx2 *bp) | 653 | bnx2_netif_stop(struct bnx2 *bp) |
654 | { | 654 | { |
655 | bnx2_cnic_stop(bp); | 655 | bnx2_cnic_stop(bp); |
656 | bnx2_disable_int_sync(bp); | ||
657 | if (netif_running(bp->dev)) { | 656 | if (netif_running(bp->dev)) { |
657 | int i; | ||
658 | |||
658 | bnx2_napi_disable(bp); | 659 | bnx2_napi_disable(bp); |
659 | netif_tx_disable(bp->dev); | 660 | netif_tx_disable(bp->dev); |
660 | bp->dev->trans_start = jiffies; /* prevent tx timeout */ | 661 | /* prevent tx timeout */ |
662 | for (i = 0; i < bp->dev->num_tx_queues; i++) { | ||
663 | struct netdev_queue *txq; | ||
664 | |||
665 | txq = netdev_get_tx_queue(bp->dev, i); | ||
666 | txq->trans_start = jiffies; | ||
667 | } | ||
661 | } | 668 | } |
669 | bnx2_disable_int_sync(bp); | ||
662 | } | 670 | } |
663 | 671 | ||
664 | static void | 672 | static void |
diff --git a/drivers/net/can/at91_can.c b/drivers/net/can/at91_can.c index d0ec17878ffc..166cc7e579c0 100644 --- a/drivers/net/can/at91_can.c +++ b/drivers/net/can/at91_can.c | |||
@@ -1037,7 +1037,7 @@ static int __init at91_can_probe(struct platform_device *pdev) | |||
1037 | 1037 | ||
1038 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1038 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1039 | irq = platform_get_irq(pdev, 0); | 1039 | irq = platform_get_irq(pdev, 0); |
1040 | if (!res || !irq) { | 1040 | if (!res || irq <= 0) { |
1041 | err = -ENODEV; | 1041 | err = -ENODEV; |
1042 | goto exit_put; | 1042 | goto exit_put; |
1043 | } | 1043 | } |
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index 8edac8915ea8..34e03104c3c1 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c | |||
@@ -2272,7 +2272,7 @@ static int emac_mii_reset(struct mii_bus *bus) | |||
2272 | unsigned int clk_div; | 2272 | unsigned int clk_div; |
2273 | int mdio_bus_freq = emac_bus_frequency; | 2273 | int mdio_bus_freq = emac_bus_frequency; |
2274 | 2274 | ||
2275 | if (mdio_max_freq & mdio_bus_freq) | 2275 | if (mdio_max_freq && mdio_bus_freq) |
2276 | clk_div = ((mdio_bus_freq / mdio_max_freq) - 1); | 2276 | clk_div = ((mdio_bus_freq / mdio_max_freq) - 1); |
2277 | else | 2277 | else |
2278 | clk_div = 0xFF; | 2278 | clk_div = 0xFF; |
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index 929701ca07d3..839fb2b136d3 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
@@ -1829,6 +1829,7 @@ static int e100_alloc_cbs(struct nic *nic) | |||
1829 | &nic->cbs_dma_addr); | 1829 | &nic->cbs_dma_addr); |
1830 | if (!nic->cbs) | 1830 | if (!nic->cbs) |
1831 | return -ENOMEM; | 1831 | return -ENOMEM; |
1832 | memset(nic->cbs, 0, count * sizeof(struct cb)); | ||
1832 | 1833 | ||
1833 | for (cb = nic->cbs, i = 0; i < count; cb++, i++) { | 1834 | for (cb = nic->cbs, i = 0; i < count; cb++, i++) { |
1834 | cb->next = (i + 1 < count) ? cb + 1 : nic->cbs; | 1835 | cb->next = (i + 1 < count) ? cb + 1 : nic->cbs; |
@@ -1837,7 +1838,6 @@ static int e100_alloc_cbs(struct nic *nic) | |||
1837 | cb->dma_addr = nic->cbs_dma_addr + i * sizeof(struct cb); | 1838 | cb->dma_addr = nic->cbs_dma_addr + i * sizeof(struct cb); |
1838 | cb->link = cpu_to_le32(nic->cbs_dma_addr + | 1839 | cb->link = cpu_to_le32(nic->cbs_dma_addr + |
1839 | ((i+1) % count) * sizeof(struct cb)); | 1840 | ((i+1) % count) * sizeof(struct cb)); |
1840 | cb->skb = NULL; | ||
1841 | } | 1841 | } |
1842 | 1842 | ||
1843 | nic->cb_to_use = nic->cb_to_send = nic->cb_to_clean = nic->cbs; | 1843 | nic->cb_to_use = nic->cb_to_send = nic->cb_to_clean = nic->cbs; |
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c index c1a42cfc80ba..b979464091bb 100644 --- a/drivers/net/e1000e/82571.c +++ b/drivers/net/e1000e/82571.c | |||
@@ -1290,7 +1290,6 @@ static s32 e1000_setup_link_82571(struct e1000_hw *hw) | |||
1290 | static s32 e1000_setup_copper_link_82571(struct e1000_hw *hw) | 1290 | static s32 e1000_setup_copper_link_82571(struct e1000_hw *hw) |
1291 | { | 1291 | { |
1292 | u32 ctrl; | 1292 | u32 ctrl; |
1293 | u32 led_ctrl; | ||
1294 | s32 ret_val; | 1293 | s32 ret_val; |
1295 | 1294 | ||
1296 | ctrl = er32(CTRL); | 1295 | ctrl = er32(CTRL); |
@@ -1305,11 +1304,6 @@ static s32 e1000_setup_copper_link_82571(struct e1000_hw *hw) | |||
1305 | break; | 1304 | break; |
1306 | case e1000_phy_igp_2: | 1305 | case e1000_phy_igp_2: |
1307 | ret_val = e1000e_copper_link_setup_igp(hw); | 1306 | ret_val = e1000e_copper_link_setup_igp(hw); |
1308 | /* Setup activity LED */ | ||
1309 | led_ctrl = er32(LEDCTL); | ||
1310 | led_ctrl &= IGP_ACTIVITY_LED_MASK; | ||
1311 | led_ctrl |= (IGP_ACTIVITY_LED_ENABLE | IGP_LED3_MODE); | ||
1312 | ew32(LEDCTL, led_ctrl); | ||
1313 | break; | 1307 | break; |
1314 | default: | 1308 | default: |
1315 | return -E1000_ERR_PHY; | 1309 | return -E1000_ERR_PHY; |
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 6850dc0a7b91..e0620d084644 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
@@ -357,8 +357,11 @@ static void gfar_init_mac(struct net_device *ndev) | |||
357 | /* Configure the coalescing support */ | 357 | /* Configure the coalescing support */ |
358 | gfar_configure_coalescing(priv, 0xFF, 0xFF); | 358 | gfar_configure_coalescing(priv, 0xFF, 0xFF); |
359 | 359 | ||
360 | if (priv->rx_filer_enable) | 360 | if (priv->rx_filer_enable) { |
361 | rctrl |= RCTRL_FILREN; | 361 | rctrl |= RCTRL_FILREN; |
362 | /* Program the RIR0 reg with the required distribution */ | ||
363 | gfar_write(®s->rir0, DEFAULT_RIR0); | ||
364 | } | ||
362 | 365 | ||
363 | if (priv->rx_csum_enable) | 366 | if (priv->rx_csum_enable) |
364 | rctrl |= RCTRL_CHECKSUMMING; | 367 | rctrl |= RCTRL_CHECKSUMMING; |
@@ -414,6 +417,36 @@ static void gfar_init_mac(struct net_device *ndev) | |||
414 | gfar_write(®s->fifo_tx_starve_shutoff, priv->fifo_starve_off); | 417 | gfar_write(®s->fifo_tx_starve_shutoff, priv->fifo_starve_off); |
415 | } | 418 | } |
416 | 419 | ||
420 | static struct net_device_stats *gfar_get_stats(struct net_device *dev) | ||
421 | { | ||
422 | struct gfar_private *priv = netdev_priv(dev); | ||
423 | struct netdev_queue *txq; | ||
424 | unsigned long rx_packets = 0, rx_bytes = 0, rx_dropped = 0; | ||
425 | unsigned long tx_packets = 0, tx_bytes = 0; | ||
426 | int i = 0; | ||
427 | |||
428 | for (i = 0; i < priv->num_rx_queues; i++) { | ||
429 | rx_packets += priv->rx_queue[i]->stats.rx_packets; | ||
430 | rx_bytes += priv->rx_queue[i]->stats.rx_bytes; | ||
431 | rx_dropped += priv->rx_queue[i]->stats.rx_dropped; | ||
432 | } | ||
433 | |||
434 | dev->stats.rx_packets = rx_packets; | ||
435 | dev->stats.rx_bytes = rx_bytes; | ||
436 | dev->stats.rx_dropped = rx_dropped; | ||
437 | |||
438 | for (i = 0; i < priv->num_tx_queues; i++) { | ||
439 | txq = netdev_get_tx_queue(dev, i); | ||
440 | tx_bytes += txq->tx_bytes; | ||
441 | tx_packets += txq->tx_packets; | ||
442 | } | ||
443 | |||
444 | dev->stats.tx_bytes = tx_bytes; | ||
445 | dev->stats.tx_packets = tx_packets; | ||
446 | |||
447 | return &dev->stats; | ||
448 | } | ||
449 | |||
417 | static const struct net_device_ops gfar_netdev_ops = { | 450 | static const struct net_device_ops gfar_netdev_ops = { |
418 | .ndo_open = gfar_enet_open, | 451 | .ndo_open = gfar_enet_open, |
419 | .ndo_start_xmit = gfar_start_xmit, | 452 | .ndo_start_xmit = gfar_start_xmit, |
@@ -423,6 +456,7 @@ static const struct net_device_ops gfar_netdev_ops = { | |||
423 | .ndo_tx_timeout = gfar_timeout, | 456 | .ndo_tx_timeout = gfar_timeout, |
424 | .ndo_do_ioctl = gfar_ioctl, | 457 | .ndo_do_ioctl = gfar_ioctl, |
425 | .ndo_select_queue = gfar_select_queue, | 458 | .ndo_select_queue = gfar_select_queue, |
459 | .ndo_get_stats = gfar_get_stats, | ||
426 | .ndo_vlan_rx_register = gfar_vlan_rx_register, | 460 | .ndo_vlan_rx_register = gfar_vlan_rx_register, |
427 | .ndo_set_mac_address = eth_mac_addr, | 461 | .ndo_set_mac_address = eth_mac_addr, |
428 | .ndo_validate_addr = eth_validate_addr, | 462 | .ndo_validate_addr = eth_validate_addr, |
@@ -1022,6 +1056,9 @@ static int gfar_probe(struct of_device *ofdev, | |||
1022 | priv->rx_queue[i]->rxic = DEFAULT_RXIC; | 1056 | priv->rx_queue[i]->rxic = DEFAULT_RXIC; |
1023 | } | 1057 | } |
1024 | 1058 | ||
1059 | /* enable filer if using multiple RX queues*/ | ||
1060 | if(priv->num_rx_queues > 1) | ||
1061 | priv->rx_filer_enable = 1; | ||
1025 | /* Enable most messages by default */ | 1062 | /* Enable most messages by default */ |
1026 | priv->msg_enable = (NETIF_MSG_IFUP << 1 ) - 1; | 1063 | priv->msg_enable = (NETIF_MSG_IFUP << 1 ) - 1; |
1027 | 1064 | ||
@@ -1937,7 +1974,8 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1937 | } | 1974 | } |
1938 | 1975 | ||
1939 | /* Update transmit stats */ | 1976 | /* Update transmit stats */ |
1940 | dev->stats.tx_bytes += skb->len; | 1977 | txq->tx_bytes += skb->len; |
1978 | txq->tx_packets ++; | ||
1941 | 1979 | ||
1942 | txbdp = txbdp_start = tx_queue->cur_tx; | 1980 | txbdp = txbdp_start = tx_queue->cur_tx; |
1943 | 1981 | ||
@@ -2295,8 +2333,6 @@ static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue) | |||
2295 | tx_queue->skb_dirtytx = skb_dirtytx; | 2333 | tx_queue->skb_dirtytx = skb_dirtytx; |
2296 | tx_queue->dirty_tx = bdp; | 2334 | tx_queue->dirty_tx = bdp; |
2297 | 2335 | ||
2298 | dev->stats.tx_packets += howmany; | ||
2299 | |||
2300 | return howmany; | 2336 | return howmany; |
2301 | } | 2337 | } |
2302 | 2338 | ||
@@ -2510,14 +2546,14 @@ int gfar_clean_rx_ring(struct gfar_priv_rx_q *rx_queue, int rx_work_limit) | |||
2510 | } | 2546 | } |
2511 | } else { | 2547 | } else { |
2512 | /* Increment the number of packets */ | 2548 | /* Increment the number of packets */ |
2513 | dev->stats.rx_packets++; | 2549 | rx_queue->stats.rx_packets++; |
2514 | howmany++; | 2550 | howmany++; |
2515 | 2551 | ||
2516 | if (likely(skb)) { | 2552 | if (likely(skb)) { |
2517 | pkt_len = bdp->length - ETH_FCS_LEN; | 2553 | pkt_len = bdp->length - ETH_FCS_LEN; |
2518 | /* Remove the FCS from the packet length */ | 2554 | /* Remove the FCS from the packet length */ |
2519 | skb_put(skb, pkt_len); | 2555 | skb_put(skb, pkt_len); |
2520 | dev->stats.rx_bytes += pkt_len; | 2556 | rx_queue->stats.rx_bytes += pkt_len; |
2521 | 2557 | ||
2522 | gfar_process_frame(dev, skb, amount_pull); | 2558 | gfar_process_frame(dev, skb, amount_pull); |
2523 | 2559 | ||
@@ -2525,7 +2561,7 @@ int gfar_clean_rx_ring(struct gfar_priv_rx_q *rx_queue, int rx_work_limit) | |||
2525 | if (netif_msg_rx_err(priv)) | 2561 | if (netif_msg_rx_err(priv)) |
2526 | printk(KERN_WARNING | 2562 | printk(KERN_WARNING |
2527 | "%s: Missing skb!\n", dev->name); | 2563 | "%s: Missing skb!\n", dev->name); |
2528 | dev->stats.rx_dropped++; | 2564 | rx_queue->stats.rx_dropped++; |
2529 | priv->extra_stats.rx_skbmissing++; | 2565 | priv->extra_stats.rx_skbmissing++; |
2530 | } | 2566 | } |
2531 | 2567 | ||
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h index cbb451011cb5..3d72dc43dca5 100644 --- a/drivers/net/gianfar.h +++ b/drivers/net/gianfar.h | |||
@@ -333,7 +333,7 @@ extern const char gfar_driver_version[]; | |||
333 | #define IMASK_BSY 0x20000000 | 333 | #define IMASK_BSY 0x20000000 |
334 | #define IMASK_EBERR 0x10000000 | 334 | #define IMASK_EBERR 0x10000000 |
335 | #define IMASK_MSRO 0x04000000 | 335 | #define IMASK_MSRO 0x04000000 |
336 | #define IMASK_GRSC 0x02000000 | 336 | #define IMASK_GTSC 0x02000000 |
337 | #define IMASK_BABT 0x01000000 | 337 | #define IMASK_BABT 0x01000000 |
338 | #define IMASK_TXC 0x00800000 | 338 | #define IMASK_TXC 0x00800000 |
339 | #define IMASK_TXEEN 0x00400000 | 339 | #define IMASK_TXEEN 0x00400000 |
@@ -344,7 +344,7 @@ extern const char gfar_driver_version[]; | |||
344 | #define IMASK_XFUN 0x00010000 | 344 | #define IMASK_XFUN 0x00010000 |
345 | #define IMASK_RXB0 0x00008000 | 345 | #define IMASK_RXB0 0x00008000 |
346 | #define IMASK_MAG 0x00000800 | 346 | #define IMASK_MAG 0x00000800 |
347 | #define IMASK_GTSC 0x00000100 | 347 | #define IMASK_GRSC 0x00000100 |
348 | #define IMASK_RXFEN0 0x00000080 | 348 | #define IMASK_RXFEN0 0x00000080 |
349 | #define IMASK_FIR 0x00000008 | 349 | #define IMASK_FIR 0x00000008 |
350 | #define IMASK_FIQ 0x00000004 | 350 | #define IMASK_FIQ 0x00000004 |
@@ -401,6 +401,10 @@ extern const char gfar_driver_version[]; | |||
401 | #define FPR_FILER_MASK 0xFFFFFFFF | 401 | #define FPR_FILER_MASK 0xFFFFFFFF |
402 | #define MAX_FILER_IDX 0xFF | 402 | #define MAX_FILER_IDX 0xFF |
403 | 403 | ||
404 | /* This default RIR value directly corresponds | ||
405 | * to the 3-bit hash value generated */ | ||
406 | #define DEFAULT_RIR0 0x05397700 | ||
407 | |||
404 | /* RQFCR register bits */ | 408 | /* RQFCR register bits */ |
405 | #define RQFCR_GPI 0x80000000 | 409 | #define RQFCR_GPI 0x80000000 |
406 | #define RQFCR_HASHTBL_Q 0x00000000 | 410 | #define RQFCR_HASHTBL_Q 0x00000000 |
@@ -936,6 +940,15 @@ struct gfar_priv_tx_q { | |||
936 | unsigned short txtime; | 940 | unsigned short txtime; |
937 | }; | 941 | }; |
938 | 942 | ||
943 | /* | ||
944 | * Per RX queue stats | ||
945 | */ | ||
946 | struct rx_q_stats { | ||
947 | unsigned long rx_packets; | ||
948 | unsigned long rx_bytes; | ||
949 | unsigned long rx_dropped; | ||
950 | }; | ||
951 | |||
939 | /** | 952 | /** |
940 | * struct gfar_priv_rx_q - per rx queue structure | 953 | * struct gfar_priv_rx_q - per rx queue structure |
941 | * @rxlock: per queue rx spin lock | 954 | * @rxlock: per queue rx spin lock |
@@ -958,6 +971,7 @@ struct gfar_priv_rx_q { | |||
958 | struct rxbd8 *cur_rx; | 971 | struct rxbd8 *cur_rx; |
959 | struct net_device *dev; | 972 | struct net_device *dev; |
960 | struct gfar_priv_grp *grp; | 973 | struct gfar_priv_grp *grp; |
974 | struct rx_q_stats stats; | ||
961 | u16 skb_currx; | 975 | u16 skb_currx; |
962 | u16 qindex; | 976 | u16 qindex; |
963 | unsigned int rx_ring_size; | 977 | unsigned int rx_ring_size; |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index f4996846a234..6cae26a5bd67 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -57,7 +57,9 @@ static int use_msi = 1; | |||
57 | 57 | ||
58 | static int use_msi_x = 1; | 58 | static int use_msi_x = 1; |
59 | 59 | ||
60 | static unsigned long auto_fw_reset = AUTO_FW_RESET_ENABLED; | 60 | static int auto_fw_reset = AUTO_FW_RESET_ENABLED; |
61 | module_param(auto_fw_reset, int, 0644); | ||
62 | MODULE_PARM_DESC(auto_fw_reset,"Auto firmware reset (0=disabled, 1=enabled"); | ||
61 | 63 | ||
62 | static int __devinit netxen_nic_probe(struct pci_dev *pdev, | 64 | static int __devinit netxen_nic_probe(struct pci_dev *pdev, |
63 | const struct pci_device_id *ent); | 65 | const struct pci_device_id *ent); |
@@ -2534,42 +2536,6 @@ static struct bin_attribute bin_attr_mem = { | |||
2534 | .write = netxen_sysfs_write_mem, | 2536 | .write = netxen_sysfs_write_mem, |
2535 | }; | 2537 | }; |
2536 | 2538 | ||
2537 | #ifdef CONFIG_MODULES | ||
2538 | static ssize_t | ||
2539 | netxen_store_auto_fw_reset(struct module_attribute *mattr, | ||
2540 | struct module *mod, const char *buf, size_t count) | ||
2541 | |||
2542 | { | ||
2543 | unsigned long new; | ||
2544 | |||
2545 | if (strict_strtoul(buf, 16, &new)) | ||
2546 | return -EINVAL; | ||
2547 | |||
2548 | if ((new == AUTO_FW_RESET_ENABLED) || (new == AUTO_FW_RESET_DISABLED)) { | ||
2549 | auto_fw_reset = new; | ||
2550 | return count; | ||
2551 | } | ||
2552 | |||
2553 | return -EINVAL; | ||
2554 | } | ||
2555 | |||
2556 | static ssize_t | ||
2557 | netxen_show_auto_fw_reset(struct module_attribute *mattr, | ||
2558 | struct module *mod, char *buf) | ||
2559 | |||
2560 | { | ||
2561 | if (auto_fw_reset == AUTO_FW_RESET_ENABLED) | ||
2562 | return sprintf(buf, "enabled\n"); | ||
2563 | else | ||
2564 | return sprintf(buf, "disabled\n"); | ||
2565 | } | ||
2566 | |||
2567 | static struct module_attribute mod_attr_fw_reset = { | ||
2568 | .attr = {.name = "auto_fw_reset", .mode = (S_IRUGO | S_IWUSR)}, | ||
2569 | .show = netxen_show_auto_fw_reset, | ||
2570 | .store = netxen_store_auto_fw_reset, | ||
2571 | }; | ||
2572 | #endif | ||
2573 | 2539 | ||
2574 | static void | 2540 | static void |
2575 | netxen_create_sysfs_entries(struct netxen_adapter *adapter) | 2541 | netxen_create_sysfs_entries(struct netxen_adapter *adapter) |
@@ -2775,23 +2741,12 @@ static struct pci_driver netxen_driver = { | |||
2775 | 2741 | ||
2776 | static int __init netxen_init_module(void) | 2742 | static int __init netxen_init_module(void) |
2777 | { | 2743 | { |
2778 | #ifdef CONFIG_MODULES | ||
2779 | struct module *mod = THIS_MODULE; | ||
2780 | #endif | ||
2781 | |||
2782 | printk(KERN_INFO "%s\n", netxen_nic_driver_string); | 2744 | printk(KERN_INFO "%s\n", netxen_nic_driver_string); |
2783 | 2745 | ||
2784 | #ifdef CONFIG_INET | 2746 | #ifdef CONFIG_INET |
2785 | register_netdevice_notifier(&netxen_netdev_cb); | 2747 | register_netdevice_notifier(&netxen_netdev_cb); |
2786 | register_inetaddr_notifier(&netxen_inetaddr_cb); | 2748 | register_inetaddr_notifier(&netxen_inetaddr_cb); |
2787 | #endif | 2749 | #endif |
2788 | |||
2789 | #ifdef CONFIG_MODULES | ||
2790 | if (sysfs_create_file(&mod->mkobj.kobj, &mod_attr_fw_reset.attr)) | ||
2791 | printk(KERN_ERR "%s: Failed to create auto_fw_reset " | ||
2792 | "sysfs entry.", netxen_nic_driver_name); | ||
2793 | #endif | ||
2794 | |||
2795 | return pci_register_driver(&netxen_driver); | 2750 | return pci_register_driver(&netxen_driver); |
2796 | } | 2751 | } |
2797 | 2752 | ||
@@ -2799,12 +2754,6 @@ module_init(netxen_init_module); | |||
2799 | 2754 | ||
2800 | static void __exit netxen_exit_module(void) | 2755 | static void __exit netxen_exit_module(void) |
2801 | { | 2756 | { |
2802 | #ifdef CONFIG_MODULES | ||
2803 | struct module *mod = THIS_MODULE; | ||
2804 | |||
2805 | sysfs_remove_file(&mod->mkobj.kobj, &mod_attr_fw_reset.attr); | ||
2806 | #endif | ||
2807 | |||
2808 | pci_unregister_driver(&netxen_driver); | 2757 | pci_unregister_driver(&netxen_driver); |
2809 | 2758 | ||
2810 | #ifdef CONFIG_INET | 2759 | #ifdef CONFIG_INET |
diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c index f63c96a4ecb4..c13cf64095b6 100644 --- a/drivers/net/phy/broadcom.c +++ b/drivers/net/phy/broadcom.c | |||
@@ -326,7 +326,8 @@ error: | |||
326 | 326 | ||
327 | static void bcm54xx_adjust_rxrefclk(struct phy_device *phydev) | 327 | static void bcm54xx_adjust_rxrefclk(struct phy_device *phydev) |
328 | { | 328 | { |
329 | u32 val, orig; | 329 | u32 orig; |
330 | int val; | ||
330 | bool clk125en = true; | 331 | bool clk125en = true; |
331 | 332 | ||
332 | /* Abort if we are using an untested phy. */ | 333 | /* Abort if we are using an untested phy. */ |
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c index 569750010fd3..18e7f5a43dc4 100644 --- a/net/bluetooth/hidp/core.c +++ b/net/bluetooth/hidp/core.c | |||
@@ -770,7 +770,7 @@ static int hidp_setup_hid(struct hidp_session *session, | |||
770 | 770 | ||
771 | hid = hid_allocate_device(); | 771 | hid = hid_allocate_device(); |
772 | if (IS_ERR(hid)) | 772 | if (IS_ERR(hid)) |
773 | return PTR_ERR(session->hid); | 773 | return PTR_ERR(hid); |
774 | 774 | ||
775 | session->hid = hid; | 775 | session->hid = hid; |
776 | session->req = req; | 776 | session->req = req; |
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index 5129b88c8e5b..1120cf14a548 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
@@ -1212,6 +1212,7 @@ static void l2cap_monitor_timeout(unsigned long arg) | |||
1212 | bh_lock_sock(sk); | 1212 | bh_lock_sock(sk); |
1213 | if (l2cap_pi(sk)->retry_count >= l2cap_pi(sk)->remote_max_tx) { | 1213 | if (l2cap_pi(sk)->retry_count >= l2cap_pi(sk)->remote_max_tx) { |
1214 | l2cap_send_disconn_req(l2cap_pi(sk)->conn, sk); | 1214 | l2cap_send_disconn_req(l2cap_pi(sk)->conn, sk); |
1215 | bh_unlock_sock(sk); | ||
1215 | return; | 1216 | return; |
1216 | } | 1217 | } |
1217 | 1218 | ||
@@ -3435,8 +3436,8 @@ static inline int l2cap_data_channel_sframe(struct sock *sk, u16 rx_control, str | |||
3435 | (pi->unacked_frames > 0)) | 3436 | (pi->unacked_frames > 0)) |
3436 | __mod_retrans_timer(); | 3437 | __mod_retrans_timer(); |
3437 | 3438 | ||
3438 | l2cap_ertm_send(sk); | ||
3439 | pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY; | 3439 | pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY; |
3440 | l2cap_ertm_send(sk); | ||
3440 | } | 3441 | } |
3441 | break; | 3442 | break; |
3442 | 3443 | ||
@@ -3471,9 +3472,9 @@ static inline int l2cap_data_channel_sframe(struct sock *sk, u16 rx_control, str | |||
3471 | pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY; | 3472 | pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY; |
3472 | 3473 | ||
3473 | if (rx_control & L2CAP_CTRL_POLL) { | 3474 | if (rx_control & L2CAP_CTRL_POLL) { |
3474 | l2cap_retransmit_frame(sk, tx_seq); | ||
3475 | pi->expected_ack_seq = tx_seq; | 3475 | pi->expected_ack_seq = tx_seq; |
3476 | l2cap_drop_acked_frames(sk); | 3476 | l2cap_drop_acked_frames(sk); |
3477 | l2cap_retransmit_frame(sk, tx_seq); | ||
3477 | l2cap_ertm_send(sk); | 3478 | l2cap_ertm_send(sk); |
3478 | if (pi->conn_state & L2CAP_CONN_WAIT_F) { | 3479 | if (pi->conn_state & L2CAP_CONN_WAIT_F) { |
3479 | pi->srej_save_reqseq = tx_seq; | 3480 | pi->srej_save_reqseq = tx_seq; |
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c index 3b3a95607125..2cddea3bd6be 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c | |||
@@ -708,7 +708,8 @@ static void ip6_frags_ns_sysctl_unregister(struct net *net) | |||
708 | 708 | ||
709 | table = net->ipv6.sysctl.frags_hdr->ctl_table_arg; | 709 | table = net->ipv6.sysctl.frags_hdr->ctl_table_arg; |
710 | unregister_net_sysctl_table(net->ipv6.sysctl.frags_hdr); | 710 | unregister_net_sysctl_table(net->ipv6.sysctl.frags_hdr); |
711 | kfree(table); | 711 | if (!net_eq(net, &init_net)) |
712 | kfree(table); | ||
712 | } | 713 | } |
713 | 714 | ||
714 | static struct ctl_table_header *ip6_ctl_header; | 715 | static struct ctl_table_header *ip6_ctl_header; |
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index db3b27303890..c2bd74c5f8d9 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -2630,6 +2630,7 @@ struct ctl_table *ipv6_route_sysctl_init(struct net *net) | |||
2630 | table[6].data = &net->ipv6.sysctl.ip6_rt_gc_elasticity; | 2630 | table[6].data = &net->ipv6.sysctl.ip6_rt_gc_elasticity; |
2631 | table[7].data = &net->ipv6.sysctl.ip6_rt_mtu_expires; | 2631 | table[7].data = &net->ipv6.sysctl.ip6_rt_mtu_expires; |
2632 | table[8].data = &net->ipv6.sysctl.ip6_rt_min_advmss; | 2632 | table[8].data = &net->ipv6.sysctl.ip6_rt_min_advmss; |
2633 | table[9].data = &net->ipv6.sysctl.ip6_rt_gc_min_interval; | ||
2633 | } | 2634 | } |
2634 | 2635 | ||
2635 | return table; | 2636 | return table; |