diff options
| -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; |
