diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-22 18:34:23 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-22 18:34:23 -0400 |
| commit | 4848490c50c5d46d4e9749fddc374c303823bcc4 (patch) | |
| tree | f8ef23f86241789521b637fd39f80ef6f5018518 /drivers | |
| parent | d995053d045d777e78ba7eba71a6a0733f3aa726 (diff) | |
| parent | 845de8afa66550331dca164ab77fa49de930b699 (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: (21 commits)
niu: VLAN_ETH_HLEN should be used to make sure that the whole MAC header was copied to the head buffer in the Vlan packets case
KS8851: Fix ks8851_set_rx_mode() for IFF_MULTICAST
KS8851: Fix MAC address write order
KS8851: Add soft reset at probe time
net: fix section mismatch in fec.c
net: Fix struct inet_timewait_sock bitfield annotation
tcp: Try to catch MSG_PEEK bug
net: Fix IP_MULTICAST_IF
bluetooth: static lock key fix
bluetooth: scheduling while atomic bug fix
tcp: fix TCP_DEFER_ACCEPT retrans calculation
tcp: reduce SYN-ACK retrans for TCP_DEFER_ACCEPT
tcp: accept socket after TCP_DEFER_ACCEPT period
Revert "tcp: fix tcp_defer_accept to consider the timeout"
AF_UNIX: Fix deadlock on connecting to shutdown socket
ethoc: clear only pending irqs
ethoc: inline regs access
vmxnet3: use dev_dbg, fix build for CONFIG_BLOCK=n
virtio_net: use dev_kfree_skb_any() in free_old_xmit_skbs()
be2net: fix support for PCI hot plug
...
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/benet/be_cmds.c | 33 | ||||
| -rw-r--r-- | drivers/net/benet/be_cmds.h | 5 | ||||
| -rw-r--r-- | drivers/net/benet/be_main.c | 27 | ||||
| -rw-r--r-- | drivers/net/ethoc.c | 21 | ||||
| -rw-r--r-- | drivers/net/fec.c | 2 | ||||
| -rw-r--r-- | drivers/net/ks8851.c | 42 | ||||
| -rw-r--r-- | drivers/net/ks8851.h | 1 | ||||
| -rw-r--r-- | drivers/net/niu.c | 2 | ||||
| -rw-r--r-- | drivers/net/virtio_net.c | 2 | ||||
| -rw-r--r-- | drivers/net/vmxnet3/vmxnet3_drv.c | 27 | ||||
| -rw-r--r-- | drivers/net/vmxnet3/vmxnet3_int.h | 2 |
11 files changed, 111 insertions, 53 deletions
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c index 89876ade5e33..28a0eda92680 100644 --- a/drivers/net/benet/be_cmds.c +++ b/drivers/net/benet/be_cmds.c | |||
| @@ -243,15 +243,26 @@ static int be_POST_stage_get(struct be_adapter *adapter, u16 *stage) | |||
| 243 | 243 | ||
| 244 | int be_cmd_POST(struct be_adapter *adapter) | 244 | int be_cmd_POST(struct be_adapter *adapter) |
| 245 | { | 245 | { |
| 246 | u16 stage, error; | 246 | u16 stage; |
| 247 | int status, timeout = 0; | ||
| 247 | 248 | ||
| 248 | error = be_POST_stage_get(adapter, &stage); | 249 | do { |
| 249 | if (error || stage != POST_STAGE_ARMFW_RDY) { | 250 | status = be_POST_stage_get(adapter, &stage); |
| 250 | dev_err(&adapter->pdev->dev, "POST failed.\n"); | 251 | if (status) { |
| 251 | return -1; | 252 | dev_err(&adapter->pdev->dev, "POST error; stage=0x%x\n", |
| 252 | } | 253 | stage); |
| 254 | return -1; | ||
| 255 | } else if (stage != POST_STAGE_ARMFW_RDY) { | ||
| 256 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 257 | schedule_timeout(2 * HZ); | ||
| 258 | timeout += 2; | ||
| 259 | } else { | ||
| 260 | return 0; | ||
| 261 | } | ||
| 262 | } while (timeout < 20); | ||
| 253 | 263 | ||
| 254 | return 0; | 264 | dev_err(&adapter->pdev->dev, "POST timeout; stage=0x%x\n", stage); |
| 265 | return -1; | ||
| 255 | } | 266 | } |
| 256 | 267 | ||
| 257 | static inline void *embedded_payload(struct be_mcc_wrb *wrb) | 268 | static inline void *embedded_payload(struct be_mcc_wrb *wrb) |
| @@ -729,8 +740,8 @@ int be_cmd_q_destroy(struct be_adapter *adapter, struct be_queue_info *q, | |||
| 729 | /* Create an rx filtering policy configuration on an i/f | 740 | /* Create an rx filtering policy configuration on an i/f |
| 730 | * Uses mbox | 741 | * Uses mbox |
| 731 | */ | 742 | */ |
| 732 | int be_cmd_if_create(struct be_adapter *adapter, u32 flags, u8 *mac, | 743 | int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, u32 en_flags, |
| 733 | bool pmac_invalid, u32 *if_handle, u32 *pmac_id) | 744 | u8 *mac, bool pmac_invalid, u32 *if_handle, u32 *pmac_id) |
| 734 | { | 745 | { |
| 735 | struct be_mcc_wrb *wrb; | 746 | struct be_mcc_wrb *wrb; |
| 736 | struct be_cmd_req_if_create *req; | 747 | struct be_cmd_req_if_create *req; |
| @@ -746,8 +757,8 @@ int be_cmd_if_create(struct be_adapter *adapter, u32 flags, u8 *mac, | |||
| 746 | be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, | 757 | be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, |
| 747 | OPCODE_COMMON_NTWK_INTERFACE_CREATE, sizeof(*req)); | 758 | OPCODE_COMMON_NTWK_INTERFACE_CREATE, sizeof(*req)); |
| 748 | 759 | ||
| 749 | req->capability_flags = cpu_to_le32(flags); | 760 | req->capability_flags = cpu_to_le32(cap_flags); |
| 750 | req->enable_flags = cpu_to_le32(flags); | 761 | req->enable_flags = cpu_to_le32(en_flags); |
| 751 | req->pmac_invalid = pmac_invalid; | 762 | req->pmac_invalid = pmac_invalid; |
| 752 | if (!pmac_invalid) | 763 | if (!pmac_invalid) |
| 753 | memcpy(req->mac_addr, mac, ETH_ALEN); | 764 | memcpy(req->mac_addr, mac, ETH_ALEN); |
diff --git a/drivers/net/benet/be_cmds.h b/drivers/net/benet/be_cmds.h index a86f917f85f4..49953787e41c 100644 --- a/drivers/net/benet/be_cmds.h +++ b/drivers/net/benet/be_cmds.h | |||
| @@ -720,8 +720,9 @@ extern int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr, | |||
| 720 | extern int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr, | 720 | extern int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr, |
| 721 | u32 if_id, u32 *pmac_id); | 721 | u32 if_id, u32 *pmac_id); |
| 722 | extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id); | 722 | extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, u32 pmac_id); |
| 723 | extern int be_cmd_if_create(struct be_adapter *adapter, u32 if_flags, u8 *mac, | 723 | extern int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, |
| 724 | bool pmac_invalid, u32 *if_handle, u32 *pmac_id); | 724 | u32 en_flags, u8 *mac, bool pmac_invalid, |
| 725 | u32 *if_handle, u32 *pmac_id); | ||
| 725 | extern int be_cmd_if_destroy(struct be_adapter *adapter, u32 if_handle); | 726 | extern int be_cmd_if_destroy(struct be_adapter *adapter, u32 if_handle); |
| 726 | extern int be_cmd_eq_create(struct be_adapter *adapter, | 727 | extern int be_cmd_eq_create(struct be_adapter *adapter, |
| 727 | struct be_queue_info *eq, int eq_delay); | 728 | struct be_queue_info *eq, int eq_delay); |
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index 6d5e81f7046f..1f941f027718 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
| @@ -1620,19 +1620,22 @@ static int be_open(struct net_device *netdev) | |||
| 1620 | static int be_setup(struct be_adapter *adapter) | 1620 | static int be_setup(struct be_adapter *adapter) |
| 1621 | { | 1621 | { |
| 1622 | struct net_device *netdev = adapter->netdev; | 1622 | struct net_device *netdev = adapter->netdev; |
| 1623 | u32 if_flags; | 1623 | u32 cap_flags, en_flags; |
| 1624 | int status; | 1624 | int status; |
| 1625 | 1625 | ||
| 1626 | if_flags = BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_PROMISCUOUS | | 1626 | cap_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | |
| 1627 | BE_IF_FLAGS_MCAST_PROMISCUOUS | BE_IF_FLAGS_UNTAGGED | | 1627 | BE_IF_FLAGS_MCAST_PROMISCUOUS | |
| 1628 | BE_IF_FLAGS_PASS_L3L4_ERRORS; | 1628 | BE_IF_FLAGS_PROMISCUOUS | |
| 1629 | status = be_cmd_if_create(adapter, if_flags, netdev->dev_addr, | 1629 | BE_IF_FLAGS_PASS_L3L4_ERRORS; |
| 1630 | false/* pmac_invalid */, &adapter->if_handle, | 1630 | en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | |
| 1631 | &adapter->pmac_id); | 1631 | BE_IF_FLAGS_PASS_L3L4_ERRORS; |
| 1632 | |||
| 1633 | status = be_cmd_if_create(adapter, cap_flags, en_flags, | ||
| 1634 | netdev->dev_addr, false/* pmac_invalid */, | ||
| 1635 | &adapter->if_handle, &adapter->pmac_id); | ||
| 1632 | if (status != 0) | 1636 | if (status != 0) |
| 1633 | goto do_none; | 1637 | goto do_none; |
| 1634 | 1638 | ||
| 1635 | |||
| 1636 | status = be_tx_queues_create(adapter); | 1639 | status = be_tx_queues_create(adapter); |
| 1637 | if (status != 0) | 1640 | if (status != 0) |
| 1638 | goto if_destroy; | 1641 | goto if_destroy; |
| @@ -2055,6 +2058,10 @@ static int be_hw_up(struct be_adapter *adapter) | |||
| 2055 | if (status) | 2058 | if (status) |
| 2056 | return status; | 2059 | return status; |
| 2057 | 2060 | ||
| 2061 | status = be_cmd_reset_function(adapter); | ||
| 2062 | if (status) | ||
| 2063 | return status; | ||
| 2064 | |||
| 2058 | status = be_cmd_get_fw_ver(adapter, adapter->fw_ver); | 2065 | status = be_cmd_get_fw_ver(adapter, adapter->fw_ver); |
| 2059 | if (status) | 2066 | if (status) |
| 2060 | return status; | 2067 | return status; |
| @@ -2108,10 +2115,6 @@ static int __devinit be_probe(struct pci_dev *pdev, | |||
| 2108 | if (status) | 2115 | if (status) |
| 2109 | goto free_netdev; | 2116 | goto free_netdev; |
| 2110 | 2117 | ||
| 2111 | status = be_cmd_reset_function(adapter); | ||
| 2112 | if (status) | ||
| 2113 | goto ctrl_clean; | ||
| 2114 | |||
| 2115 | status = be_stats_init(adapter); | 2118 | status = be_stats_init(adapter); |
| 2116 | if (status) | 2119 | if (status) |
| 2117 | goto ctrl_clean; | 2120 | goto ctrl_clean; |
diff --git a/drivers/net/ethoc.c b/drivers/net/ethoc.c index 9c950bb5e90c..f7d9ac8324cb 100644 --- a/drivers/net/ethoc.c +++ b/drivers/net/ethoc.c | |||
| @@ -223,24 +223,25 @@ struct ethoc_bd { | |||
| 223 | u32 addr; | 223 | u32 addr; |
| 224 | }; | 224 | }; |
| 225 | 225 | ||
| 226 | static u32 ethoc_read(struct ethoc *dev, loff_t offset) | 226 | static inline u32 ethoc_read(struct ethoc *dev, loff_t offset) |
| 227 | { | 227 | { |
| 228 | return ioread32(dev->iobase + offset); | 228 | return ioread32(dev->iobase + offset); |
| 229 | } | 229 | } |
| 230 | 230 | ||
| 231 | static void ethoc_write(struct ethoc *dev, loff_t offset, u32 data) | 231 | static inline void ethoc_write(struct ethoc *dev, loff_t offset, u32 data) |
| 232 | { | 232 | { |
| 233 | iowrite32(data, dev->iobase + offset); | 233 | iowrite32(data, dev->iobase + offset); |
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | static void ethoc_read_bd(struct ethoc *dev, int index, struct ethoc_bd *bd) | 236 | static inline void ethoc_read_bd(struct ethoc *dev, int index, |
| 237 | struct ethoc_bd *bd) | ||
| 237 | { | 238 | { |
| 238 | loff_t offset = ETHOC_BD_BASE + (index * sizeof(struct ethoc_bd)); | 239 | loff_t offset = ETHOC_BD_BASE + (index * sizeof(struct ethoc_bd)); |
| 239 | bd->stat = ethoc_read(dev, offset + 0); | 240 | bd->stat = ethoc_read(dev, offset + 0); |
| 240 | bd->addr = ethoc_read(dev, offset + 4); | 241 | bd->addr = ethoc_read(dev, offset + 4); |
| 241 | } | 242 | } |
| 242 | 243 | ||
| 243 | static void ethoc_write_bd(struct ethoc *dev, int index, | 244 | static inline void ethoc_write_bd(struct ethoc *dev, int index, |
| 244 | const struct ethoc_bd *bd) | 245 | const struct ethoc_bd *bd) |
| 245 | { | 246 | { |
| 246 | loff_t offset = ETHOC_BD_BASE + (index * sizeof(struct ethoc_bd)); | 247 | loff_t offset = ETHOC_BD_BASE + (index * sizeof(struct ethoc_bd)); |
| @@ -248,33 +249,33 @@ static void ethoc_write_bd(struct ethoc *dev, int index, | |||
| 248 | ethoc_write(dev, offset + 4, bd->addr); | 249 | ethoc_write(dev, offset + 4, bd->addr); |
| 249 | } | 250 | } |
| 250 | 251 | ||
| 251 | static void ethoc_enable_irq(struct ethoc *dev, u32 mask) | 252 | static inline void ethoc_enable_irq(struct ethoc *dev, u32 mask) |
| 252 | { | 253 | { |
| 253 | u32 imask = ethoc_read(dev, INT_MASK); | 254 | u32 imask = ethoc_read(dev, INT_MASK); |
| 254 | imask |= mask; | 255 | imask |= mask; |
| 255 | ethoc_write(dev, INT_MASK, imask); | 256 | ethoc_write(dev, INT_MASK, imask); |
| 256 | } | 257 | } |
| 257 | 258 | ||
| 258 | static void ethoc_disable_irq(struct ethoc *dev, u32 mask) | 259 | static inline void ethoc_disable_irq(struct ethoc *dev, u32 mask) |
| 259 | { | 260 | { |
| 260 | u32 imask = ethoc_read(dev, INT_MASK); | 261 | u32 imask = ethoc_read(dev, INT_MASK); |
| 261 | imask &= ~mask; | 262 | imask &= ~mask; |
| 262 | ethoc_write(dev, INT_MASK, imask); | 263 | ethoc_write(dev, INT_MASK, imask); |
| 263 | } | 264 | } |
| 264 | 265 | ||
| 265 | static void ethoc_ack_irq(struct ethoc *dev, u32 mask) | 266 | static inline void ethoc_ack_irq(struct ethoc *dev, u32 mask) |
| 266 | { | 267 | { |
| 267 | ethoc_write(dev, INT_SOURCE, mask); | 268 | ethoc_write(dev, INT_SOURCE, mask); |
| 268 | } | 269 | } |
| 269 | 270 | ||
| 270 | static void ethoc_enable_rx_and_tx(struct ethoc *dev) | 271 | static inline void ethoc_enable_rx_and_tx(struct ethoc *dev) |
| 271 | { | 272 | { |
| 272 | u32 mode = ethoc_read(dev, MODER); | 273 | u32 mode = ethoc_read(dev, MODER); |
| 273 | mode |= MODER_RXEN | MODER_TXEN; | 274 | mode |= MODER_RXEN | MODER_TXEN; |
| 274 | ethoc_write(dev, MODER, mode); | 275 | ethoc_write(dev, MODER, mode); |
| 275 | } | 276 | } |
| 276 | 277 | ||
| 277 | static void ethoc_disable_rx_and_tx(struct ethoc *dev) | 278 | static inline void ethoc_disable_rx_and_tx(struct ethoc *dev) |
| 278 | { | 279 | { |
| 279 | u32 mode = ethoc_read(dev, MODER); | 280 | u32 mode = ethoc_read(dev, MODER); |
| 280 | mode &= ~(MODER_RXEN | MODER_TXEN); | 281 | mode &= ~(MODER_RXEN | MODER_TXEN); |
| @@ -508,7 +509,7 @@ static irqreturn_t ethoc_interrupt(int irq, void *dev_id) | |||
| 508 | return IRQ_NONE; | 509 | return IRQ_NONE; |
| 509 | } | 510 | } |
| 510 | 511 | ||
| 511 | ethoc_ack_irq(priv, INT_MASK_ALL); | 512 | ethoc_ack_irq(priv, pending); |
| 512 | 513 | ||
| 513 | if (pending & INT_MASK_BUSY) { | 514 | if (pending & INT_MASK_BUSY) { |
| 514 | dev_err(&dev->dev, "packet dropped\n"); | 515 | dev_err(&dev->dev, "packet dropped\n"); |
diff --git a/drivers/net/fec.c b/drivers/net/fec.c index 29234380e6c6..16a1d58419d9 100644 --- a/drivers/net/fec.c +++ b/drivers/net/fec.c | |||
| @@ -1654,7 +1654,7 @@ static const struct net_device_ops fec_netdev_ops = { | |||
| 1654 | * | 1654 | * |
| 1655 | * index is only used in legacy code | 1655 | * index is only used in legacy code |
| 1656 | */ | 1656 | */ |
| 1657 | int __init fec_enet_init(struct net_device *dev, int index) | 1657 | static int fec_enet_init(struct net_device *dev, int index) |
| 1658 | { | 1658 | { |
| 1659 | struct fec_enet_private *fep = netdev_priv(dev); | 1659 | struct fec_enet_private *fep = netdev_priv(dev); |
| 1660 | struct bufdesc *cbd_base; | 1660 | struct bufdesc *cbd_base; |
diff --git a/drivers/net/ks8851.c b/drivers/net/ks8851.c index 237835864357..a23f739d222f 100644 --- a/drivers/net/ks8851.c +++ b/drivers/net/ks8851.c | |||
| @@ -171,6 +171,36 @@ static void ks8851_wrreg16(struct ks8851_net *ks, unsigned reg, unsigned val) | |||
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | /** | 173 | /** |
| 174 | * ks8851_wrreg8 - write 8bit register value to chip | ||
| 175 | * @ks: The chip state | ||
| 176 | * @reg: The register address | ||
| 177 | * @val: The value to write | ||
| 178 | * | ||
| 179 | * Issue a write to put the value @val into the register specified in @reg. | ||
| 180 | */ | ||
| 181 | static void ks8851_wrreg8(struct ks8851_net *ks, unsigned reg, unsigned val) | ||
| 182 | { | ||
| 183 | struct spi_transfer *xfer = &ks->spi_xfer1; | ||
| 184 | struct spi_message *msg = &ks->spi_msg1; | ||
| 185 | __le16 txb[2]; | ||
| 186 | int ret; | ||
| 187 | int bit; | ||
| 188 | |||
| 189 | bit = 1 << (reg & 3); | ||
| 190 | |||
| 191 | txb[0] = cpu_to_le16(MK_OP(bit, reg) | KS_SPIOP_WR); | ||
| 192 | txb[1] = val; | ||
| 193 | |||
| 194 | xfer->tx_buf = txb; | ||
| 195 | xfer->rx_buf = NULL; | ||
| 196 | xfer->len = 3; | ||
| 197 | |||
| 198 | ret = spi_sync(ks->spidev, msg); | ||
| 199 | if (ret < 0) | ||
| 200 | ks_err(ks, "spi_sync() failed\n"); | ||
| 201 | } | ||
| 202 | |||
| 203 | /** | ||
| 174 | * ks8851_rx_1msg - select whether to use one or two messages for spi read | 204 | * ks8851_rx_1msg - select whether to use one or two messages for spi read |
| 175 | * @ks: The device structure | 205 | * @ks: The device structure |
| 176 | * | 206 | * |
| @@ -322,13 +352,12 @@ static void ks8851_soft_reset(struct ks8851_net *ks, unsigned op) | |||
| 322 | static int ks8851_write_mac_addr(struct net_device *dev) | 352 | static int ks8851_write_mac_addr(struct net_device *dev) |
| 323 | { | 353 | { |
| 324 | struct ks8851_net *ks = netdev_priv(dev); | 354 | struct ks8851_net *ks = netdev_priv(dev); |
| 325 | u16 *mcp = (u16 *)dev->dev_addr; | 355 | int i; |
| 326 | 356 | ||
| 327 | mutex_lock(&ks->lock); | 357 | mutex_lock(&ks->lock); |
| 328 | 358 | ||
| 329 | ks8851_wrreg16(ks, KS_MARL, mcp[0]); | 359 | for (i = 0; i < ETH_ALEN; i++) |
| 330 | ks8851_wrreg16(ks, KS_MARM, mcp[1]); | 360 | ks8851_wrreg8(ks, KS_MAR(i), dev->dev_addr[i]); |
| 331 | ks8851_wrreg16(ks, KS_MARH, mcp[2]); | ||
| 332 | 361 | ||
| 333 | mutex_unlock(&ks->lock); | 362 | mutex_unlock(&ks->lock); |
| 334 | 363 | ||
| @@ -951,7 +980,7 @@ static void ks8851_set_rx_mode(struct net_device *dev) | |||
| 951 | mcptr = mcptr->next; | 980 | mcptr = mcptr->next; |
| 952 | } | 981 | } |
| 953 | 982 | ||
| 954 | rxctrl.rxcr1 = RXCR1_RXME | RXCR1_RXAE | RXCR1_RXPAFMA; | 983 | rxctrl.rxcr1 = RXCR1_RXME | RXCR1_RXPAFMA; |
| 955 | } else { | 984 | } else { |
| 956 | /* just accept broadcast / unicast */ | 985 | /* just accept broadcast / unicast */ |
| 957 | rxctrl.rxcr1 = RXCR1_RXPAFMA; | 986 | rxctrl.rxcr1 = RXCR1_RXPAFMA; |
| @@ -1239,6 +1268,9 @@ static int __devinit ks8851_probe(struct spi_device *spi) | |||
| 1239 | ndev->netdev_ops = &ks8851_netdev_ops; | 1268 | ndev->netdev_ops = &ks8851_netdev_ops; |
| 1240 | ndev->irq = spi->irq; | 1269 | ndev->irq = spi->irq; |
| 1241 | 1270 | ||
| 1271 | /* issue a global soft reset to reset the device. */ | ||
| 1272 | ks8851_soft_reset(ks, GRR_GSR); | ||
| 1273 | |||
| 1242 | /* simple check for a valid chip being connected to the bus */ | 1274 | /* simple check for a valid chip being connected to the bus */ |
| 1243 | 1275 | ||
| 1244 | if ((ks8851_rdreg16(ks, KS_CIDER) & ~CIDER_REV_MASK) != CIDER_ID) { | 1276 | if ((ks8851_rdreg16(ks, KS_CIDER) & ~CIDER_REV_MASK) != CIDER_ID) { |
diff --git a/drivers/net/ks8851.h b/drivers/net/ks8851.h index 85abe147afbf..f52c312cc356 100644 --- a/drivers/net/ks8851.h +++ b/drivers/net/ks8851.h | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #define CCR_32PIN (1 << 0) | 16 | #define CCR_32PIN (1 << 0) |
| 17 | 17 | ||
| 18 | /* MAC address registers */ | 18 | /* MAC address registers */ |
| 19 | #define KS_MAR(_m) 0x15 - (_m) | ||
| 19 | #define KS_MARL 0x10 | 20 | #define KS_MARL 0x10 |
| 20 | #define KS_MARM 0x12 | 21 | #define KS_MARM 0x12 |
| 21 | #define KS_MARH 0x14 | 22 | #define KS_MARH 0x14 |
diff --git a/drivers/net/niu.c b/drivers/net/niu.c index f9364d0678f2..d6c7ac68f6ea 100644 --- a/drivers/net/niu.c +++ b/drivers/net/niu.c | |||
| @@ -3545,7 +3545,7 @@ static int niu_process_rx_pkt(struct napi_struct *napi, struct niu *np, | |||
| 3545 | rp->rcr_index = index; | 3545 | rp->rcr_index = index; |
| 3546 | 3546 | ||
| 3547 | skb_reserve(skb, NET_IP_ALIGN); | 3547 | skb_reserve(skb, NET_IP_ALIGN); |
| 3548 | __pskb_pull_tail(skb, min(len, NIU_RXPULL_MAX)); | 3548 | __pskb_pull_tail(skb, min(len, VLAN_ETH_HLEN)); |
| 3549 | 3549 | ||
| 3550 | rp->rx_packets++; | 3550 | rp->rx_packets++; |
| 3551 | rp->rx_bytes += skb->len; | 3551 | rp->rx_bytes += skb->len; |
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 8d009760277c..54bf0912b737 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
| @@ -454,7 +454,7 @@ static unsigned int free_old_xmit_skbs(struct virtnet_info *vi) | |||
| 454 | vi->dev->stats.tx_bytes += skb->len; | 454 | vi->dev->stats.tx_bytes += skb->len; |
| 455 | vi->dev->stats.tx_packets++; | 455 | vi->dev->stats.tx_packets++; |
| 456 | tot_sgs += skb_vnet_hdr(skb)->num_sg; | 456 | tot_sgs += skb_vnet_hdr(skb)->num_sg; |
| 457 | kfree_skb(skb); | 457 | dev_kfree_skb_any(skb); |
| 458 | } | 458 | } |
| 459 | return tot_sgs; | 459 | return tot_sgs; |
| 460 | } | 460 | } |
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 6a16f76f277e..004353a46af0 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c | |||
| @@ -481,7 +481,8 @@ vmxnet3_rq_alloc_rx_buf(struct vmxnet3_rx_queue *rq, u32 ring_idx, | |||
| 481 | } | 481 | } |
| 482 | rq->uncommitted[ring_idx] += num_allocated; | 482 | rq->uncommitted[ring_idx] += num_allocated; |
| 483 | 483 | ||
| 484 | dprintk(KERN_ERR "alloc_rx_buf: %d allocated, next2fill %u, next2comp " | 484 | dev_dbg(&adapter->netdev->dev, |
| 485 | "alloc_rx_buf: %d allocated, next2fill %u, next2comp " | ||
| 485 | "%u, uncommited %u\n", num_allocated, ring->next2fill, | 486 | "%u, uncommited %u\n", num_allocated, ring->next2fill, |
| 486 | ring->next2comp, rq->uncommitted[ring_idx]); | 487 | ring->next2comp, rq->uncommitted[ring_idx]); |
| 487 | 488 | ||
| @@ -539,7 +540,8 @@ vmxnet3_map_pkt(struct sk_buff *skb, struct vmxnet3_tx_ctx *ctx, | |||
| 539 | tbi = tq->buf_info + tq->tx_ring.next2fill; | 540 | tbi = tq->buf_info + tq->tx_ring.next2fill; |
| 540 | tbi->map_type = VMXNET3_MAP_NONE; | 541 | tbi->map_type = VMXNET3_MAP_NONE; |
| 541 | 542 | ||
| 542 | dprintk(KERN_ERR "txd[%u]: 0x%Lx 0x%x 0x%x\n", | 543 | dev_dbg(&adapter->netdev->dev, |
| 544 | "txd[%u]: 0x%Lx 0x%x 0x%x\n", | ||
| 543 | tq->tx_ring.next2fill, ctx->sop_txd->txd.addr, | 545 | tq->tx_ring.next2fill, ctx->sop_txd->txd.addr, |
| 544 | ctx->sop_txd->dword[2], ctx->sop_txd->dword[3]); | 546 | ctx->sop_txd->dword[2], ctx->sop_txd->dword[3]); |
| 545 | vmxnet3_cmd_ring_adv_next2fill(&tq->tx_ring); | 547 | vmxnet3_cmd_ring_adv_next2fill(&tq->tx_ring); |
| @@ -572,7 +574,8 @@ vmxnet3_map_pkt(struct sk_buff *skb, struct vmxnet3_tx_ctx *ctx, | |||
| 572 | gdesc->dword[2] = dw2 | buf_size; | 574 | gdesc->dword[2] = dw2 | buf_size; |
| 573 | gdesc->dword[3] = 0; | 575 | gdesc->dword[3] = 0; |
| 574 | 576 | ||
| 575 | dprintk(KERN_ERR "txd[%u]: 0x%Lx 0x%x 0x%x\n", | 577 | dev_dbg(&adapter->netdev->dev, |
| 578 | "txd[%u]: 0x%Lx 0x%x 0x%x\n", | ||
| 576 | tq->tx_ring.next2fill, gdesc->txd.addr, | 579 | tq->tx_ring.next2fill, gdesc->txd.addr, |
| 577 | gdesc->dword[2], gdesc->dword[3]); | 580 | gdesc->dword[2], gdesc->dword[3]); |
| 578 | vmxnet3_cmd_ring_adv_next2fill(&tq->tx_ring); | 581 | vmxnet3_cmd_ring_adv_next2fill(&tq->tx_ring); |
| @@ -600,7 +603,8 @@ vmxnet3_map_pkt(struct sk_buff *skb, struct vmxnet3_tx_ctx *ctx, | |||
| 600 | gdesc->dword[2] = dw2 | frag->size; | 603 | gdesc->dword[2] = dw2 | frag->size; |
| 601 | gdesc->dword[3] = 0; | 604 | gdesc->dword[3] = 0; |
| 602 | 605 | ||
| 603 | dprintk(KERN_ERR "txd[%u]: 0x%llu %u %u\n", | 606 | dev_dbg(&adapter->netdev->dev, |
| 607 | "txd[%u]: 0x%llu %u %u\n", | ||
| 604 | tq->tx_ring.next2fill, gdesc->txd.addr, | 608 | tq->tx_ring.next2fill, gdesc->txd.addr, |
| 605 | gdesc->dword[2], gdesc->dword[3]); | 609 | gdesc->dword[2], gdesc->dword[3]); |
| 606 | vmxnet3_cmd_ring_adv_next2fill(&tq->tx_ring); | 610 | vmxnet3_cmd_ring_adv_next2fill(&tq->tx_ring); |
| @@ -697,7 +701,8 @@ vmxnet3_parse_and_copy_hdr(struct sk_buff *skb, struct vmxnet3_tx_queue *tq, | |||
| 697 | tdd = tq->data_ring.base + tq->tx_ring.next2fill; | 701 | tdd = tq->data_ring.base + tq->tx_ring.next2fill; |
| 698 | 702 | ||
| 699 | memcpy(tdd->data, skb->data, ctx->copy_size); | 703 | memcpy(tdd->data, skb->data, ctx->copy_size); |
| 700 | dprintk(KERN_ERR "copy %u bytes to dataRing[%u]\n", | 704 | dev_dbg(&adapter->netdev->dev, |
| 705 | "copy %u bytes to dataRing[%u]\n", | ||
| 701 | ctx->copy_size, tq->tx_ring.next2fill); | 706 | ctx->copy_size, tq->tx_ring.next2fill); |
| 702 | return 1; | 707 | return 1; |
| 703 | 708 | ||
| @@ -808,7 +813,8 @@ vmxnet3_tq_xmit(struct sk_buff *skb, struct vmxnet3_tx_queue *tq, | |||
| 808 | 813 | ||
| 809 | if (count > vmxnet3_cmd_ring_desc_avail(&tq->tx_ring)) { | 814 | if (count > vmxnet3_cmd_ring_desc_avail(&tq->tx_ring)) { |
| 810 | tq->stats.tx_ring_full++; | 815 | tq->stats.tx_ring_full++; |
| 811 | dprintk(KERN_ERR "tx queue stopped on %s, next2comp %u" | 816 | dev_dbg(&adapter->netdev->dev, |
| 817 | "tx queue stopped on %s, next2comp %u" | ||
| 812 | " next2fill %u\n", adapter->netdev->name, | 818 | " next2fill %u\n", adapter->netdev->name, |
| 813 | tq->tx_ring.next2comp, tq->tx_ring.next2fill); | 819 | tq->tx_ring.next2comp, tq->tx_ring.next2fill); |
| 814 | 820 | ||
| @@ -853,7 +859,8 @@ vmxnet3_tq_xmit(struct sk_buff *skb, struct vmxnet3_tx_queue *tq, | |||
| 853 | 859 | ||
| 854 | /* finally flips the GEN bit of the SOP desc */ | 860 | /* finally flips the GEN bit of the SOP desc */ |
| 855 | gdesc->dword[2] ^= VMXNET3_TXD_GEN; | 861 | gdesc->dword[2] ^= VMXNET3_TXD_GEN; |
| 856 | dprintk(KERN_ERR "txd[%u]: SOP 0x%Lx 0x%x 0x%x\n", | 862 | dev_dbg(&adapter->netdev->dev, |
| 863 | "txd[%u]: SOP 0x%Lx 0x%x 0x%x\n", | ||
| 857 | (u32)((union Vmxnet3_GenericDesc *)ctx.sop_txd - | 864 | (u32)((union Vmxnet3_GenericDesc *)ctx.sop_txd - |
| 858 | tq->tx_ring.base), gdesc->txd.addr, gdesc->dword[2], | 865 | tq->tx_ring.base), gdesc->txd.addr, gdesc->dword[2], |
| 859 | gdesc->dword[3]); | 866 | gdesc->dword[3]); |
| @@ -990,7 +997,8 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, | |||
| 990 | if (unlikely(rcd->len == 0)) { | 997 | if (unlikely(rcd->len == 0)) { |
| 991 | /* Pretend the rx buffer is skipped. */ | 998 | /* Pretend the rx buffer is skipped. */ |
| 992 | BUG_ON(!(rcd->sop && rcd->eop)); | 999 | BUG_ON(!(rcd->sop && rcd->eop)); |
| 993 | dprintk(KERN_ERR "rxRing[%u][%u] 0 length\n", | 1000 | dev_dbg(&adapter->netdev->dev, |
| 1001 | "rxRing[%u][%u] 0 length\n", | ||
| 994 | ring_idx, idx); | 1002 | ring_idx, idx); |
| 995 | goto rcd_done; | 1003 | goto rcd_done; |
| 996 | } | 1004 | } |
| @@ -1683,7 +1691,8 @@ vmxnet3_activate_dev(struct vmxnet3_adapter *adapter) | |||
| 1683 | int err; | 1691 | int err; |
| 1684 | u32 ret; | 1692 | u32 ret; |
| 1685 | 1693 | ||
| 1686 | dprintk(KERN_ERR "%s: skb_buf_size %d, rx_buf_per_pkt %d, ring sizes" | 1694 | dev_dbg(&adapter->netdev->dev, |
| 1695 | "%s: skb_buf_size %d, rx_buf_per_pkt %d, ring sizes" | ||
| 1687 | " %u %u %u\n", adapter->netdev->name, adapter->skb_buf_size, | 1696 | " %u %u %u\n", adapter->netdev->name, adapter->skb_buf_size, |
| 1688 | adapter->rx_buf_per_pkt, adapter->tx_queue.tx_ring.size, | 1697 | adapter->rx_buf_per_pkt, adapter->tx_queue.tx_ring.size, |
| 1689 | adapter->rx_queue.rx_ring[0].size, | 1698 | adapter->rx_queue.rx_ring[0].size, |
diff --git a/drivers/net/vmxnet3/vmxnet3_int.h b/drivers/net/vmxnet3/vmxnet3_int.h index 6bb91576e999..3c0d70d58111 100644 --- a/drivers/net/vmxnet3/vmxnet3_int.h +++ b/drivers/net/vmxnet3/vmxnet3_int.h | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | #include <linux/types.h> | 30 | #include <linux/types.h> |
| 31 | #include <linux/ethtool.h> | 31 | #include <linux/ethtool.h> |
| 32 | #include <linux/delay.h> | 32 | #include <linux/delay.h> |
| 33 | #include <linux/device.h> | ||
| 33 | #include <linux/netdevice.h> | 34 | #include <linux/netdevice.h> |
| 34 | #include <linux/pci.h> | 35 | #include <linux/pci.h> |
| 35 | #include <linux/ethtool.h> | 36 | #include <linux/ethtool.h> |
| @@ -59,7 +60,6 @@ | |||
| 59 | #include <linux/if_vlan.h> | 60 | #include <linux/if_vlan.h> |
| 60 | #include <linux/if_arp.h> | 61 | #include <linux/if_arp.h> |
| 61 | #include <linux/inetdevice.h> | 62 | #include <linux/inetdevice.h> |
| 62 | #include <linux/dst.h> | ||
| 63 | 63 | ||
| 64 | #include "vmxnet3_defs.h" | 64 | #include "vmxnet3_defs.h" |
| 65 | 65 | ||
