Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.32 5446 lines 151 kB view raw
1/******************************************************************************* 2 3 Intel PRO/1000 Linux driver 4 Copyright(c) 1999 - 2008 Intel Corporation. 5 6 This program is free software; you can redistribute it and/or modify it 7 under the terms and conditions of the GNU General Public License, 8 version 2, as published by the Free Software Foundation. 9 10 This program is distributed in the hope it will be useful, but WITHOUT 11 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13 more details. 14 15 You should have received a copy of the GNU General Public License along with 16 this program; if not, write to the Free Software Foundation, Inc., 17 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 18 19 The full GNU General Public License is included in this distribution in 20 the file called "COPYING". 21 22 Contact Information: 23 Linux NICS <linux.nics@intel.com> 24 e1000-devel Mailing List <e1000-devel@lists.sourceforge.net> 25 Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 26 27*******************************************************************************/ 28 29#include <linux/module.h> 30#include <linux/types.h> 31#include <linux/init.h> 32#include <linux/pci.h> 33#include <linux/vmalloc.h> 34#include <linux/pagemap.h> 35#include <linux/delay.h> 36#include <linux/netdevice.h> 37#include <linux/tcp.h> 38#include <linux/ipv6.h> 39#include <net/checksum.h> 40#include <net/ip6_checksum.h> 41#include <linux/mii.h> 42#include <linux/ethtool.h> 43#include <linux/if_vlan.h> 44#include <linux/cpu.h> 45#include <linux/smp.h> 46#include <linux/pm_qos_params.h> 47#include <linux/aer.h> 48 49#include "e1000.h" 50 51#define DRV_VERSION "1.0.2-k2" 52char e1000e_driver_name[] = "e1000e"; 53const char e1000e_driver_version[] = DRV_VERSION; 54 55static const struct e1000_info *e1000_info_tbl[] = { 56 [board_82571] = &e1000_82571_info, 57 [board_82572] = &e1000_82572_info, 58 [board_82573] = &e1000_82573_info, 59 [board_82574] = &e1000_82574_info, 60 [board_82583] = &e1000_82583_info, 61 [board_80003es2lan] = &e1000_es2_info, 62 [board_ich8lan] = &e1000_ich8_info, 63 [board_ich9lan] = &e1000_ich9_info, 64 [board_ich10lan] = &e1000_ich10_info, 65 [board_pchlan] = &e1000_pch_info, 66}; 67 68#ifdef DEBUG 69/** 70 * e1000_get_hw_dev_name - return device name string 71 * used by hardware layer to print debugging information 72 **/ 73char *e1000e_get_hw_dev_name(struct e1000_hw *hw) 74{ 75 return hw->adapter->netdev->name; 76} 77#endif 78 79/** 80 * e1000_desc_unused - calculate if we have unused descriptors 81 **/ 82static int e1000_desc_unused(struct e1000_ring *ring) 83{ 84 if (ring->next_to_clean > ring->next_to_use) 85 return ring->next_to_clean - ring->next_to_use - 1; 86 87 return ring->count + ring->next_to_clean - ring->next_to_use - 1; 88} 89 90/** 91 * e1000_receive_skb - helper function to handle Rx indications 92 * @adapter: board private structure 93 * @status: descriptor status field as written by hardware 94 * @vlan: descriptor vlan field as written by hardware (no le/be conversion) 95 * @skb: pointer to sk_buff to be indicated to stack 96 **/ 97static void e1000_receive_skb(struct e1000_adapter *adapter, 98 struct net_device *netdev, 99 struct sk_buff *skb, 100 u8 status, __le16 vlan) 101{ 102 skb->protocol = eth_type_trans(skb, netdev); 103 104 if (adapter->vlgrp && (status & E1000_RXD_STAT_VP)) 105 vlan_gro_receive(&adapter->napi, adapter->vlgrp, 106 le16_to_cpu(vlan), skb); 107 else 108 napi_gro_receive(&adapter->napi, skb); 109} 110 111/** 112 * e1000_rx_checksum - Receive Checksum Offload for 82543 113 * @adapter: board private structure 114 * @status_err: receive descriptor status and error fields 115 * @csum: receive descriptor csum field 116 * @sk_buff: socket buffer with received data 117 **/ 118static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, 119 u32 csum, struct sk_buff *skb) 120{ 121 u16 status = (u16)status_err; 122 u8 errors = (u8)(status_err >> 24); 123 skb->ip_summed = CHECKSUM_NONE; 124 125 /* Ignore Checksum bit is set */ 126 if (status & E1000_RXD_STAT_IXSM) 127 return; 128 /* TCP/UDP checksum error bit is set */ 129 if (errors & E1000_RXD_ERR_TCPE) { 130 /* let the stack verify checksum errors */ 131 adapter->hw_csum_err++; 132 return; 133 } 134 135 /* TCP/UDP Checksum has not been calculated */ 136 if (!(status & (E1000_RXD_STAT_TCPCS | E1000_RXD_STAT_UDPCS))) 137 return; 138 139 /* It must be a TCP or UDP packet with a valid checksum */ 140 if (status & E1000_RXD_STAT_TCPCS) { 141 /* TCP checksum is good */ 142 skb->ip_summed = CHECKSUM_UNNECESSARY; 143 } else { 144 /* 145 * IP fragment with UDP payload 146 * Hardware complements the payload checksum, so we undo it 147 * and then put the value in host order for further stack use. 148 */ 149 __sum16 sum = (__force __sum16)htons(csum); 150 skb->csum = csum_unfold(~sum); 151 skb->ip_summed = CHECKSUM_COMPLETE; 152 } 153 adapter->hw_csum_good++; 154} 155 156/** 157 * e1000_alloc_rx_buffers - Replace used receive buffers; legacy & extended 158 * @adapter: address of board private structure 159 **/ 160static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter, 161 int cleaned_count) 162{ 163 struct net_device *netdev = adapter->netdev; 164 struct pci_dev *pdev = adapter->pdev; 165 struct e1000_ring *rx_ring = adapter->rx_ring; 166 struct e1000_rx_desc *rx_desc; 167 struct e1000_buffer *buffer_info; 168 struct sk_buff *skb; 169 unsigned int i; 170 unsigned int bufsz = adapter->rx_buffer_len + NET_IP_ALIGN; 171 172 i = rx_ring->next_to_use; 173 buffer_info = &rx_ring->buffer_info[i]; 174 175 while (cleaned_count--) { 176 skb = buffer_info->skb; 177 if (skb) { 178 skb_trim(skb, 0); 179 goto map_skb; 180 } 181 182 skb = netdev_alloc_skb(netdev, bufsz); 183 if (!skb) { 184 /* Better luck next round */ 185 adapter->alloc_rx_buff_failed++; 186 break; 187 } 188 189 /* 190 * Make buffer alignment 2 beyond a 16 byte boundary 191 * this will result in a 16 byte aligned IP header after 192 * the 14 byte MAC header is removed 193 */ 194 skb_reserve(skb, NET_IP_ALIGN); 195 196 buffer_info->skb = skb; 197map_skb: 198 buffer_info->dma = pci_map_single(pdev, skb->data, 199 adapter->rx_buffer_len, 200 PCI_DMA_FROMDEVICE); 201 if (pci_dma_mapping_error(pdev, buffer_info->dma)) { 202 dev_err(&pdev->dev, "RX DMA map failed\n"); 203 adapter->rx_dma_failed++; 204 break; 205 } 206 207 rx_desc = E1000_RX_DESC(*rx_ring, i); 208 rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); 209 210 i++; 211 if (i == rx_ring->count) 212 i = 0; 213 buffer_info = &rx_ring->buffer_info[i]; 214 } 215 216 if (rx_ring->next_to_use != i) { 217 rx_ring->next_to_use = i; 218 if (i-- == 0) 219 i = (rx_ring->count - 1); 220 221 /* 222 * Force memory writes to complete before letting h/w 223 * know there are new descriptors to fetch. (Only 224 * applicable for weak-ordered memory model archs, 225 * such as IA-64). 226 */ 227 wmb(); 228 writel(i, adapter->hw.hw_addr + rx_ring->tail); 229 } 230} 231 232/** 233 * e1000_alloc_rx_buffers_ps - Replace used receive buffers; packet split 234 * @adapter: address of board private structure 235 **/ 236static void e1000_alloc_rx_buffers_ps(struct e1000_adapter *adapter, 237 int cleaned_count) 238{ 239 struct net_device *netdev = adapter->netdev; 240 struct pci_dev *pdev = adapter->pdev; 241 union e1000_rx_desc_packet_split *rx_desc; 242 struct e1000_ring *rx_ring = adapter->rx_ring; 243 struct e1000_buffer *buffer_info; 244 struct e1000_ps_page *ps_page; 245 struct sk_buff *skb; 246 unsigned int i, j; 247 248 i = rx_ring->next_to_use; 249 buffer_info = &rx_ring->buffer_info[i]; 250 251 while (cleaned_count--) { 252 rx_desc = E1000_RX_DESC_PS(*rx_ring, i); 253 254 for (j = 0; j < PS_PAGE_BUFFERS; j++) { 255 ps_page = &buffer_info->ps_pages[j]; 256 if (j >= adapter->rx_ps_pages) { 257 /* all unused desc entries get hw null ptr */ 258 rx_desc->read.buffer_addr[j+1] = ~cpu_to_le64(0); 259 continue; 260 } 261 if (!ps_page->page) { 262 ps_page->page = alloc_page(GFP_ATOMIC); 263 if (!ps_page->page) { 264 adapter->alloc_rx_buff_failed++; 265 goto no_buffers; 266 } 267 ps_page->dma = pci_map_page(pdev, 268 ps_page->page, 269 0, PAGE_SIZE, 270 PCI_DMA_FROMDEVICE); 271 if (pci_dma_mapping_error(pdev, ps_page->dma)) { 272 dev_err(&adapter->pdev->dev, 273 "RX DMA page map failed\n"); 274 adapter->rx_dma_failed++; 275 goto no_buffers; 276 } 277 } 278 /* 279 * Refresh the desc even if buffer_addrs 280 * didn't change because each write-back 281 * erases this info. 282 */ 283 rx_desc->read.buffer_addr[j+1] = 284 cpu_to_le64(ps_page->dma); 285 } 286 287 skb = netdev_alloc_skb(netdev, 288 adapter->rx_ps_bsize0 + NET_IP_ALIGN); 289 290 if (!skb) { 291 adapter->alloc_rx_buff_failed++; 292 break; 293 } 294 295 /* 296 * Make buffer alignment 2 beyond a 16 byte boundary 297 * this will result in a 16 byte aligned IP header after 298 * the 14 byte MAC header is removed 299 */ 300 skb_reserve(skb, NET_IP_ALIGN); 301 302 buffer_info->skb = skb; 303 buffer_info->dma = pci_map_single(pdev, skb->data, 304 adapter->rx_ps_bsize0, 305 PCI_DMA_FROMDEVICE); 306 if (pci_dma_mapping_error(pdev, buffer_info->dma)) { 307 dev_err(&pdev->dev, "RX DMA map failed\n"); 308 adapter->rx_dma_failed++; 309 /* cleanup skb */ 310 dev_kfree_skb_any(skb); 311 buffer_info->skb = NULL; 312 break; 313 } 314 315 rx_desc->read.buffer_addr[0] = cpu_to_le64(buffer_info->dma); 316 317 i++; 318 if (i == rx_ring->count) 319 i = 0; 320 buffer_info = &rx_ring->buffer_info[i]; 321 } 322 323no_buffers: 324 if (rx_ring->next_to_use != i) { 325 rx_ring->next_to_use = i; 326 327 if (!(i--)) 328 i = (rx_ring->count - 1); 329 330 /* 331 * Force memory writes to complete before letting h/w 332 * know there are new descriptors to fetch. (Only 333 * applicable for weak-ordered memory model archs, 334 * such as IA-64). 335 */ 336 wmb(); 337 /* 338 * Hardware increments by 16 bytes, but packet split 339 * descriptors are 32 bytes...so we increment tail 340 * twice as much. 341 */ 342 writel(i<<1, adapter->hw.hw_addr + rx_ring->tail); 343 } 344} 345 346/** 347 * e1000_alloc_jumbo_rx_buffers - Replace used jumbo receive buffers 348 * @adapter: address of board private structure 349 * @cleaned_count: number of buffers to allocate this pass 350 **/ 351 352static void e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter, 353 int cleaned_count) 354{ 355 struct net_device *netdev = adapter->netdev; 356 struct pci_dev *pdev = adapter->pdev; 357 struct e1000_rx_desc *rx_desc; 358 struct e1000_ring *rx_ring = adapter->rx_ring; 359 struct e1000_buffer *buffer_info; 360 struct sk_buff *skb; 361 unsigned int i; 362 unsigned int bufsz = 256 - 363 16 /* for skb_reserve */ - 364 NET_IP_ALIGN; 365 366 i = rx_ring->next_to_use; 367 buffer_info = &rx_ring->buffer_info[i]; 368 369 while (cleaned_count--) { 370 skb = buffer_info->skb; 371 if (skb) { 372 skb_trim(skb, 0); 373 goto check_page; 374 } 375 376 skb = netdev_alloc_skb(netdev, bufsz); 377 if (unlikely(!skb)) { 378 /* Better luck next round */ 379 adapter->alloc_rx_buff_failed++; 380 break; 381 } 382 383 /* Make buffer alignment 2 beyond a 16 byte boundary 384 * this will result in a 16 byte aligned IP header after 385 * the 14 byte MAC header is removed 386 */ 387 skb_reserve(skb, NET_IP_ALIGN); 388 389 buffer_info->skb = skb; 390check_page: 391 /* allocate a new page if necessary */ 392 if (!buffer_info->page) { 393 buffer_info->page = alloc_page(GFP_ATOMIC); 394 if (unlikely(!buffer_info->page)) { 395 adapter->alloc_rx_buff_failed++; 396 break; 397 } 398 } 399 400 if (!buffer_info->dma) 401 buffer_info->dma = pci_map_page(pdev, 402 buffer_info->page, 0, 403 PAGE_SIZE, 404 PCI_DMA_FROMDEVICE); 405 406 rx_desc = E1000_RX_DESC(*rx_ring, i); 407 rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); 408 409 if (unlikely(++i == rx_ring->count)) 410 i = 0; 411 buffer_info = &rx_ring->buffer_info[i]; 412 } 413 414 if (likely(rx_ring->next_to_use != i)) { 415 rx_ring->next_to_use = i; 416 if (unlikely(i-- == 0)) 417 i = (rx_ring->count - 1); 418 419 /* Force memory writes to complete before letting h/w 420 * know there are new descriptors to fetch. (Only 421 * applicable for weak-ordered memory model archs, 422 * such as IA-64). */ 423 wmb(); 424 writel(i, adapter->hw.hw_addr + rx_ring->tail); 425 } 426} 427 428/** 429 * e1000_clean_rx_irq - Send received data up the network stack; legacy 430 * @adapter: board private structure 431 * 432 * the return value indicates whether actual cleaning was done, there 433 * is no guarantee that everything was cleaned 434 **/ 435static bool e1000_clean_rx_irq(struct e1000_adapter *adapter, 436 int *work_done, int work_to_do) 437{ 438 struct net_device *netdev = adapter->netdev; 439 struct pci_dev *pdev = adapter->pdev; 440 struct e1000_ring *rx_ring = adapter->rx_ring; 441 struct e1000_rx_desc *rx_desc, *next_rxd; 442 struct e1000_buffer *buffer_info, *next_buffer; 443 u32 length; 444 unsigned int i; 445 int cleaned_count = 0; 446 bool cleaned = 0; 447 unsigned int total_rx_bytes = 0, total_rx_packets = 0; 448 449 i = rx_ring->next_to_clean; 450 rx_desc = E1000_RX_DESC(*rx_ring, i); 451 buffer_info = &rx_ring->buffer_info[i]; 452 453 while (rx_desc->status & E1000_RXD_STAT_DD) { 454 struct sk_buff *skb; 455 u8 status; 456 457 if (*work_done >= work_to_do) 458 break; 459 (*work_done)++; 460 461 status = rx_desc->status; 462 skb = buffer_info->skb; 463 buffer_info->skb = NULL; 464 465 prefetch(skb->data - NET_IP_ALIGN); 466 467 i++; 468 if (i == rx_ring->count) 469 i = 0; 470 next_rxd = E1000_RX_DESC(*rx_ring, i); 471 prefetch(next_rxd); 472 473 next_buffer = &rx_ring->buffer_info[i]; 474 475 cleaned = 1; 476 cleaned_count++; 477 pci_unmap_single(pdev, 478 buffer_info->dma, 479 adapter->rx_buffer_len, 480 PCI_DMA_FROMDEVICE); 481 buffer_info->dma = 0; 482 483 length = le16_to_cpu(rx_desc->length); 484 485 /* !EOP means multiple descriptors were used to store a single 486 * packet, also make sure the frame isn't just CRC only */ 487 if (!(status & E1000_RXD_STAT_EOP) || (length <= 4)) { 488 /* All receives must fit into a single buffer */ 489 e_dbg("%s: Receive packet consumed multiple buffers\n", 490 netdev->name); 491 /* recycle */ 492 buffer_info->skb = skb; 493 goto next_desc; 494 } 495 496 if (rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK) { 497 /* recycle */ 498 buffer_info->skb = skb; 499 goto next_desc; 500 } 501 502 /* adjust length to remove Ethernet CRC */ 503 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) 504 length -= 4; 505 506 total_rx_bytes += length; 507 total_rx_packets++; 508 509 /* 510 * code added for copybreak, this should improve 511 * performance for small packets with large amounts 512 * of reassembly being done in the stack 513 */ 514 if (length < copybreak) { 515 struct sk_buff *new_skb = 516 netdev_alloc_skb(netdev, length + NET_IP_ALIGN); 517 if (new_skb) { 518 skb_reserve(new_skb, NET_IP_ALIGN); 519 skb_copy_to_linear_data_offset(new_skb, 520 -NET_IP_ALIGN, 521 (skb->data - 522 NET_IP_ALIGN), 523 (length + 524 NET_IP_ALIGN)); 525 /* save the skb in buffer_info as good */ 526 buffer_info->skb = skb; 527 skb = new_skb; 528 } 529 /* else just continue with the old one */ 530 } 531 /* end copybreak code */ 532 skb_put(skb, length); 533 534 /* Receive Checksum Offload */ 535 e1000_rx_checksum(adapter, 536 (u32)(status) | 537 ((u32)(rx_desc->errors) << 24), 538 le16_to_cpu(rx_desc->csum), skb); 539 540 e1000_receive_skb(adapter, netdev, skb,status,rx_desc->special); 541 542next_desc: 543 rx_desc->status = 0; 544 545 /* return some buffers to hardware, one at a time is too slow */ 546 if (cleaned_count >= E1000_RX_BUFFER_WRITE) { 547 adapter->alloc_rx_buf(adapter, cleaned_count); 548 cleaned_count = 0; 549 } 550 551 /* use prefetched values */ 552 rx_desc = next_rxd; 553 buffer_info = next_buffer; 554 } 555 rx_ring->next_to_clean = i; 556 557 cleaned_count = e1000_desc_unused(rx_ring); 558 if (cleaned_count) 559 adapter->alloc_rx_buf(adapter, cleaned_count); 560 561 adapter->total_rx_bytes += total_rx_bytes; 562 adapter->total_rx_packets += total_rx_packets; 563 adapter->net_stats.rx_bytes += total_rx_bytes; 564 adapter->net_stats.rx_packets += total_rx_packets; 565 return cleaned; 566} 567 568static void e1000_put_txbuf(struct e1000_adapter *adapter, 569 struct e1000_buffer *buffer_info) 570{ 571 buffer_info->dma = 0; 572 if (buffer_info->skb) { 573 skb_dma_unmap(&adapter->pdev->dev, buffer_info->skb, 574 DMA_TO_DEVICE); 575 dev_kfree_skb_any(buffer_info->skb); 576 buffer_info->skb = NULL; 577 } 578 buffer_info->time_stamp = 0; 579} 580 581static void e1000_print_tx_hang(struct e1000_adapter *adapter) 582{ 583 struct e1000_ring *tx_ring = adapter->tx_ring; 584 unsigned int i = tx_ring->next_to_clean; 585 unsigned int eop = tx_ring->buffer_info[i].next_to_watch; 586 struct e1000_tx_desc *eop_desc = E1000_TX_DESC(*tx_ring, eop); 587 588 /* detected Tx unit hang */ 589 e_err("Detected Tx Unit Hang:\n" 590 " TDH <%x>\n" 591 " TDT <%x>\n" 592 " next_to_use <%x>\n" 593 " next_to_clean <%x>\n" 594 "buffer_info[next_to_clean]:\n" 595 " time_stamp <%lx>\n" 596 " next_to_watch <%x>\n" 597 " jiffies <%lx>\n" 598 " next_to_watch.status <%x>\n", 599 readl(adapter->hw.hw_addr + tx_ring->head), 600 readl(adapter->hw.hw_addr + tx_ring->tail), 601 tx_ring->next_to_use, 602 tx_ring->next_to_clean, 603 tx_ring->buffer_info[eop].time_stamp, 604 eop, 605 jiffies, 606 eop_desc->upper.fields.status); 607} 608 609/** 610 * e1000_clean_tx_irq - Reclaim resources after transmit completes 611 * @adapter: board private structure 612 * 613 * the return value indicates whether actual cleaning was done, there 614 * is no guarantee that everything was cleaned 615 **/ 616static bool e1000_clean_tx_irq(struct e1000_adapter *adapter) 617{ 618 struct net_device *netdev = adapter->netdev; 619 struct e1000_hw *hw = &adapter->hw; 620 struct e1000_ring *tx_ring = adapter->tx_ring; 621 struct e1000_tx_desc *tx_desc, *eop_desc; 622 struct e1000_buffer *buffer_info; 623 unsigned int i, eop; 624 unsigned int count = 0; 625 unsigned int total_tx_bytes = 0, total_tx_packets = 0; 626 627 i = tx_ring->next_to_clean; 628 eop = tx_ring->buffer_info[i].next_to_watch; 629 eop_desc = E1000_TX_DESC(*tx_ring, eop); 630 631 while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) && 632 (count < tx_ring->count)) { 633 bool cleaned = false; 634 for (; !cleaned; count++) { 635 tx_desc = E1000_TX_DESC(*tx_ring, i); 636 buffer_info = &tx_ring->buffer_info[i]; 637 cleaned = (i == eop); 638 639 if (cleaned) { 640 struct sk_buff *skb = buffer_info->skb; 641 unsigned int segs, bytecount; 642 segs = skb_shinfo(skb)->gso_segs ?: 1; 643 /* multiply data chunks by size of headers */ 644 bytecount = ((segs - 1) * skb_headlen(skb)) + 645 skb->len; 646 total_tx_packets += segs; 647 total_tx_bytes += bytecount; 648 } 649 650 e1000_put_txbuf(adapter, buffer_info); 651 tx_desc->upper.data = 0; 652 653 i++; 654 if (i == tx_ring->count) 655 i = 0; 656 } 657 658 eop = tx_ring->buffer_info[i].next_to_watch; 659 eop_desc = E1000_TX_DESC(*tx_ring, eop); 660 } 661 662 tx_ring->next_to_clean = i; 663 664#define TX_WAKE_THRESHOLD 32 665 if (count && netif_carrier_ok(netdev) && 666 e1000_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD) { 667 /* Make sure that anybody stopping the queue after this 668 * sees the new next_to_clean. 669 */ 670 smp_mb(); 671 672 if (netif_queue_stopped(netdev) && 673 !(test_bit(__E1000_DOWN, &adapter->state))) { 674 netif_wake_queue(netdev); 675 ++adapter->restart_queue; 676 } 677 } 678 679 if (adapter->detect_tx_hung) { 680 /* Detect a transmit hang in hardware, this serializes the 681 * check with the clearing of time_stamp and movement of i */ 682 adapter->detect_tx_hung = 0; 683 if (tx_ring->buffer_info[i].time_stamp && 684 time_after(jiffies, tx_ring->buffer_info[i].time_stamp 685 + (adapter->tx_timeout_factor * HZ)) 686 && !(er32(STATUS) & E1000_STATUS_TXOFF)) { 687 e1000_print_tx_hang(adapter); 688 netif_stop_queue(netdev); 689 } 690 } 691 adapter->total_tx_bytes += total_tx_bytes; 692 adapter->total_tx_packets += total_tx_packets; 693 adapter->net_stats.tx_bytes += total_tx_bytes; 694 adapter->net_stats.tx_packets += total_tx_packets; 695 return (count < tx_ring->count); 696} 697 698/** 699 * e1000_clean_rx_irq_ps - Send received data up the network stack; packet split 700 * @adapter: board private structure 701 * 702 * the return value indicates whether actual cleaning was done, there 703 * is no guarantee that everything was cleaned 704 **/ 705static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter, 706 int *work_done, int work_to_do) 707{ 708 union e1000_rx_desc_packet_split *rx_desc, *next_rxd; 709 struct net_device *netdev = adapter->netdev; 710 struct pci_dev *pdev = adapter->pdev; 711 struct e1000_ring *rx_ring = adapter->rx_ring; 712 struct e1000_buffer *buffer_info, *next_buffer; 713 struct e1000_ps_page *ps_page; 714 struct sk_buff *skb; 715 unsigned int i, j; 716 u32 length, staterr; 717 int cleaned_count = 0; 718 bool cleaned = 0; 719 unsigned int total_rx_bytes = 0, total_rx_packets = 0; 720 721 i = rx_ring->next_to_clean; 722 rx_desc = E1000_RX_DESC_PS(*rx_ring, i); 723 staterr = le32_to_cpu(rx_desc->wb.middle.status_error); 724 buffer_info = &rx_ring->buffer_info[i]; 725 726 while (staterr & E1000_RXD_STAT_DD) { 727 if (*work_done >= work_to_do) 728 break; 729 (*work_done)++; 730 skb = buffer_info->skb; 731 732 /* in the packet split case this is header only */ 733 prefetch(skb->data - NET_IP_ALIGN); 734 735 i++; 736 if (i == rx_ring->count) 737 i = 0; 738 next_rxd = E1000_RX_DESC_PS(*rx_ring, i); 739 prefetch(next_rxd); 740 741 next_buffer = &rx_ring->buffer_info[i]; 742 743 cleaned = 1; 744 cleaned_count++; 745 pci_unmap_single(pdev, buffer_info->dma, 746 adapter->rx_ps_bsize0, 747 PCI_DMA_FROMDEVICE); 748 buffer_info->dma = 0; 749 750 if (!(staterr & E1000_RXD_STAT_EOP)) { 751 e_dbg("%s: Packet Split buffers didn't pick up the " 752 "full packet\n", netdev->name); 753 dev_kfree_skb_irq(skb); 754 goto next_desc; 755 } 756 757 if (staterr & E1000_RXDEXT_ERR_FRAME_ERR_MASK) { 758 dev_kfree_skb_irq(skb); 759 goto next_desc; 760 } 761 762 length = le16_to_cpu(rx_desc->wb.middle.length0); 763 764 if (!length) { 765 e_dbg("%s: Last part of the packet spanning multiple " 766 "descriptors\n", netdev->name); 767 dev_kfree_skb_irq(skb); 768 goto next_desc; 769 } 770 771 /* Good Receive */ 772 skb_put(skb, length); 773 774 { 775 /* 776 * this looks ugly, but it seems compiler issues make it 777 * more efficient than reusing j 778 */ 779 int l1 = le16_to_cpu(rx_desc->wb.upper.length[0]); 780 781 /* 782 * page alloc/put takes too long and effects small packet 783 * throughput, so unsplit small packets and save the alloc/put 784 * only valid in softirq (napi) context to call kmap_* 785 */ 786 if (l1 && (l1 <= copybreak) && 787 ((length + l1) <= adapter->rx_ps_bsize0)) { 788 u8 *vaddr; 789 790 ps_page = &buffer_info->ps_pages[0]; 791 792 /* 793 * there is no documentation about how to call 794 * kmap_atomic, so we can't hold the mapping 795 * very long 796 */ 797 pci_dma_sync_single_for_cpu(pdev, ps_page->dma, 798 PAGE_SIZE, PCI_DMA_FROMDEVICE); 799 vaddr = kmap_atomic(ps_page->page, KM_SKB_DATA_SOFTIRQ); 800 memcpy(skb_tail_pointer(skb), vaddr, l1); 801 kunmap_atomic(vaddr, KM_SKB_DATA_SOFTIRQ); 802 pci_dma_sync_single_for_device(pdev, ps_page->dma, 803 PAGE_SIZE, PCI_DMA_FROMDEVICE); 804 805 /* remove the CRC */ 806 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) 807 l1 -= 4; 808 809 skb_put(skb, l1); 810 goto copydone; 811 } /* if */ 812 } 813 814 for (j = 0; j < PS_PAGE_BUFFERS; j++) { 815 length = le16_to_cpu(rx_desc->wb.upper.length[j]); 816 if (!length) 817 break; 818 819 ps_page = &buffer_info->ps_pages[j]; 820 pci_unmap_page(pdev, ps_page->dma, PAGE_SIZE, 821 PCI_DMA_FROMDEVICE); 822 ps_page->dma = 0; 823 skb_fill_page_desc(skb, j, ps_page->page, 0, length); 824 ps_page->page = NULL; 825 skb->len += length; 826 skb->data_len += length; 827 skb->truesize += length; 828 } 829 830 /* strip the ethernet crc, problem is we're using pages now so 831 * this whole operation can get a little cpu intensive 832 */ 833 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) 834 pskb_trim(skb, skb->len - 4); 835 836copydone: 837 total_rx_bytes += skb->len; 838 total_rx_packets++; 839 840 e1000_rx_checksum(adapter, staterr, le16_to_cpu( 841 rx_desc->wb.lower.hi_dword.csum_ip.csum), skb); 842 843 if (rx_desc->wb.upper.header_status & 844 cpu_to_le16(E1000_RXDPS_HDRSTAT_HDRSP)) 845 adapter->rx_hdr_split++; 846 847 e1000_receive_skb(adapter, netdev, skb, 848 staterr, rx_desc->wb.middle.vlan); 849 850next_desc: 851 rx_desc->wb.middle.status_error &= cpu_to_le32(~0xFF); 852 buffer_info->skb = NULL; 853 854 /* return some buffers to hardware, one at a time is too slow */ 855 if (cleaned_count >= E1000_RX_BUFFER_WRITE) { 856 adapter->alloc_rx_buf(adapter, cleaned_count); 857 cleaned_count = 0; 858 } 859 860 /* use prefetched values */ 861 rx_desc = next_rxd; 862 buffer_info = next_buffer; 863 864 staterr = le32_to_cpu(rx_desc->wb.middle.status_error); 865 } 866 rx_ring->next_to_clean = i; 867 868 cleaned_count = e1000_desc_unused(rx_ring); 869 if (cleaned_count) 870 adapter->alloc_rx_buf(adapter, cleaned_count); 871 872 adapter->total_rx_bytes += total_rx_bytes; 873 adapter->total_rx_packets += total_rx_packets; 874 adapter->net_stats.rx_bytes += total_rx_bytes; 875 adapter->net_stats.rx_packets += total_rx_packets; 876 return cleaned; 877} 878 879/** 880 * e1000_consume_page - helper function 881 **/ 882static void e1000_consume_page(struct e1000_buffer *bi, struct sk_buff *skb, 883 u16 length) 884{ 885 bi->page = NULL; 886 skb->len += length; 887 skb->data_len += length; 888 skb->truesize += length; 889} 890 891/** 892 * e1000_clean_jumbo_rx_irq - Send received data up the network stack; legacy 893 * @adapter: board private structure 894 * 895 * the return value indicates whether actual cleaning was done, there 896 * is no guarantee that everything was cleaned 897 **/ 898 899static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter, 900 int *work_done, int work_to_do) 901{ 902 struct net_device *netdev = adapter->netdev; 903 struct pci_dev *pdev = adapter->pdev; 904 struct e1000_ring *rx_ring = adapter->rx_ring; 905 struct e1000_rx_desc *rx_desc, *next_rxd; 906 struct e1000_buffer *buffer_info, *next_buffer; 907 u32 length; 908 unsigned int i; 909 int cleaned_count = 0; 910 bool cleaned = false; 911 unsigned int total_rx_bytes=0, total_rx_packets=0; 912 913 i = rx_ring->next_to_clean; 914 rx_desc = E1000_RX_DESC(*rx_ring, i); 915 buffer_info = &rx_ring->buffer_info[i]; 916 917 while (rx_desc->status & E1000_RXD_STAT_DD) { 918 struct sk_buff *skb; 919 u8 status; 920 921 if (*work_done >= work_to_do) 922 break; 923 (*work_done)++; 924 925 status = rx_desc->status; 926 skb = buffer_info->skb; 927 buffer_info->skb = NULL; 928 929 ++i; 930 if (i == rx_ring->count) 931 i = 0; 932 next_rxd = E1000_RX_DESC(*rx_ring, i); 933 prefetch(next_rxd); 934 935 next_buffer = &rx_ring->buffer_info[i]; 936 937 cleaned = true; 938 cleaned_count++; 939 pci_unmap_page(pdev, buffer_info->dma, PAGE_SIZE, 940 PCI_DMA_FROMDEVICE); 941 buffer_info->dma = 0; 942 943 length = le16_to_cpu(rx_desc->length); 944 945 /* errors is only valid for DD + EOP descriptors */ 946 if (unlikely((status & E1000_RXD_STAT_EOP) && 947 (rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK))) { 948 /* recycle both page and skb */ 949 buffer_info->skb = skb; 950 /* an error means any chain goes out the window 951 * too */ 952 if (rx_ring->rx_skb_top) 953 dev_kfree_skb(rx_ring->rx_skb_top); 954 rx_ring->rx_skb_top = NULL; 955 goto next_desc; 956 } 957 958#define rxtop rx_ring->rx_skb_top 959 if (!(status & E1000_RXD_STAT_EOP)) { 960 /* this descriptor is only the beginning (or middle) */ 961 if (!rxtop) { 962 /* this is the beginning of a chain */ 963 rxtop = skb; 964 skb_fill_page_desc(rxtop, 0, buffer_info->page, 965 0, length); 966 } else { 967 /* this is the middle of a chain */ 968 skb_fill_page_desc(rxtop, 969 skb_shinfo(rxtop)->nr_frags, 970 buffer_info->page, 0, length); 971 /* re-use the skb, only consumed the page */ 972 buffer_info->skb = skb; 973 } 974 e1000_consume_page(buffer_info, rxtop, length); 975 goto next_desc; 976 } else { 977 if (rxtop) { 978 /* end of the chain */ 979 skb_fill_page_desc(rxtop, 980 skb_shinfo(rxtop)->nr_frags, 981 buffer_info->page, 0, length); 982 /* re-use the current skb, we only consumed the 983 * page */ 984 buffer_info->skb = skb; 985 skb = rxtop; 986 rxtop = NULL; 987 e1000_consume_page(buffer_info, skb, length); 988 } else { 989 /* no chain, got EOP, this buf is the packet 990 * copybreak to save the put_page/alloc_page */ 991 if (length <= copybreak && 992 skb_tailroom(skb) >= length) { 993 u8 *vaddr; 994 vaddr = kmap_atomic(buffer_info->page, 995 KM_SKB_DATA_SOFTIRQ); 996 memcpy(skb_tail_pointer(skb), vaddr, 997 length); 998 kunmap_atomic(vaddr, 999 KM_SKB_DATA_SOFTIRQ); 1000 /* re-use the page, so don't erase 1001 * buffer_info->page */ 1002 skb_put(skb, length); 1003 } else { 1004 skb_fill_page_desc(skb, 0, 1005 buffer_info->page, 0, 1006 length); 1007 e1000_consume_page(buffer_info, skb, 1008 length); 1009 } 1010 } 1011 } 1012 1013 /* Receive Checksum Offload XXX recompute due to CRC strip? */ 1014 e1000_rx_checksum(adapter, 1015 (u32)(status) | 1016 ((u32)(rx_desc->errors) << 24), 1017 le16_to_cpu(rx_desc->csum), skb); 1018 1019 /* probably a little skewed due to removing CRC */ 1020 total_rx_bytes += skb->len; 1021 total_rx_packets++; 1022 1023 /* eth type trans needs skb->data to point to something */ 1024 if (!pskb_may_pull(skb, ETH_HLEN)) { 1025 e_err("pskb_may_pull failed.\n"); 1026 dev_kfree_skb(skb); 1027 goto next_desc; 1028 } 1029 1030 e1000_receive_skb(adapter, netdev, skb, status, 1031 rx_desc->special); 1032 1033next_desc: 1034 rx_desc->status = 0; 1035 1036 /* return some buffers to hardware, one at a time is too slow */ 1037 if (unlikely(cleaned_count >= E1000_RX_BUFFER_WRITE)) { 1038 adapter->alloc_rx_buf(adapter, cleaned_count); 1039 cleaned_count = 0; 1040 } 1041 1042 /* use prefetched values */ 1043 rx_desc = next_rxd; 1044 buffer_info = next_buffer; 1045 } 1046 rx_ring->next_to_clean = i; 1047 1048 cleaned_count = e1000_desc_unused(rx_ring); 1049 if (cleaned_count) 1050 adapter->alloc_rx_buf(adapter, cleaned_count); 1051 1052 adapter->total_rx_bytes += total_rx_bytes; 1053 adapter->total_rx_packets += total_rx_packets; 1054 adapter->net_stats.rx_bytes += total_rx_bytes; 1055 adapter->net_stats.rx_packets += total_rx_packets; 1056 return cleaned; 1057} 1058 1059/** 1060 * e1000_clean_rx_ring - Free Rx Buffers per Queue 1061 * @adapter: board private structure 1062 **/ 1063static void e1000_clean_rx_ring(struct e1000_adapter *adapter) 1064{ 1065 struct e1000_ring *rx_ring = adapter->rx_ring; 1066 struct e1000_buffer *buffer_info; 1067 struct e1000_ps_page *ps_page; 1068 struct pci_dev *pdev = adapter->pdev; 1069 unsigned int i, j; 1070 1071 /* Free all the Rx ring sk_buffs */ 1072 for (i = 0; i < rx_ring->count; i++) { 1073 buffer_info = &rx_ring->buffer_info[i]; 1074 if (buffer_info->dma) { 1075 if (adapter->clean_rx == e1000_clean_rx_irq) 1076 pci_unmap_single(pdev, buffer_info->dma, 1077 adapter->rx_buffer_len, 1078 PCI_DMA_FROMDEVICE); 1079 else if (adapter->clean_rx == e1000_clean_jumbo_rx_irq) 1080 pci_unmap_page(pdev, buffer_info->dma, 1081 PAGE_SIZE, 1082 PCI_DMA_FROMDEVICE); 1083 else if (adapter->clean_rx == e1000_clean_rx_irq_ps) 1084 pci_unmap_single(pdev, buffer_info->dma, 1085 adapter->rx_ps_bsize0, 1086 PCI_DMA_FROMDEVICE); 1087 buffer_info->dma = 0; 1088 } 1089 1090 if (buffer_info->page) { 1091 put_page(buffer_info->page); 1092 buffer_info->page = NULL; 1093 } 1094 1095 if (buffer_info->skb) { 1096 dev_kfree_skb(buffer_info->skb); 1097 buffer_info->skb = NULL; 1098 } 1099 1100 for (j = 0; j < PS_PAGE_BUFFERS; j++) { 1101 ps_page = &buffer_info->ps_pages[j]; 1102 if (!ps_page->page) 1103 break; 1104 pci_unmap_page(pdev, ps_page->dma, PAGE_SIZE, 1105 PCI_DMA_FROMDEVICE); 1106 ps_page->dma = 0; 1107 put_page(ps_page->page); 1108 ps_page->page = NULL; 1109 } 1110 } 1111 1112 /* there also may be some cached data from a chained receive */ 1113 if (rx_ring->rx_skb_top) { 1114 dev_kfree_skb(rx_ring->rx_skb_top); 1115 rx_ring->rx_skb_top = NULL; 1116 } 1117 1118 /* Zero out the descriptor ring */ 1119 memset(rx_ring->desc, 0, rx_ring->size); 1120 1121 rx_ring->next_to_clean = 0; 1122 rx_ring->next_to_use = 0; 1123 1124 writel(0, adapter->hw.hw_addr + rx_ring->head); 1125 writel(0, adapter->hw.hw_addr + rx_ring->tail); 1126} 1127 1128static void e1000e_downshift_workaround(struct work_struct *work) 1129{ 1130 struct e1000_adapter *adapter = container_of(work, 1131 struct e1000_adapter, downshift_task); 1132 1133 e1000e_gig_downshift_workaround_ich8lan(&adapter->hw); 1134} 1135 1136/** 1137 * e1000_intr_msi - Interrupt Handler 1138 * @irq: interrupt number 1139 * @data: pointer to a network interface device structure 1140 **/ 1141static irqreturn_t e1000_intr_msi(int irq, void *data) 1142{ 1143 struct net_device *netdev = data; 1144 struct e1000_adapter *adapter = netdev_priv(netdev); 1145 struct e1000_hw *hw = &adapter->hw; 1146 u32 icr = er32(ICR); 1147 1148 /* 1149 * read ICR disables interrupts using IAM 1150 */ 1151 1152 if (icr & E1000_ICR_LSC) { 1153 hw->mac.get_link_status = 1; 1154 /* 1155 * ICH8 workaround-- Call gig speed drop workaround on cable 1156 * disconnect (LSC) before accessing any PHY registers 1157 */ 1158 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && 1159 (!(er32(STATUS) & E1000_STATUS_LU))) 1160 schedule_work(&adapter->downshift_task); 1161 1162 /* 1163 * 80003ES2LAN workaround-- For packet buffer work-around on 1164 * link down event; disable receives here in the ISR and reset 1165 * adapter in watchdog 1166 */ 1167 if (netif_carrier_ok(netdev) && 1168 adapter->flags & FLAG_RX_NEEDS_RESTART) { 1169 /* disable receives */ 1170 u32 rctl = er32(RCTL); 1171 ew32(RCTL, rctl & ~E1000_RCTL_EN); 1172 adapter->flags |= FLAG_RX_RESTART_NOW; 1173 } 1174 /* guard against interrupt when we're going down */ 1175 if (!test_bit(__E1000_DOWN, &adapter->state)) 1176 mod_timer(&adapter->watchdog_timer, jiffies + 1); 1177 } 1178 1179 if (napi_schedule_prep(&adapter->napi)) { 1180 adapter->total_tx_bytes = 0; 1181 adapter->total_tx_packets = 0; 1182 adapter->total_rx_bytes = 0; 1183 adapter->total_rx_packets = 0; 1184 __napi_schedule(&adapter->napi); 1185 } 1186 1187 return IRQ_HANDLED; 1188} 1189 1190/** 1191 * e1000_intr - Interrupt Handler 1192 * @irq: interrupt number 1193 * @data: pointer to a network interface device structure 1194 **/ 1195static irqreturn_t e1000_intr(int irq, void *data) 1196{ 1197 struct net_device *netdev = data; 1198 struct e1000_adapter *adapter = netdev_priv(netdev); 1199 struct e1000_hw *hw = &adapter->hw; 1200 u32 rctl, icr = er32(ICR); 1201 1202 if (!icr) 1203 return IRQ_NONE; /* Not our interrupt */ 1204 1205 /* 1206 * IMS will not auto-mask if INT_ASSERTED is not set, and if it is 1207 * not set, then the adapter didn't send an interrupt 1208 */ 1209 if (!(icr & E1000_ICR_INT_ASSERTED)) 1210 return IRQ_NONE; 1211 1212 /* 1213 * Interrupt Auto-Mask...upon reading ICR, 1214 * interrupts are masked. No need for the 1215 * IMC write 1216 */ 1217 1218 if (icr & E1000_ICR_LSC) { 1219 hw->mac.get_link_status = 1; 1220 /* 1221 * ICH8 workaround-- Call gig speed drop workaround on cable 1222 * disconnect (LSC) before accessing any PHY registers 1223 */ 1224 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && 1225 (!(er32(STATUS) & E1000_STATUS_LU))) 1226 schedule_work(&adapter->downshift_task); 1227 1228 /* 1229 * 80003ES2LAN workaround-- 1230 * For packet buffer work-around on link down event; 1231 * disable receives here in the ISR and 1232 * reset adapter in watchdog 1233 */ 1234 if (netif_carrier_ok(netdev) && 1235 (adapter->flags & FLAG_RX_NEEDS_RESTART)) { 1236 /* disable receives */ 1237 rctl = er32(RCTL); 1238 ew32(RCTL, rctl & ~E1000_RCTL_EN); 1239 adapter->flags |= FLAG_RX_RESTART_NOW; 1240 } 1241 /* guard against interrupt when we're going down */ 1242 if (!test_bit(__E1000_DOWN, &adapter->state)) 1243 mod_timer(&adapter->watchdog_timer, jiffies + 1); 1244 } 1245 1246 if (napi_schedule_prep(&adapter->napi)) { 1247 adapter->total_tx_bytes = 0; 1248 adapter->total_tx_packets = 0; 1249 adapter->total_rx_bytes = 0; 1250 adapter->total_rx_packets = 0; 1251 __napi_schedule(&adapter->napi); 1252 } 1253 1254 return IRQ_HANDLED; 1255} 1256 1257static irqreturn_t e1000_msix_other(int irq, void *data) 1258{ 1259 struct net_device *netdev = data; 1260 struct e1000_adapter *adapter = netdev_priv(netdev); 1261 struct e1000_hw *hw = &adapter->hw; 1262 u32 icr = er32(ICR); 1263 1264 if (!(icr & E1000_ICR_INT_ASSERTED)) { 1265 if (!test_bit(__E1000_DOWN, &adapter->state)) 1266 ew32(IMS, E1000_IMS_OTHER); 1267 return IRQ_NONE; 1268 } 1269 1270 if (icr & adapter->eiac_mask) 1271 ew32(ICS, (icr & adapter->eiac_mask)); 1272 1273 if (icr & E1000_ICR_OTHER) { 1274 if (!(icr & E1000_ICR_LSC)) 1275 goto no_link_interrupt; 1276 hw->mac.get_link_status = 1; 1277 /* guard against interrupt when we're going down */ 1278 if (!test_bit(__E1000_DOWN, &adapter->state)) 1279 mod_timer(&adapter->watchdog_timer, jiffies + 1); 1280 } 1281 1282no_link_interrupt: 1283 if (!test_bit(__E1000_DOWN, &adapter->state)) 1284 ew32(IMS, E1000_IMS_LSC | E1000_IMS_OTHER); 1285 1286 return IRQ_HANDLED; 1287} 1288 1289 1290static irqreturn_t e1000_intr_msix_tx(int irq, void *data) 1291{ 1292 struct net_device *netdev = data; 1293 struct e1000_adapter *adapter = netdev_priv(netdev); 1294 struct e1000_hw *hw = &adapter->hw; 1295 struct e1000_ring *tx_ring = adapter->tx_ring; 1296 1297 1298 adapter->total_tx_bytes = 0; 1299 adapter->total_tx_packets = 0; 1300 1301 if (!e1000_clean_tx_irq(adapter)) 1302 /* Ring was not completely cleaned, so fire another interrupt */ 1303 ew32(ICS, tx_ring->ims_val); 1304 1305 return IRQ_HANDLED; 1306} 1307 1308static irqreturn_t e1000_intr_msix_rx(int irq, void *data) 1309{ 1310 struct net_device *netdev = data; 1311 struct e1000_adapter *adapter = netdev_priv(netdev); 1312 1313 /* Write the ITR value calculated at the end of the 1314 * previous interrupt. 1315 */ 1316 if (adapter->rx_ring->set_itr) { 1317 writel(1000000000 / (adapter->rx_ring->itr_val * 256), 1318 adapter->hw.hw_addr + adapter->rx_ring->itr_register); 1319 adapter->rx_ring->set_itr = 0; 1320 } 1321 1322 if (napi_schedule_prep(&adapter->napi)) { 1323 adapter->total_rx_bytes = 0; 1324 adapter->total_rx_packets = 0; 1325 __napi_schedule(&adapter->napi); 1326 } 1327 return IRQ_HANDLED; 1328} 1329 1330/** 1331 * e1000_configure_msix - Configure MSI-X hardware 1332 * 1333 * e1000_configure_msix sets up the hardware to properly 1334 * generate MSI-X interrupts. 1335 **/ 1336static void e1000_configure_msix(struct e1000_adapter *adapter) 1337{ 1338 struct e1000_hw *hw = &adapter->hw; 1339 struct e1000_ring *rx_ring = adapter->rx_ring; 1340 struct e1000_ring *tx_ring = adapter->tx_ring; 1341 int vector = 0; 1342 u32 ctrl_ext, ivar = 0; 1343 1344 adapter->eiac_mask = 0; 1345 1346 /* Workaround issue with spurious interrupts on 82574 in MSI-X mode */ 1347 if (hw->mac.type == e1000_82574) { 1348 u32 rfctl = er32(RFCTL); 1349 rfctl |= E1000_RFCTL_ACK_DIS; 1350 ew32(RFCTL, rfctl); 1351 } 1352 1353#define E1000_IVAR_INT_ALLOC_VALID 0x8 1354 /* Configure Rx vector */ 1355 rx_ring->ims_val = E1000_IMS_RXQ0; 1356 adapter->eiac_mask |= rx_ring->ims_val; 1357 if (rx_ring->itr_val) 1358 writel(1000000000 / (rx_ring->itr_val * 256), 1359 hw->hw_addr + rx_ring->itr_register); 1360 else 1361 writel(1, hw->hw_addr + rx_ring->itr_register); 1362 ivar = E1000_IVAR_INT_ALLOC_VALID | vector; 1363 1364 /* Configure Tx vector */ 1365 tx_ring->ims_val = E1000_IMS_TXQ0; 1366 vector++; 1367 if (tx_ring->itr_val) 1368 writel(1000000000 / (tx_ring->itr_val * 256), 1369 hw->hw_addr + tx_ring->itr_register); 1370 else 1371 writel(1, hw->hw_addr + tx_ring->itr_register); 1372 adapter->eiac_mask |= tx_ring->ims_val; 1373 ivar |= ((E1000_IVAR_INT_ALLOC_VALID | vector) << 8); 1374 1375 /* set vector for Other Causes, e.g. link changes */ 1376 vector++; 1377 ivar |= ((E1000_IVAR_INT_ALLOC_VALID | vector) << 16); 1378 if (rx_ring->itr_val) 1379 writel(1000000000 / (rx_ring->itr_val * 256), 1380 hw->hw_addr + E1000_EITR_82574(vector)); 1381 else 1382 writel(1, hw->hw_addr + E1000_EITR_82574(vector)); 1383 1384 /* Cause Tx interrupts on every write back */ 1385 ivar |= (1 << 31); 1386 1387 ew32(IVAR, ivar); 1388 1389 /* enable MSI-X PBA support */ 1390 ctrl_ext = er32(CTRL_EXT); 1391 ctrl_ext |= E1000_CTRL_EXT_PBA_CLR; 1392 1393 /* Auto-Mask Other interrupts upon ICR read */ 1394#define E1000_EIAC_MASK_82574 0x01F00000 1395 ew32(IAM, ~E1000_EIAC_MASK_82574 | E1000_IMS_OTHER); 1396 ctrl_ext |= E1000_CTRL_EXT_EIAME; 1397 ew32(CTRL_EXT, ctrl_ext); 1398 e1e_flush(); 1399} 1400 1401void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter) 1402{ 1403 if (adapter->msix_entries) { 1404 pci_disable_msix(adapter->pdev); 1405 kfree(adapter->msix_entries); 1406 adapter->msix_entries = NULL; 1407 } else if (adapter->flags & FLAG_MSI_ENABLED) { 1408 pci_disable_msi(adapter->pdev); 1409 adapter->flags &= ~FLAG_MSI_ENABLED; 1410 } 1411 1412 return; 1413} 1414 1415/** 1416 * e1000e_set_interrupt_capability - set MSI or MSI-X if supported 1417 * 1418 * Attempt to configure interrupts using the best available 1419 * capabilities of the hardware and kernel. 1420 **/ 1421void e1000e_set_interrupt_capability(struct e1000_adapter *adapter) 1422{ 1423 int err; 1424 int numvecs, i; 1425 1426 1427 switch (adapter->int_mode) { 1428 case E1000E_INT_MODE_MSIX: 1429 if (adapter->flags & FLAG_HAS_MSIX) { 1430 numvecs = 3; /* RxQ0, TxQ0 and other */ 1431 adapter->msix_entries = kcalloc(numvecs, 1432 sizeof(struct msix_entry), 1433 GFP_KERNEL); 1434 if (adapter->msix_entries) { 1435 for (i = 0; i < numvecs; i++) 1436 adapter->msix_entries[i].entry = i; 1437 1438 err = pci_enable_msix(adapter->pdev, 1439 adapter->msix_entries, 1440 numvecs); 1441 if (err == 0) 1442 return; 1443 } 1444 /* MSI-X failed, so fall through and try MSI */ 1445 e_err("Failed to initialize MSI-X interrupts. " 1446 "Falling back to MSI interrupts.\n"); 1447 e1000e_reset_interrupt_capability(adapter); 1448 } 1449 adapter->int_mode = E1000E_INT_MODE_MSI; 1450 /* Fall through */ 1451 case E1000E_INT_MODE_MSI: 1452 if (!pci_enable_msi(adapter->pdev)) { 1453 adapter->flags |= FLAG_MSI_ENABLED; 1454 } else { 1455 adapter->int_mode = E1000E_INT_MODE_LEGACY; 1456 e_err("Failed to initialize MSI interrupts. Falling " 1457 "back to legacy interrupts.\n"); 1458 } 1459 /* Fall through */ 1460 case E1000E_INT_MODE_LEGACY: 1461 /* Don't do anything; this is the system default */ 1462 break; 1463 } 1464 1465 return; 1466} 1467 1468/** 1469 * e1000_request_msix - Initialize MSI-X interrupts 1470 * 1471 * e1000_request_msix allocates MSI-X vectors and requests interrupts from the 1472 * kernel. 1473 **/ 1474static int e1000_request_msix(struct e1000_adapter *adapter) 1475{ 1476 struct net_device *netdev = adapter->netdev; 1477 int err = 0, vector = 0; 1478 1479 if (strlen(netdev->name) < (IFNAMSIZ - 5)) 1480 sprintf(adapter->rx_ring->name, "%s-rx-0", netdev->name); 1481 else 1482 memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ); 1483 err = request_irq(adapter->msix_entries[vector].vector, 1484 &e1000_intr_msix_rx, 0, adapter->rx_ring->name, 1485 netdev); 1486 if (err) 1487 goto out; 1488 adapter->rx_ring->itr_register = E1000_EITR_82574(vector); 1489 adapter->rx_ring->itr_val = adapter->itr; 1490 vector++; 1491 1492 if (strlen(netdev->name) < (IFNAMSIZ - 5)) 1493 sprintf(adapter->tx_ring->name, "%s-tx-0", netdev->name); 1494 else 1495 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); 1496 err = request_irq(adapter->msix_entries[vector].vector, 1497 &e1000_intr_msix_tx, 0, adapter->tx_ring->name, 1498 netdev); 1499 if (err) 1500 goto out; 1501 adapter->tx_ring->itr_register = E1000_EITR_82574(vector); 1502 adapter->tx_ring->itr_val = adapter->itr; 1503 vector++; 1504 1505 err = request_irq(adapter->msix_entries[vector].vector, 1506 &e1000_msix_other, 0, netdev->name, netdev); 1507 if (err) 1508 goto out; 1509 1510 e1000_configure_msix(adapter); 1511 return 0; 1512out: 1513 return err; 1514} 1515 1516/** 1517 * e1000_request_irq - initialize interrupts 1518 * 1519 * Attempts to configure interrupts using the best available 1520 * capabilities of the hardware and kernel. 1521 **/ 1522static int e1000_request_irq(struct e1000_adapter *adapter) 1523{ 1524 struct net_device *netdev = adapter->netdev; 1525 int err; 1526 1527 if (adapter->msix_entries) { 1528 err = e1000_request_msix(adapter); 1529 if (!err) 1530 return err; 1531 /* fall back to MSI */ 1532 e1000e_reset_interrupt_capability(adapter); 1533 adapter->int_mode = E1000E_INT_MODE_MSI; 1534 e1000e_set_interrupt_capability(adapter); 1535 } 1536 if (adapter->flags & FLAG_MSI_ENABLED) { 1537 err = request_irq(adapter->pdev->irq, &e1000_intr_msi, 0, 1538 netdev->name, netdev); 1539 if (!err) 1540 return err; 1541 1542 /* fall back to legacy interrupt */ 1543 e1000e_reset_interrupt_capability(adapter); 1544 adapter->int_mode = E1000E_INT_MODE_LEGACY; 1545 } 1546 1547 err = request_irq(adapter->pdev->irq, &e1000_intr, IRQF_SHARED, 1548 netdev->name, netdev); 1549 if (err) 1550 e_err("Unable to allocate interrupt, Error: %d\n", err); 1551 1552 return err; 1553} 1554 1555static void e1000_free_irq(struct e1000_adapter *adapter) 1556{ 1557 struct net_device *netdev = adapter->netdev; 1558 1559 if (adapter->msix_entries) { 1560 int vector = 0; 1561 1562 free_irq(adapter->msix_entries[vector].vector, netdev); 1563 vector++; 1564 1565 free_irq(adapter->msix_entries[vector].vector, netdev); 1566 vector++; 1567 1568 /* Other Causes interrupt vector */ 1569 free_irq(adapter->msix_entries[vector].vector, netdev); 1570 return; 1571 } 1572 1573 free_irq(adapter->pdev->irq, netdev); 1574} 1575 1576/** 1577 * e1000_irq_disable - Mask off interrupt generation on the NIC 1578 **/ 1579static void e1000_irq_disable(struct e1000_adapter *adapter) 1580{ 1581 struct e1000_hw *hw = &adapter->hw; 1582 1583 ew32(IMC, ~0); 1584 if (adapter->msix_entries) 1585 ew32(EIAC_82574, 0); 1586 e1e_flush(); 1587 synchronize_irq(adapter->pdev->irq); 1588} 1589 1590/** 1591 * e1000_irq_enable - Enable default interrupt generation settings 1592 **/ 1593static void e1000_irq_enable(struct e1000_adapter *adapter) 1594{ 1595 struct e1000_hw *hw = &adapter->hw; 1596 1597 if (adapter->msix_entries) { 1598 ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); 1599 ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC); 1600 } else { 1601 ew32(IMS, IMS_ENABLE_MASK); 1602 } 1603 e1e_flush(); 1604} 1605 1606/** 1607 * e1000_get_hw_control - get control of the h/w from f/w 1608 * @adapter: address of board private structure 1609 * 1610 * e1000_get_hw_control sets {CTRL_EXT|SWSM}:DRV_LOAD bit. 1611 * For ASF and Pass Through versions of f/w this means that 1612 * the driver is loaded. For AMT version (only with 82573) 1613 * of the f/w this means that the network i/f is open. 1614 **/ 1615static void e1000_get_hw_control(struct e1000_adapter *adapter) 1616{ 1617 struct e1000_hw *hw = &adapter->hw; 1618 u32 ctrl_ext; 1619 u32 swsm; 1620 1621 /* Let firmware know the driver has taken over */ 1622 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) { 1623 swsm = er32(SWSM); 1624 ew32(SWSM, swsm | E1000_SWSM_DRV_LOAD); 1625 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) { 1626 ctrl_ext = er32(CTRL_EXT); 1627 ew32(CTRL_EXT, ctrl_ext | E1000_CTRL_EXT_DRV_LOAD); 1628 } 1629} 1630 1631/** 1632 * e1000_release_hw_control - release control of the h/w to f/w 1633 * @adapter: address of board private structure 1634 * 1635 * e1000_release_hw_control resets {CTRL_EXT|SWSM}:DRV_LOAD bit. 1636 * For ASF and Pass Through versions of f/w this means that the 1637 * driver is no longer loaded. For AMT version (only with 82573) i 1638 * of the f/w this means that the network i/f is closed. 1639 * 1640 **/ 1641static void e1000_release_hw_control(struct e1000_adapter *adapter) 1642{ 1643 struct e1000_hw *hw = &adapter->hw; 1644 u32 ctrl_ext; 1645 u32 swsm; 1646 1647 /* Let firmware taken over control of h/w */ 1648 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) { 1649 swsm = er32(SWSM); 1650 ew32(SWSM, swsm & ~E1000_SWSM_DRV_LOAD); 1651 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) { 1652 ctrl_ext = er32(CTRL_EXT); 1653 ew32(CTRL_EXT, ctrl_ext & ~E1000_CTRL_EXT_DRV_LOAD); 1654 } 1655} 1656 1657/** 1658 * @e1000_alloc_ring - allocate memory for a ring structure 1659 **/ 1660static int e1000_alloc_ring_dma(struct e1000_adapter *adapter, 1661 struct e1000_ring *ring) 1662{ 1663 struct pci_dev *pdev = adapter->pdev; 1664 1665 ring->desc = dma_alloc_coherent(&pdev->dev, ring->size, &ring->dma, 1666 GFP_KERNEL); 1667 if (!ring->desc) 1668 return -ENOMEM; 1669 1670 return 0; 1671} 1672 1673/** 1674 * e1000e_setup_tx_resources - allocate Tx resources (Descriptors) 1675 * @adapter: board private structure 1676 * 1677 * Return 0 on success, negative on failure 1678 **/ 1679int e1000e_setup_tx_resources(struct e1000_adapter *adapter) 1680{ 1681 struct e1000_ring *tx_ring = adapter->tx_ring; 1682 int err = -ENOMEM, size; 1683 1684 size = sizeof(struct e1000_buffer) * tx_ring->count; 1685 tx_ring->buffer_info = vmalloc(size); 1686 if (!tx_ring->buffer_info) 1687 goto err; 1688 memset(tx_ring->buffer_info, 0, size); 1689 1690 /* round up to nearest 4K */ 1691 tx_ring->size = tx_ring->count * sizeof(struct e1000_tx_desc); 1692 tx_ring->size = ALIGN(tx_ring->size, 4096); 1693 1694 err = e1000_alloc_ring_dma(adapter, tx_ring); 1695 if (err) 1696 goto err; 1697 1698 tx_ring->next_to_use = 0; 1699 tx_ring->next_to_clean = 0; 1700 1701 return 0; 1702err: 1703 vfree(tx_ring->buffer_info); 1704 e_err("Unable to allocate memory for the transmit descriptor ring\n"); 1705 return err; 1706} 1707 1708/** 1709 * e1000e_setup_rx_resources - allocate Rx resources (Descriptors) 1710 * @adapter: board private structure 1711 * 1712 * Returns 0 on success, negative on failure 1713 **/ 1714int e1000e_setup_rx_resources(struct e1000_adapter *adapter) 1715{ 1716 struct e1000_ring *rx_ring = adapter->rx_ring; 1717 struct e1000_buffer *buffer_info; 1718 int i, size, desc_len, err = -ENOMEM; 1719 1720 size = sizeof(struct e1000_buffer) * rx_ring->count; 1721 rx_ring->buffer_info = vmalloc(size); 1722 if (!rx_ring->buffer_info) 1723 goto err; 1724 memset(rx_ring->buffer_info, 0, size); 1725 1726 for (i = 0; i < rx_ring->count; i++) { 1727 buffer_info = &rx_ring->buffer_info[i]; 1728 buffer_info->ps_pages = kcalloc(PS_PAGE_BUFFERS, 1729 sizeof(struct e1000_ps_page), 1730 GFP_KERNEL); 1731 if (!buffer_info->ps_pages) 1732 goto err_pages; 1733 } 1734 1735 desc_len = sizeof(union e1000_rx_desc_packet_split); 1736 1737 /* Round up to nearest 4K */ 1738 rx_ring->size = rx_ring->count * desc_len; 1739 rx_ring->size = ALIGN(rx_ring->size, 4096); 1740 1741 err = e1000_alloc_ring_dma(adapter, rx_ring); 1742 if (err) 1743 goto err_pages; 1744 1745 rx_ring->next_to_clean = 0; 1746 rx_ring->next_to_use = 0; 1747 rx_ring->rx_skb_top = NULL; 1748 1749 return 0; 1750 1751err_pages: 1752 for (i = 0; i < rx_ring->count; i++) { 1753 buffer_info = &rx_ring->buffer_info[i]; 1754 kfree(buffer_info->ps_pages); 1755 } 1756err: 1757 vfree(rx_ring->buffer_info); 1758 e_err("Unable to allocate memory for the transmit descriptor ring\n"); 1759 return err; 1760} 1761 1762/** 1763 * e1000_clean_tx_ring - Free Tx Buffers 1764 * @adapter: board private structure 1765 **/ 1766static void e1000_clean_tx_ring(struct e1000_adapter *adapter) 1767{ 1768 struct e1000_ring *tx_ring = adapter->tx_ring; 1769 struct e1000_buffer *buffer_info; 1770 unsigned long size; 1771 unsigned int i; 1772 1773 for (i = 0; i < tx_ring->count; i++) { 1774 buffer_info = &tx_ring->buffer_info[i]; 1775 e1000_put_txbuf(adapter, buffer_info); 1776 } 1777 1778 size = sizeof(struct e1000_buffer) * tx_ring->count; 1779 memset(tx_ring->buffer_info, 0, size); 1780 1781 memset(tx_ring->desc, 0, tx_ring->size); 1782 1783 tx_ring->next_to_use = 0; 1784 tx_ring->next_to_clean = 0; 1785 1786 writel(0, adapter->hw.hw_addr + tx_ring->head); 1787 writel(0, adapter->hw.hw_addr + tx_ring->tail); 1788} 1789 1790/** 1791 * e1000e_free_tx_resources - Free Tx Resources per Queue 1792 * @adapter: board private structure 1793 * 1794 * Free all transmit software resources 1795 **/ 1796void e1000e_free_tx_resources(struct e1000_adapter *adapter) 1797{ 1798 struct pci_dev *pdev = adapter->pdev; 1799 struct e1000_ring *tx_ring = adapter->tx_ring; 1800 1801 e1000_clean_tx_ring(adapter); 1802 1803 vfree(tx_ring->buffer_info); 1804 tx_ring->buffer_info = NULL; 1805 1806 dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc, 1807 tx_ring->dma); 1808 tx_ring->desc = NULL; 1809} 1810 1811/** 1812 * e1000e_free_rx_resources - Free Rx Resources 1813 * @adapter: board private structure 1814 * 1815 * Free all receive software resources 1816 **/ 1817 1818void e1000e_free_rx_resources(struct e1000_adapter *adapter) 1819{ 1820 struct pci_dev *pdev = adapter->pdev; 1821 struct e1000_ring *rx_ring = adapter->rx_ring; 1822 int i; 1823 1824 e1000_clean_rx_ring(adapter); 1825 1826 for (i = 0; i < rx_ring->count; i++) { 1827 kfree(rx_ring->buffer_info[i].ps_pages); 1828 } 1829 1830 vfree(rx_ring->buffer_info); 1831 rx_ring->buffer_info = NULL; 1832 1833 dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc, 1834 rx_ring->dma); 1835 rx_ring->desc = NULL; 1836} 1837 1838/** 1839 * e1000_update_itr - update the dynamic ITR value based on statistics 1840 * @adapter: pointer to adapter 1841 * @itr_setting: current adapter->itr 1842 * @packets: the number of packets during this measurement interval 1843 * @bytes: the number of bytes during this measurement interval 1844 * 1845 * Stores a new ITR value based on packets and byte 1846 * counts during the last interrupt. The advantage of per interrupt 1847 * computation is faster updates and more accurate ITR for the current 1848 * traffic pattern. Constants in this function were computed 1849 * based on theoretical maximum wire speed and thresholds were set based 1850 * on testing data as well as attempting to minimize response time 1851 * while increasing bulk throughput. This functionality is controlled 1852 * by the InterruptThrottleRate module parameter. 1853 **/ 1854static unsigned int e1000_update_itr(struct e1000_adapter *adapter, 1855 u16 itr_setting, int packets, 1856 int bytes) 1857{ 1858 unsigned int retval = itr_setting; 1859 1860 if (packets == 0) 1861 goto update_itr_done; 1862 1863 switch (itr_setting) { 1864 case lowest_latency: 1865 /* handle TSO and jumbo frames */ 1866 if (bytes/packets > 8000) 1867 retval = bulk_latency; 1868 else if ((packets < 5) && (bytes > 512)) { 1869 retval = low_latency; 1870 } 1871 break; 1872 case low_latency: /* 50 usec aka 20000 ints/s */ 1873 if (bytes > 10000) { 1874 /* this if handles the TSO accounting */ 1875 if (bytes/packets > 8000) { 1876 retval = bulk_latency; 1877 } else if ((packets < 10) || ((bytes/packets) > 1200)) { 1878 retval = bulk_latency; 1879 } else if ((packets > 35)) { 1880 retval = lowest_latency; 1881 } 1882 } else if (bytes/packets > 2000) { 1883 retval = bulk_latency; 1884 } else if (packets <= 2 && bytes < 512) { 1885 retval = lowest_latency; 1886 } 1887 break; 1888 case bulk_latency: /* 250 usec aka 4000 ints/s */ 1889 if (bytes > 25000) { 1890 if (packets > 35) { 1891 retval = low_latency; 1892 } 1893 } else if (bytes < 6000) { 1894 retval = low_latency; 1895 } 1896 break; 1897 } 1898 1899update_itr_done: 1900 return retval; 1901} 1902 1903static void e1000_set_itr(struct e1000_adapter *adapter) 1904{ 1905 struct e1000_hw *hw = &adapter->hw; 1906 u16 current_itr; 1907 u32 new_itr = adapter->itr; 1908 1909 /* for non-gigabit speeds, just fix the interrupt rate at 4000 */ 1910 if (adapter->link_speed != SPEED_1000) { 1911 current_itr = 0; 1912 new_itr = 4000; 1913 goto set_itr_now; 1914 } 1915 1916 adapter->tx_itr = e1000_update_itr(adapter, 1917 adapter->tx_itr, 1918 adapter->total_tx_packets, 1919 adapter->total_tx_bytes); 1920 /* conservative mode (itr 3) eliminates the lowest_latency setting */ 1921 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency) 1922 adapter->tx_itr = low_latency; 1923 1924 adapter->rx_itr = e1000_update_itr(adapter, 1925 adapter->rx_itr, 1926 adapter->total_rx_packets, 1927 adapter->total_rx_bytes); 1928 /* conservative mode (itr 3) eliminates the lowest_latency setting */ 1929 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency) 1930 adapter->rx_itr = low_latency; 1931 1932 current_itr = max(adapter->rx_itr, adapter->tx_itr); 1933 1934 switch (current_itr) { 1935 /* counts and packets in update_itr are dependent on these numbers */ 1936 case lowest_latency: 1937 new_itr = 70000; 1938 break; 1939 case low_latency: 1940 new_itr = 20000; /* aka hwitr = ~200 */ 1941 break; 1942 case bulk_latency: 1943 new_itr = 4000; 1944 break; 1945 default: 1946 break; 1947 } 1948 1949set_itr_now: 1950 if (new_itr != adapter->itr) { 1951 /* 1952 * this attempts to bias the interrupt rate towards Bulk 1953 * by adding intermediate steps when interrupt rate is 1954 * increasing 1955 */ 1956 new_itr = new_itr > adapter->itr ? 1957 min(adapter->itr + (new_itr >> 2), new_itr) : 1958 new_itr; 1959 adapter->itr = new_itr; 1960 adapter->rx_ring->itr_val = new_itr; 1961 if (adapter->msix_entries) 1962 adapter->rx_ring->set_itr = 1; 1963 else 1964 ew32(ITR, 1000000000 / (new_itr * 256)); 1965 } 1966} 1967 1968/** 1969 * e1000_alloc_queues - Allocate memory for all rings 1970 * @adapter: board private structure to initialize 1971 **/ 1972static int __devinit e1000_alloc_queues(struct e1000_adapter *adapter) 1973{ 1974 adapter->tx_ring = kzalloc(sizeof(struct e1000_ring), GFP_KERNEL); 1975 if (!adapter->tx_ring) 1976 goto err; 1977 1978 adapter->rx_ring = kzalloc(sizeof(struct e1000_ring), GFP_KERNEL); 1979 if (!adapter->rx_ring) 1980 goto err; 1981 1982 return 0; 1983err: 1984 e_err("Unable to allocate memory for queues\n"); 1985 kfree(adapter->rx_ring); 1986 kfree(adapter->tx_ring); 1987 return -ENOMEM; 1988} 1989 1990/** 1991 * e1000_clean - NAPI Rx polling callback 1992 * @napi: struct associated with this polling callback 1993 * @budget: amount of packets driver is allowed to process this poll 1994 **/ 1995static int e1000_clean(struct napi_struct *napi, int budget) 1996{ 1997 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi); 1998 struct e1000_hw *hw = &adapter->hw; 1999 struct net_device *poll_dev = adapter->netdev; 2000 int tx_cleaned = 1, work_done = 0; 2001 2002 adapter = netdev_priv(poll_dev); 2003 2004 if (adapter->msix_entries && 2005 !(adapter->rx_ring->ims_val & adapter->tx_ring->ims_val)) 2006 goto clean_rx; 2007 2008 tx_cleaned = e1000_clean_tx_irq(adapter); 2009 2010clean_rx: 2011 adapter->clean_rx(adapter, &work_done, budget); 2012 2013 if (!tx_cleaned) 2014 work_done = budget; 2015 2016 /* If budget not fully consumed, exit the polling mode */ 2017 if (work_done < budget) { 2018 if (adapter->itr_setting & 3) 2019 e1000_set_itr(adapter); 2020 napi_complete(napi); 2021 if (!test_bit(__E1000_DOWN, &adapter->state)) { 2022 if (adapter->msix_entries) 2023 ew32(IMS, adapter->rx_ring->ims_val); 2024 else 2025 e1000_irq_enable(adapter); 2026 } 2027 } 2028 2029 return work_done; 2030} 2031 2032static void e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid) 2033{ 2034 struct e1000_adapter *adapter = netdev_priv(netdev); 2035 struct e1000_hw *hw = &adapter->hw; 2036 u32 vfta, index; 2037 2038 /* don't update vlan cookie if already programmed */ 2039 if ((adapter->hw.mng_cookie.status & 2040 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) && 2041 (vid == adapter->mng_vlan_id)) 2042 return; 2043 /* add VID to filter table */ 2044 index = (vid >> 5) & 0x7F; 2045 vfta = E1000_READ_REG_ARRAY(hw, E1000_VFTA, index); 2046 vfta |= (1 << (vid & 0x1F)); 2047 e1000e_write_vfta(hw, index, vfta); 2048} 2049 2050static void e1000_vlan_rx_kill_vid(struct net_device *netdev, u16 vid) 2051{ 2052 struct e1000_adapter *adapter = netdev_priv(netdev); 2053 struct e1000_hw *hw = &adapter->hw; 2054 u32 vfta, index; 2055 2056 if (!test_bit(__E1000_DOWN, &adapter->state)) 2057 e1000_irq_disable(adapter); 2058 vlan_group_set_device(adapter->vlgrp, vid, NULL); 2059 2060 if (!test_bit(__E1000_DOWN, &adapter->state)) 2061 e1000_irq_enable(adapter); 2062 2063 if ((adapter->hw.mng_cookie.status & 2064 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) && 2065 (vid == adapter->mng_vlan_id)) { 2066 /* release control to f/w */ 2067 e1000_release_hw_control(adapter); 2068 return; 2069 } 2070 2071 /* remove VID from filter table */ 2072 index = (vid >> 5) & 0x7F; 2073 vfta = E1000_READ_REG_ARRAY(hw, E1000_VFTA, index); 2074 vfta &= ~(1 << (vid & 0x1F)); 2075 e1000e_write_vfta(hw, index, vfta); 2076} 2077 2078static void e1000_update_mng_vlan(struct e1000_adapter *adapter) 2079{ 2080 struct net_device *netdev = adapter->netdev; 2081 u16 vid = adapter->hw.mng_cookie.vlan_id; 2082 u16 old_vid = adapter->mng_vlan_id; 2083 2084 if (!adapter->vlgrp) 2085 return; 2086 2087 if (!vlan_group_get_device(adapter->vlgrp, vid)) { 2088 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; 2089 if (adapter->hw.mng_cookie.status & 2090 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) { 2091 e1000_vlan_rx_add_vid(netdev, vid); 2092 adapter->mng_vlan_id = vid; 2093 } 2094 2095 if ((old_vid != (u16)E1000_MNG_VLAN_NONE) && 2096 (vid != old_vid) && 2097 !vlan_group_get_device(adapter->vlgrp, old_vid)) 2098 e1000_vlan_rx_kill_vid(netdev, old_vid); 2099 } else { 2100 adapter->mng_vlan_id = vid; 2101 } 2102} 2103 2104 2105static void e1000_vlan_rx_register(struct net_device *netdev, 2106 struct vlan_group *grp) 2107{ 2108 struct e1000_adapter *adapter = netdev_priv(netdev); 2109 struct e1000_hw *hw = &adapter->hw; 2110 u32 ctrl, rctl; 2111 2112 if (!test_bit(__E1000_DOWN, &adapter->state)) 2113 e1000_irq_disable(adapter); 2114 adapter->vlgrp = grp; 2115 2116 if (grp) { 2117 /* enable VLAN tag insert/strip */ 2118 ctrl = er32(CTRL); 2119 ctrl |= E1000_CTRL_VME; 2120 ew32(CTRL, ctrl); 2121 2122 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { 2123 /* enable VLAN receive filtering */ 2124 rctl = er32(RCTL); 2125 rctl &= ~E1000_RCTL_CFIEN; 2126 ew32(RCTL, rctl); 2127 e1000_update_mng_vlan(adapter); 2128 } 2129 } else { 2130 /* disable VLAN tag insert/strip */ 2131 ctrl = er32(CTRL); 2132 ctrl &= ~E1000_CTRL_VME; 2133 ew32(CTRL, ctrl); 2134 2135 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { 2136 if (adapter->mng_vlan_id != 2137 (u16)E1000_MNG_VLAN_NONE) { 2138 e1000_vlan_rx_kill_vid(netdev, 2139 adapter->mng_vlan_id); 2140 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; 2141 } 2142 } 2143 } 2144 2145 if (!test_bit(__E1000_DOWN, &adapter->state)) 2146 e1000_irq_enable(adapter); 2147} 2148 2149static void e1000_restore_vlan(struct e1000_adapter *adapter) 2150{ 2151 u16 vid; 2152 2153 e1000_vlan_rx_register(adapter->netdev, adapter->vlgrp); 2154 2155 if (!adapter->vlgrp) 2156 return; 2157 2158 for (vid = 0; vid < VLAN_GROUP_ARRAY_LEN; vid++) { 2159 if (!vlan_group_get_device(adapter->vlgrp, vid)) 2160 continue; 2161 e1000_vlan_rx_add_vid(adapter->netdev, vid); 2162 } 2163} 2164 2165static void e1000_init_manageability(struct e1000_adapter *adapter) 2166{ 2167 struct e1000_hw *hw = &adapter->hw; 2168 u32 manc, manc2h; 2169 2170 if (!(adapter->flags & FLAG_MNG_PT_ENABLED)) 2171 return; 2172 2173 manc = er32(MANC); 2174 2175 /* 2176 * enable receiving management packets to the host. this will probably 2177 * generate destination unreachable messages from the host OS, but 2178 * the packets will be handled on SMBUS 2179 */ 2180 manc |= E1000_MANC_EN_MNG2HOST; 2181 manc2h = er32(MANC2H); 2182#define E1000_MNG2HOST_PORT_623 (1 << 5) 2183#define E1000_MNG2HOST_PORT_664 (1 << 6) 2184 manc2h |= E1000_MNG2HOST_PORT_623; 2185 manc2h |= E1000_MNG2HOST_PORT_664; 2186 ew32(MANC2H, manc2h); 2187 ew32(MANC, manc); 2188} 2189 2190/** 2191 * e1000_configure_tx - Configure 8254x Transmit Unit after Reset 2192 * @adapter: board private structure 2193 * 2194 * Configure the Tx unit of the MAC after a reset. 2195 **/ 2196static void e1000_configure_tx(struct e1000_adapter *adapter) 2197{ 2198 struct e1000_hw *hw = &adapter->hw; 2199 struct e1000_ring *tx_ring = adapter->tx_ring; 2200 u64 tdba; 2201 u32 tdlen, tctl, tipg, tarc; 2202 u32 ipgr1, ipgr2; 2203 2204 /* Setup the HW Tx Head and Tail descriptor pointers */ 2205 tdba = tx_ring->dma; 2206 tdlen = tx_ring->count * sizeof(struct e1000_tx_desc); 2207 ew32(TDBAL, (tdba & DMA_BIT_MASK(32))); 2208 ew32(TDBAH, (tdba >> 32)); 2209 ew32(TDLEN, tdlen); 2210 ew32(TDH, 0); 2211 ew32(TDT, 0); 2212 tx_ring->head = E1000_TDH; 2213 tx_ring->tail = E1000_TDT; 2214 2215 /* Set the default values for the Tx Inter Packet Gap timer */ 2216 tipg = DEFAULT_82543_TIPG_IPGT_COPPER; /* 8 */ 2217 ipgr1 = DEFAULT_82543_TIPG_IPGR1; /* 8 */ 2218 ipgr2 = DEFAULT_82543_TIPG_IPGR2; /* 6 */ 2219 2220 if (adapter->flags & FLAG_TIPG_MEDIUM_FOR_80003ESLAN) 2221 ipgr2 = DEFAULT_80003ES2LAN_TIPG_IPGR2; /* 7 */ 2222 2223 tipg |= ipgr1 << E1000_TIPG_IPGR1_SHIFT; 2224 tipg |= ipgr2 << E1000_TIPG_IPGR2_SHIFT; 2225 ew32(TIPG, tipg); 2226 2227 /* Set the Tx Interrupt Delay register */ 2228 ew32(TIDV, adapter->tx_int_delay); 2229 /* Tx irq moderation */ 2230 ew32(TADV, adapter->tx_abs_int_delay); 2231 2232 /* Program the Transmit Control Register */ 2233 tctl = er32(TCTL); 2234 tctl &= ~E1000_TCTL_CT; 2235 tctl |= E1000_TCTL_PSP | E1000_TCTL_RTLC | 2236 (E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT); 2237 2238 if (adapter->flags & FLAG_TARC_SPEED_MODE_BIT) { 2239 tarc = er32(TARC(0)); 2240 /* 2241 * set the speed mode bit, we'll clear it if we're not at 2242 * gigabit link later 2243 */ 2244#define SPEED_MODE_BIT (1 << 21) 2245 tarc |= SPEED_MODE_BIT; 2246 ew32(TARC(0), tarc); 2247 } 2248 2249 /* errata: program both queues to unweighted RR */ 2250 if (adapter->flags & FLAG_TARC_SET_BIT_ZERO) { 2251 tarc = er32(TARC(0)); 2252 tarc |= 1; 2253 ew32(TARC(0), tarc); 2254 tarc = er32(TARC(1)); 2255 tarc |= 1; 2256 ew32(TARC(1), tarc); 2257 } 2258 2259 /* Setup Transmit Descriptor Settings for eop descriptor */ 2260 adapter->txd_cmd = E1000_TXD_CMD_EOP | E1000_TXD_CMD_IFCS; 2261 2262 /* only set IDE if we are delaying interrupts using the timers */ 2263 if (adapter->tx_int_delay) 2264 adapter->txd_cmd |= E1000_TXD_CMD_IDE; 2265 2266 /* enable Report Status bit */ 2267 adapter->txd_cmd |= E1000_TXD_CMD_RS; 2268 2269 ew32(TCTL, tctl); 2270 2271 e1000e_config_collision_dist(hw); 2272 2273 adapter->tx_queue_len = adapter->netdev->tx_queue_len; 2274} 2275 2276/** 2277 * e1000_setup_rctl - configure the receive control registers 2278 * @adapter: Board private structure 2279 **/ 2280#define PAGE_USE_COUNT(S) (((S) >> PAGE_SHIFT) + \ 2281 (((S) & (PAGE_SIZE - 1)) ? 1 : 0)) 2282static void e1000_setup_rctl(struct e1000_adapter *adapter) 2283{ 2284 struct e1000_hw *hw = &adapter->hw; 2285 u32 rctl, rfctl; 2286 u32 psrctl = 0; 2287 u32 pages = 0; 2288 2289 /* Program MC offset vector base */ 2290 rctl = er32(RCTL); 2291 rctl &= ~(3 << E1000_RCTL_MO_SHIFT); 2292 rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | 2293 E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | 2294 (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); 2295 2296 /* Do not Store bad packets */ 2297 rctl &= ~E1000_RCTL_SBP; 2298 2299 /* Enable Long Packet receive */ 2300 if (adapter->netdev->mtu <= ETH_DATA_LEN) 2301 rctl &= ~E1000_RCTL_LPE; 2302 else 2303 rctl |= E1000_RCTL_LPE; 2304 2305 /* Some systems expect that the CRC is included in SMBUS traffic. The 2306 * hardware strips the CRC before sending to both SMBUS (BMC) and to 2307 * host memory when this is enabled 2308 */ 2309 if (adapter->flags2 & FLAG2_CRC_STRIPPING) 2310 rctl |= E1000_RCTL_SECRC; 2311 2312 /* Workaround Si errata on 82577 PHY - configure IPG for jumbos */ 2313 if ((hw->phy.type == e1000_phy_82577) && (rctl & E1000_RCTL_LPE)) { 2314 u16 phy_data; 2315 2316 e1e_rphy(hw, PHY_REG(770, 26), &phy_data); 2317 phy_data &= 0xfff8; 2318 phy_data |= (1 << 2); 2319 e1e_wphy(hw, PHY_REG(770, 26), phy_data); 2320 2321 e1e_rphy(hw, 22, &phy_data); 2322 phy_data &= 0x0fff; 2323 phy_data |= (1 << 14); 2324 e1e_wphy(hw, 0x10, 0x2823); 2325 e1e_wphy(hw, 0x11, 0x0003); 2326 e1e_wphy(hw, 22, phy_data); 2327 } 2328 2329 /* Setup buffer sizes */ 2330 rctl &= ~E1000_RCTL_SZ_4096; 2331 rctl |= E1000_RCTL_BSEX; 2332 switch (adapter->rx_buffer_len) { 2333 case 256: 2334 rctl |= E1000_RCTL_SZ_256; 2335 rctl &= ~E1000_RCTL_BSEX; 2336 break; 2337 case 512: 2338 rctl |= E1000_RCTL_SZ_512; 2339 rctl &= ~E1000_RCTL_BSEX; 2340 break; 2341 case 1024: 2342 rctl |= E1000_RCTL_SZ_1024; 2343 rctl &= ~E1000_RCTL_BSEX; 2344 break; 2345 case 2048: 2346 default: 2347 rctl |= E1000_RCTL_SZ_2048; 2348 rctl &= ~E1000_RCTL_BSEX; 2349 break; 2350 case 4096: 2351 rctl |= E1000_RCTL_SZ_4096; 2352 break; 2353 case 8192: 2354 rctl |= E1000_RCTL_SZ_8192; 2355 break; 2356 case 16384: 2357 rctl |= E1000_RCTL_SZ_16384; 2358 break; 2359 } 2360 2361 /* 2362 * 82571 and greater support packet-split where the protocol 2363 * header is placed in skb->data and the packet data is 2364 * placed in pages hanging off of skb_shinfo(skb)->nr_frags. 2365 * In the case of a non-split, skb->data is linearly filled, 2366 * followed by the page buffers. Therefore, skb->data is 2367 * sized to hold the largest protocol header. 2368 * 2369 * allocations using alloc_page take too long for regular MTU 2370 * so only enable packet split for jumbo frames 2371 * 2372 * Using pages when the page size is greater than 16k wastes 2373 * a lot of memory, since we allocate 3 pages at all times 2374 * per packet. 2375 */ 2376 pages = PAGE_USE_COUNT(adapter->netdev->mtu); 2377 if (!(adapter->flags & FLAG_IS_ICH) && (pages <= 3) && 2378 (PAGE_SIZE <= 16384) && (rctl & E1000_RCTL_LPE)) 2379 adapter->rx_ps_pages = pages; 2380 else 2381 adapter->rx_ps_pages = 0; 2382 2383 if (adapter->rx_ps_pages) { 2384 /* Configure extra packet-split registers */ 2385 rfctl = er32(RFCTL); 2386 rfctl |= E1000_RFCTL_EXTEN; 2387 /* 2388 * disable packet split support for IPv6 extension headers, 2389 * because some malformed IPv6 headers can hang the Rx 2390 */ 2391 rfctl |= (E1000_RFCTL_IPV6_EX_DIS | 2392 E1000_RFCTL_NEW_IPV6_EXT_DIS); 2393 2394 ew32(RFCTL, rfctl); 2395 2396 /* Enable Packet split descriptors */ 2397 rctl |= E1000_RCTL_DTYP_PS; 2398 2399 psrctl |= adapter->rx_ps_bsize0 >> 2400 E1000_PSRCTL_BSIZE0_SHIFT; 2401 2402 switch (adapter->rx_ps_pages) { 2403 case 3: 2404 psrctl |= PAGE_SIZE << 2405 E1000_PSRCTL_BSIZE3_SHIFT; 2406 case 2: 2407 psrctl |= PAGE_SIZE << 2408 E1000_PSRCTL_BSIZE2_SHIFT; 2409 case 1: 2410 psrctl |= PAGE_SIZE >> 2411 E1000_PSRCTL_BSIZE1_SHIFT; 2412 break; 2413 } 2414 2415 ew32(PSRCTL, psrctl); 2416 } 2417 2418 ew32(RCTL, rctl); 2419 /* just started the receive unit, no need to restart */ 2420 adapter->flags &= ~FLAG_RX_RESTART_NOW; 2421} 2422 2423/** 2424 * e1000_configure_rx - Configure Receive Unit after Reset 2425 * @adapter: board private structure 2426 * 2427 * Configure the Rx unit of the MAC after a reset. 2428 **/ 2429static void e1000_configure_rx(struct e1000_adapter *adapter) 2430{ 2431 struct e1000_hw *hw = &adapter->hw; 2432 struct e1000_ring *rx_ring = adapter->rx_ring; 2433 u64 rdba; 2434 u32 rdlen, rctl, rxcsum, ctrl_ext; 2435 2436 if (adapter->rx_ps_pages) { 2437 /* this is a 32 byte descriptor */ 2438 rdlen = rx_ring->count * 2439 sizeof(union e1000_rx_desc_packet_split); 2440 adapter->clean_rx = e1000_clean_rx_irq_ps; 2441 adapter->alloc_rx_buf = e1000_alloc_rx_buffers_ps; 2442 } else if (adapter->netdev->mtu > ETH_FRAME_LEN + ETH_FCS_LEN) { 2443 rdlen = rx_ring->count * sizeof(struct e1000_rx_desc); 2444 adapter->clean_rx = e1000_clean_jumbo_rx_irq; 2445 adapter->alloc_rx_buf = e1000_alloc_jumbo_rx_buffers; 2446 } else { 2447 rdlen = rx_ring->count * sizeof(struct e1000_rx_desc); 2448 adapter->clean_rx = e1000_clean_rx_irq; 2449 adapter->alloc_rx_buf = e1000_alloc_rx_buffers; 2450 } 2451 2452 /* disable receives while setting up the descriptors */ 2453 rctl = er32(RCTL); 2454 ew32(RCTL, rctl & ~E1000_RCTL_EN); 2455 e1e_flush(); 2456 msleep(10); 2457 2458 /* set the Receive Delay Timer Register */ 2459 ew32(RDTR, adapter->rx_int_delay); 2460 2461 /* irq moderation */ 2462 ew32(RADV, adapter->rx_abs_int_delay); 2463 if (adapter->itr_setting != 0) 2464 ew32(ITR, 1000000000 / (adapter->itr * 256)); 2465 2466 ctrl_ext = er32(CTRL_EXT); 2467 /* Reset delay timers after every interrupt */ 2468 ctrl_ext |= E1000_CTRL_EXT_INT_TIMER_CLR; 2469 /* Auto-Mask interrupts upon ICR access */ 2470 ctrl_ext |= E1000_CTRL_EXT_IAME; 2471 ew32(IAM, 0xffffffff); 2472 ew32(CTRL_EXT, ctrl_ext); 2473 e1e_flush(); 2474 2475 /* 2476 * Setup the HW Rx Head and Tail Descriptor Pointers and 2477 * the Base and Length of the Rx Descriptor Ring 2478 */ 2479 rdba = rx_ring->dma; 2480 ew32(RDBAL, (rdba & DMA_BIT_MASK(32))); 2481 ew32(RDBAH, (rdba >> 32)); 2482 ew32(RDLEN, rdlen); 2483 ew32(RDH, 0); 2484 ew32(RDT, 0); 2485 rx_ring->head = E1000_RDH; 2486 rx_ring->tail = E1000_RDT; 2487 2488 /* Enable Receive Checksum Offload for TCP and UDP */ 2489 rxcsum = er32(RXCSUM); 2490 if (adapter->flags & FLAG_RX_CSUM_ENABLED) { 2491 rxcsum |= E1000_RXCSUM_TUOFL; 2492 2493 /* 2494 * IPv4 payload checksum for UDP fragments must be 2495 * used in conjunction with packet-split. 2496 */ 2497 if (adapter->rx_ps_pages) 2498 rxcsum |= E1000_RXCSUM_IPPCSE; 2499 } else { 2500 rxcsum &= ~E1000_RXCSUM_TUOFL; 2501 /* no need to clear IPPCSE as it defaults to 0 */ 2502 } 2503 ew32(RXCSUM, rxcsum); 2504 2505 /* 2506 * Enable early receives on supported devices, only takes effect when 2507 * packet size is equal or larger than the specified value (in 8 byte 2508 * units), e.g. using jumbo frames when setting to E1000_ERT_2048 2509 */ 2510 if ((adapter->flags & FLAG_HAS_ERT) && 2511 (adapter->netdev->mtu > ETH_DATA_LEN)) { 2512 u32 rxdctl = er32(RXDCTL(0)); 2513 ew32(RXDCTL(0), rxdctl | 0x3); 2514 ew32(ERT, E1000_ERT_2048 | (1 << 13)); 2515 /* 2516 * With jumbo frames and early-receive enabled, excessive 2517 * C4->C2 latencies result in dropped transactions. 2518 */ 2519 pm_qos_update_requirement(PM_QOS_CPU_DMA_LATENCY, 2520 e1000e_driver_name, 55); 2521 } else { 2522 pm_qos_update_requirement(PM_QOS_CPU_DMA_LATENCY, 2523 e1000e_driver_name, 2524 PM_QOS_DEFAULT_VALUE); 2525 } 2526 2527 /* Enable Receives */ 2528 ew32(RCTL, rctl); 2529} 2530 2531/** 2532 * e1000_update_mc_addr_list - Update Multicast addresses 2533 * @hw: pointer to the HW structure 2534 * @mc_addr_list: array of multicast addresses to program 2535 * @mc_addr_count: number of multicast addresses to program 2536 * @rar_used_count: the first RAR register free to program 2537 * @rar_count: total number of supported Receive Address Registers 2538 * 2539 * Updates the Receive Address Registers and Multicast Table Array. 2540 * The caller must have a packed mc_addr_list of multicast addresses. 2541 * The parameter rar_count will usually be hw->mac.rar_entry_count 2542 * unless there are workarounds that change this. Currently no func pointer 2543 * exists and all implementations are handled in the generic version of this 2544 * function. 2545 **/ 2546static void e1000_update_mc_addr_list(struct e1000_hw *hw, u8 *mc_addr_list, 2547 u32 mc_addr_count, u32 rar_used_count, 2548 u32 rar_count) 2549{ 2550 hw->mac.ops.update_mc_addr_list(hw, mc_addr_list, mc_addr_count, 2551 rar_used_count, rar_count); 2552} 2553 2554/** 2555 * e1000_set_multi - Multicast and Promiscuous mode set 2556 * @netdev: network interface device structure 2557 * 2558 * The set_multi entry point is called whenever the multicast address 2559 * list or the network interface flags are updated. This routine is 2560 * responsible for configuring the hardware for proper multicast, 2561 * promiscuous mode, and all-multi behavior. 2562 **/ 2563static void e1000_set_multi(struct net_device *netdev) 2564{ 2565 struct e1000_adapter *adapter = netdev_priv(netdev); 2566 struct e1000_hw *hw = &adapter->hw; 2567 struct e1000_mac_info *mac = &hw->mac; 2568 struct dev_mc_list *mc_ptr; 2569 u8 *mta_list; 2570 u32 rctl; 2571 int i; 2572 2573 /* Check for Promiscuous and All Multicast modes */ 2574 2575 rctl = er32(RCTL); 2576 2577 if (netdev->flags & IFF_PROMISC) { 2578 rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE); 2579 rctl &= ~E1000_RCTL_VFE; 2580 } else { 2581 if (netdev->flags & IFF_ALLMULTI) { 2582 rctl |= E1000_RCTL_MPE; 2583 rctl &= ~E1000_RCTL_UPE; 2584 } else { 2585 rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE); 2586 } 2587 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) 2588 rctl |= E1000_RCTL_VFE; 2589 } 2590 2591 ew32(RCTL, rctl); 2592 2593 if (netdev->mc_count) { 2594 mta_list = kmalloc(netdev->mc_count * 6, GFP_ATOMIC); 2595 if (!mta_list) 2596 return; 2597 2598 /* prepare a packed array of only addresses. */ 2599 mc_ptr = netdev->mc_list; 2600 2601 for (i = 0; i < netdev->mc_count; i++) { 2602 if (!mc_ptr) 2603 break; 2604 memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr, 2605 ETH_ALEN); 2606 mc_ptr = mc_ptr->next; 2607 } 2608 2609 e1000_update_mc_addr_list(hw, mta_list, i, 1, 2610 mac->rar_entry_count); 2611 kfree(mta_list); 2612 } else { 2613 /* 2614 * if we're called from probe, we might not have 2615 * anything to do here, so clear out the list 2616 */ 2617 e1000_update_mc_addr_list(hw, NULL, 0, 1, mac->rar_entry_count); 2618 } 2619} 2620 2621/** 2622 * e1000_configure - configure the hardware for Rx and Tx 2623 * @adapter: private board structure 2624 **/ 2625static void e1000_configure(struct e1000_adapter *adapter) 2626{ 2627 e1000_set_multi(adapter->netdev); 2628 2629 e1000_restore_vlan(adapter); 2630 e1000_init_manageability(adapter); 2631 2632 e1000_configure_tx(adapter); 2633 e1000_setup_rctl(adapter); 2634 e1000_configure_rx(adapter); 2635 adapter->alloc_rx_buf(adapter, e1000_desc_unused(adapter->rx_ring)); 2636} 2637 2638/** 2639 * e1000e_power_up_phy - restore link in case the phy was powered down 2640 * @adapter: address of board private structure 2641 * 2642 * The phy may be powered down to save power and turn off link when the 2643 * driver is unloaded and wake on lan is not enabled (among others) 2644 * *** this routine MUST be followed by a call to e1000e_reset *** 2645 **/ 2646void e1000e_power_up_phy(struct e1000_adapter *adapter) 2647{ 2648 u16 mii_reg = 0; 2649 2650 /* Just clear the power down bit to wake the phy back up */ 2651 if (adapter->hw.phy.media_type == e1000_media_type_copper) { 2652 /* 2653 * According to the manual, the phy will retain its 2654 * settings across a power-down/up cycle 2655 */ 2656 e1e_rphy(&adapter->hw, PHY_CONTROL, &mii_reg); 2657 mii_reg &= ~MII_CR_POWER_DOWN; 2658 e1e_wphy(&adapter->hw, PHY_CONTROL, mii_reg); 2659 } 2660 2661 adapter->hw.mac.ops.setup_link(&adapter->hw); 2662} 2663 2664/** 2665 * e1000_power_down_phy - Power down the PHY 2666 * 2667 * Power down the PHY so no link is implied when interface is down 2668 * The PHY cannot be powered down is management or WoL is active 2669 */ 2670static void e1000_power_down_phy(struct e1000_adapter *adapter) 2671{ 2672 struct e1000_hw *hw = &adapter->hw; 2673 u16 mii_reg; 2674 2675 /* WoL is enabled */ 2676 if (adapter->wol) 2677 return; 2678 2679 /* non-copper PHY? */ 2680 if (adapter->hw.phy.media_type != e1000_media_type_copper) 2681 return; 2682 2683 /* reset is blocked because of a SoL/IDER session */ 2684 if (e1000e_check_mng_mode(hw) || e1000_check_reset_block(hw)) 2685 return; 2686 2687 /* manageability (AMT) is enabled */ 2688 if (er32(MANC) & E1000_MANC_SMBUS_EN) 2689 return; 2690 2691 /* power down the PHY */ 2692 e1e_rphy(hw, PHY_CONTROL, &mii_reg); 2693 mii_reg |= MII_CR_POWER_DOWN; 2694 e1e_wphy(hw, PHY_CONTROL, mii_reg); 2695 mdelay(1); 2696} 2697 2698/** 2699 * e1000e_reset - bring the hardware into a known good state 2700 * 2701 * This function boots the hardware and enables some settings that 2702 * require a configuration cycle of the hardware - those cannot be 2703 * set/changed during runtime. After reset the device needs to be 2704 * properly configured for Rx, Tx etc. 2705 */ 2706void e1000e_reset(struct e1000_adapter *adapter) 2707{ 2708 struct e1000_mac_info *mac = &adapter->hw.mac; 2709 struct e1000_fc_info *fc = &adapter->hw.fc; 2710 struct e1000_hw *hw = &adapter->hw; 2711 u32 tx_space, min_tx_space, min_rx_space; 2712 u32 pba = adapter->pba; 2713 u16 hwm; 2714 2715 /* reset Packet Buffer Allocation to default */ 2716 ew32(PBA, pba); 2717 2718 if (adapter->max_frame_size > ETH_FRAME_LEN + ETH_FCS_LEN) { 2719 /* 2720 * To maintain wire speed transmits, the Tx FIFO should be 2721 * large enough to accommodate two full transmit packets, 2722 * rounded up to the next 1KB and expressed in KB. Likewise, 2723 * the Rx FIFO should be large enough to accommodate at least 2724 * one full receive packet and is similarly rounded up and 2725 * expressed in KB. 2726 */ 2727 pba = er32(PBA); 2728 /* upper 16 bits has Tx packet buffer allocation size in KB */ 2729 tx_space = pba >> 16; 2730 /* lower 16 bits has Rx packet buffer allocation size in KB */ 2731 pba &= 0xffff; 2732 /* 2733 * the Tx fifo also stores 16 bytes of information about the tx 2734 * but don't include ethernet FCS because hardware appends it 2735 */ 2736 min_tx_space = (adapter->max_frame_size + 2737 sizeof(struct e1000_tx_desc) - 2738 ETH_FCS_LEN) * 2; 2739 min_tx_space = ALIGN(min_tx_space, 1024); 2740 min_tx_space >>= 10; 2741 /* software strips receive CRC, so leave room for it */ 2742 min_rx_space = adapter->max_frame_size; 2743 min_rx_space = ALIGN(min_rx_space, 1024); 2744 min_rx_space >>= 10; 2745 2746 /* 2747 * If current Tx allocation is less than the min Tx FIFO size, 2748 * and the min Tx FIFO size is less than the current Rx FIFO 2749 * allocation, take space away from current Rx allocation 2750 */ 2751 if ((tx_space < min_tx_space) && 2752 ((min_tx_space - tx_space) < pba)) { 2753 pba -= min_tx_space - tx_space; 2754 2755 /* 2756 * if short on Rx space, Rx wins and must trump tx 2757 * adjustment or use Early Receive if available 2758 */ 2759 if ((pba < min_rx_space) && 2760 (!(adapter->flags & FLAG_HAS_ERT))) 2761 /* ERT enabled in e1000_configure_rx */ 2762 pba = min_rx_space; 2763 } 2764 2765 ew32(PBA, pba); 2766 } 2767 2768 2769 /* 2770 * flow control settings 2771 * 2772 * The high water mark must be low enough to fit one full frame 2773 * (or the size used for early receive) above it in the Rx FIFO. 2774 * Set it to the lower of: 2775 * - 90% of the Rx FIFO size, and 2776 * - the full Rx FIFO size minus the early receive size (for parts 2777 * with ERT support assuming ERT set to E1000_ERT_2048), or 2778 * - the full Rx FIFO size minus one full frame 2779 */ 2780 if (hw->mac.type == e1000_pchlan) { 2781 /* 2782 * Workaround PCH LOM adapter hangs with certain network 2783 * loads. If hangs persist, try disabling Tx flow control. 2784 */ 2785 if (adapter->netdev->mtu > ETH_DATA_LEN) { 2786 fc->high_water = 0x3500; 2787 fc->low_water = 0x1500; 2788 } else { 2789 fc->high_water = 0x5000; 2790 fc->low_water = 0x3000; 2791 } 2792 } else { 2793 if ((adapter->flags & FLAG_HAS_ERT) && 2794 (adapter->netdev->mtu > ETH_DATA_LEN)) 2795 hwm = min(((pba << 10) * 9 / 10), 2796 ((pba << 10) - (E1000_ERT_2048 << 3))); 2797 else 2798 hwm = min(((pba << 10) * 9 / 10), 2799 ((pba << 10) - adapter->max_frame_size)); 2800 2801 fc->high_water = hwm & E1000_FCRTH_RTH; /* 8-byte granularity */ 2802 fc->low_water = fc->high_water - 8; 2803 } 2804 2805 if (adapter->flags & FLAG_DISABLE_FC_PAUSE_TIME) 2806 fc->pause_time = 0xFFFF; 2807 else 2808 fc->pause_time = E1000_FC_PAUSE_TIME; 2809 fc->send_xon = 1; 2810 fc->current_mode = fc->requested_mode; 2811 2812 /* Allow time for pending master requests to run */ 2813 mac->ops.reset_hw(hw); 2814 2815 /* 2816 * For parts with AMT enabled, let the firmware know 2817 * that the network interface is in control 2818 */ 2819 if (adapter->flags & FLAG_HAS_AMT) 2820 e1000_get_hw_control(adapter); 2821 2822 ew32(WUC, 0); 2823 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) 2824 e1e_wphy(&adapter->hw, BM_WUC, 0); 2825 2826 if (mac->ops.init_hw(hw)) 2827 e_err("Hardware Error\n"); 2828 2829 /* additional part of the flow-control workaround above */ 2830 if (hw->mac.type == e1000_pchlan) 2831 ew32(FCRTV_PCH, 0x1000); 2832 2833 e1000_update_mng_vlan(adapter); 2834 2835 /* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */ 2836 ew32(VET, ETH_P_8021Q); 2837 2838 e1000e_reset_adaptive(hw); 2839 e1000_get_phy_info(hw); 2840 2841 if ((adapter->flags & FLAG_HAS_SMART_POWER_DOWN) && 2842 !(adapter->flags & FLAG_SMART_POWER_DOWN)) { 2843 u16 phy_data = 0; 2844 /* 2845 * speed up time to link by disabling smart power down, ignore 2846 * the return value of this function because there is nothing 2847 * different we would do if it failed 2848 */ 2849 e1e_rphy(hw, IGP02E1000_PHY_POWER_MGMT, &phy_data); 2850 phy_data &= ~IGP02E1000_PM_SPD; 2851 e1e_wphy(hw, IGP02E1000_PHY_POWER_MGMT, phy_data); 2852 } 2853} 2854 2855int e1000e_up(struct e1000_adapter *adapter) 2856{ 2857 struct e1000_hw *hw = &adapter->hw; 2858 2859 /* hardware has been reset, we need to reload some things */ 2860 e1000_configure(adapter); 2861 2862 clear_bit(__E1000_DOWN, &adapter->state); 2863 2864 napi_enable(&adapter->napi); 2865 if (adapter->msix_entries) 2866 e1000_configure_msix(adapter); 2867 e1000_irq_enable(adapter); 2868 2869 netif_wake_queue(adapter->netdev); 2870 2871 /* fire a link change interrupt to start the watchdog */ 2872 ew32(ICS, E1000_ICS_LSC); 2873 return 0; 2874} 2875 2876void e1000e_down(struct e1000_adapter *adapter) 2877{ 2878 struct net_device *netdev = adapter->netdev; 2879 struct e1000_hw *hw = &adapter->hw; 2880 u32 tctl, rctl; 2881 2882 /* 2883 * signal that we're down so the interrupt handler does not 2884 * reschedule our watchdog timer 2885 */ 2886 set_bit(__E1000_DOWN, &adapter->state); 2887 2888 /* disable receives in the hardware */ 2889 rctl = er32(RCTL); 2890 ew32(RCTL, rctl & ~E1000_RCTL_EN); 2891 /* flush and sleep below */ 2892 2893 netif_stop_queue(netdev); 2894 2895 /* disable transmits in the hardware */ 2896 tctl = er32(TCTL); 2897 tctl &= ~E1000_TCTL_EN; 2898 ew32(TCTL, tctl); 2899 /* flush both disables and wait for them to finish */ 2900 e1e_flush(); 2901 msleep(10); 2902 2903 napi_disable(&adapter->napi); 2904 e1000_irq_disable(adapter); 2905 2906 del_timer_sync(&adapter->watchdog_timer); 2907 del_timer_sync(&adapter->phy_info_timer); 2908 2909 netdev->tx_queue_len = adapter->tx_queue_len; 2910 netif_carrier_off(netdev); 2911 adapter->link_speed = 0; 2912 adapter->link_duplex = 0; 2913 2914 if (!pci_channel_offline(adapter->pdev)) 2915 e1000e_reset(adapter); 2916 e1000_clean_tx_ring(adapter); 2917 e1000_clean_rx_ring(adapter); 2918 2919 /* 2920 * TODO: for power management, we could drop the link and 2921 * pci_disable_device here. 2922 */ 2923} 2924 2925void e1000e_reinit_locked(struct e1000_adapter *adapter) 2926{ 2927 might_sleep(); 2928 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) 2929 msleep(1); 2930 e1000e_down(adapter); 2931 e1000e_up(adapter); 2932 clear_bit(__E1000_RESETTING, &adapter->state); 2933} 2934 2935/** 2936 * e1000_sw_init - Initialize general software structures (struct e1000_adapter) 2937 * @adapter: board private structure to initialize 2938 * 2939 * e1000_sw_init initializes the Adapter private data structure. 2940 * Fields are initialized based on PCI device information and 2941 * OS network device settings (MTU size). 2942 **/ 2943static int __devinit e1000_sw_init(struct e1000_adapter *adapter) 2944{ 2945 struct net_device *netdev = adapter->netdev; 2946 2947 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN; 2948 adapter->rx_ps_bsize0 = 128; 2949 adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN; 2950 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN; 2951 2952 e1000e_set_interrupt_capability(adapter); 2953 2954 if (e1000_alloc_queues(adapter)) 2955 return -ENOMEM; 2956 2957 /* Explicitly disable IRQ since the NIC can be in any state. */ 2958 e1000_irq_disable(adapter); 2959 2960 set_bit(__E1000_DOWN, &adapter->state); 2961 return 0; 2962} 2963 2964/** 2965 * e1000_intr_msi_test - Interrupt Handler 2966 * @irq: interrupt number 2967 * @data: pointer to a network interface device structure 2968 **/ 2969static irqreturn_t e1000_intr_msi_test(int irq, void *data) 2970{ 2971 struct net_device *netdev = data; 2972 struct e1000_adapter *adapter = netdev_priv(netdev); 2973 struct e1000_hw *hw = &adapter->hw; 2974 u32 icr = er32(ICR); 2975 2976 e_dbg("%s: icr is %08X\n", netdev->name, icr); 2977 if (icr & E1000_ICR_RXSEQ) { 2978 adapter->flags &= ~FLAG_MSI_TEST_FAILED; 2979 wmb(); 2980 } 2981 2982 return IRQ_HANDLED; 2983} 2984 2985/** 2986 * e1000_test_msi_interrupt - Returns 0 for successful test 2987 * @adapter: board private struct 2988 * 2989 * code flow taken from tg3.c 2990 **/ 2991static int e1000_test_msi_interrupt(struct e1000_adapter *adapter) 2992{ 2993 struct net_device *netdev = adapter->netdev; 2994 struct e1000_hw *hw = &adapter->hw; 2995 int err; 2996 2997 /* poll_enable hasn't been called yet, so don't need disable */ 2998 /* clear any pending events */ 2999 er32(ICR); 3000 3001 /* free the real vector and request a test handler */ 3002 e1000_free_irq(adapter); 3003 e1000e_reset_interrupt_capability(adapter); 3004 3005 /* Assume that the test fails, if it succeeds then the test 3006 * MSI irq handler will unset this flag */ 3007 adapter->flags |= FLAG_MSI_TEST_FAILED; 3008 3009 err = pci_enable_msi(adapter->pdev); 3010 if (err) 3011 goto msi_test_failed; 3012 3013 err = request_irq(adapter->pdev->irq, &e1000_intr_msi_test, 0, 3014 netdev->name, netdev); 3015 if (err) { 3016 pci_disable_msi(adapter->pdev); 3017 goto msi_test_failed; 3018 } 3019 3020 wmb(); 3021 3022 e1000_irq_enable(adapter); 3023 3024 /* fire an unusual interrupt on the test handler */ 3025 ew32(ICS, E1000_ICS_RXSEQ); 3026 e1e_flush(); 3027 msleep(50); 3028 3029 e1000_irq_disable(adapter); 3030 3031 rmb(); 3032 3033 if (adapter->flags & FLAG_MSI_TEST_FAILED) { 3034 adapter->int_mode = E1000E_INT_MODE_LEGACY; 3035 err = -EIO; 3036 e_info("MSI interrupt test failed!\n"); 3037 } 3038 3039 free_irq(adapter->pdev->irq, netdev); 3040 pci_disable_msi(adapter->pdev); 3041 3042 if (err == -EIO) 3043 goto msi_test_failed; 3044 3045 /* okay so the test worked, restore settings */ 3046 e_dbg("%s: MSI interrupt test succeeded!\n", netdev->name); 3047msi_test_failed: 3048 e1000e_set_interrupt_capability(adapter); 3049 e1000_request_irq(adapter); 3050 return err; 3051} 3052 3053/** 3054 * e1000_test_msi - Returns 0 if MSI test succeeds or INTx mode is restored 3055 * @adapter: board private struct 3056 * 3057 * code flow taken from tg3.c, called with e1000 interrupts disabled. 3058 **/ 3059static int e1000_test_msi(struct e1000_adapter *adapter) 3060{ 3061 int err; 3062 u16 pci_cmd; 3063 3064 if (!(adapter->flags & FLAG_MSI_ENABLED)) 3065 return 0; 3066 3067 /* disable SERR in case the MSI write causes a master abort */ 3068 pci_read_config_word(adapter->pdev, PCI_COMMAND, &pci_cmd); 3069 pci_write_config_word(adapter->pdev, PCI_COMMAND, 3070 pci_cmd & ~PCI_COMMAND_SERR); 3071 3072 err = e1000_test_msi_interrupt(adapter); 3073 3074 /* restore previous setting of command word */ 3075 pci_write_config_word(adapter->pdev, PCI_COMMAND, pci_cmd); 3076 3077 /* success ! */ 3078 if (!err) 3079 return 0; 3080 3081 /* EIO means MSI test failed */ 3082 if (err != -EIO) 3083 return err; 3084 3085 /* back to INTx mode */ 3086 e_warn("MSI interrupt test failed, using legacy interrupt.\n"); 3087 3088 e1000_free_irq(adapter); 3089 3090 err = e1000_request_irq(adapter); 3091 3092 return err; 3093} 3094 3095/** 3096 * e1000_open - Called when a network interface is made active 3097 * @netdev: network interface device structure 3098 * 3099 * Returns 0 on success, negative value on failure 3100 * 3101 * The open entry point is called when a network interface is made 3102 * active by the system (IFF_UP). At this point all resources needed 3103 * for transmit and receive operations are allocated, the interrupt 3104 * handler is registered with the OS, the watchdog timer is started, 3105 * and the stack is notified that the interface is ready. 3106 **/ 3107static int e1000_open(struct net_device *netdev) 3108{ 3109 struct e1000_adapter *adapter = netdev_priv(netdev); 3110 struct e1000_hw *hw = &adapter->hw; 3111 int err; 3112 3113 /* disallow open during test */ 3114 if (test_bit(__E1000_TESTING, &adapter->state)) 3115 return -EBUSY; 3116 3117 netif_carrier_off(netdev); 3118 3119 /* allocate transmit descriptors */ 3120 err = e1000e_setup_tx_resources(adapter); 3121 if (err) 3122 goto err_setup_tx; 3123 3124 /* allocate receive descriptors */ 3125 err = e1000e_setup_rx_resources(adapter); 3126 if (err) 3127 goto err_setup_rx; 3128 3129 e1000e_power_up_phy(adapter); 3130 3131 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; 3132 if ((adapter->hw.mng_cookie.status & 3133 E1000_MNG_DHCP_COOKIE_STATUS_VLAN)) 3134 e1000_update_mng_vlan(adapter); 3135 3136 /* 3137 * If AMT is enabled, let the firmware know that the network 3138 * interface is now open 3139 */ 3140 if (adapter->flags & FLAG_HAS_AMT) 3141 e1000_get_hw_control(adapter); 3142 3143 /* 3144 * before we allocate an interrupt, we must be ready to handle it. 3145 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt 3146 * as soon as we call pci_request_irq, so we have to setup our 3147 * clean_rx handler before we do so. 3148 */ 3149 e1000_configure(adapter); 3150 3151 err = e1000_request_irq(adapter); 3152 if (err) 3153 goto err_req_irq; 3154 3155 /* 3156 * Work around PCIe errata with MSI interrupts causing some chipsets to 3157 * ignore e1000e MSI messages, which means we need to test our MSI 3158 * interrupt now 3159 */ 3160 if (adapter->int_mode != E1000E_INT_MODE_LEGACY) { 3161 err = e1000_test_msi(adapter); 3162 if (err) { 3163 e_err("Interrupt allocation failed\n"); 3164 goto err_req_irq; 3165 } 3166 } 3167 3168 /* From here on the code is the same as e1000e_up() */ 3169 clear_bit(__E1000_DOWN, &adapter->state); 3170 3171 napi_enable(&adapter->napi); 3172 3173 e1000_irq_enable(adapter); 3174 3175 netif_start_queue(netdev); 3176 3177 /* fire a link status change interrupt to start the watchdog */ 3178 ew32(ICS, E1000_ICS_LSC); 3179 3180 return 0; 3181 3182err_req_irq: 3183 e1000_release_hw_control(adapter); 3184 e1000_power_down_phy(adapter); 3185 e1000e_free_rx_resources(adapter); 3186err_setup_rx: 3187 e1000e_free_tx_resources(adapter); 3188err_setup_tx: 3189 e1000e_reset(adapter); 3190 3191 return err; 3192} 3193 3194/** 3195 * e1000_close - Disables a network interface 3196 * @netdev: network interface device structure 3197 * 3198 * Returns 0, this is not allowed to fail 3199 * 3200 * The close entry point is called when an interface is de-activated 3201 * by the OS. The hardware is still under the drivers control, but 3202 * needs to be disabled. A global MAC reset is issued to stop the 3203 * hardware, and all transmit and receive resources are freed. 3204 **/ 3205static int e1000_close(struct net_device *netdev) 3206{ 3207 struct e1000_adapter *adapter = netdev_priv(netdev); 3208 3209 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); 3210 e1000e_down(adapter); 3211 e1000_power_down_phy(adapter); 3212 e1000_free_irq(adapter); 3213 3214 e1000e_free_tx_resources(adapter); 3215 e1000e_free_rx_resources(adapter); 3216 3217 /* 3218 * kill manageability vlan ID if supported, but not if a vlan with 3219 * the same ID is registered on the host OS (let 8021q kill it) 3220 */ 3221 if ((adapter->hw.mng_cookie.status & 3222 E1000_MNG_DHCP_COOKIE_STATUS_VLAN) && 3223 !(adapter->vlgrp && 3224 vlan_group_get_device(adapter->vlgrp, adapter->mng_vlan_id))) 3225 e1000_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id); 3226 3227 /* 3228 * If AMT is enabled, let the firmware know that the network 3229 * interface is now closed 3230 */ 3231 if (adapter->flags & FLAG_HAS_AMT) 3232 e1000_release_hw_control(adapter); 3233 3234 return 0; 3235} 3236/** 3237 * e1000_set_mac - Change the Ethernet Address of the NIC 3238 * @netdev: network interface device structure 3239 * @p: pointer to an address structure 3240 * 3241 * Returns 0 on success, negative on failure 3242 **/ 3243static int e1000_set_mac(struct net_device *netdev, void *p) 3244{ 3245 struct e1000_adapter *adapter = netdev_priv(netdev); 3246 struct sockaddr *addr = p; 3247 3248 if (!is_valid_ether_addr(addr->sa_data)) 3249 return -EADDRNOTAVAIL; 3250 3251 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); 3252 memcpy(adapter->hw.mac.addr, addr->sa_data, netdev->addr_len); 3253 3254 e1000e_rar_set(&adapter->hw, adapter->hw.mac.addr, 0); 3255 3256 if (adapter->flags & FLAG_RESET_OVERWRITES_LAA) { 3257 /* activate the work around */ 3258 e1000e_set_laa_state_82571(&adapter->hw, 1); 3259 3260 /* 3261 * Hold a copy of the LAA in RAR[14] This is done so that 3262 * between the time RAR[0] gets clobbered and the time it 3263 * gets fixed (in e1000_watchdog), the actual LAA is in one 3264 * of the RARs and no incoming packets directed to this port 3265 * are dropped. Eventually the LAA will be in RAR[0] and 3266 * RAR[14] 3267 */ 3268 e1000e_rar_set(&adapter->hw, 3269 adapter->hw.mac.addr, 3270 adapter->hw.mac.rar_entry_count - 1); 3271 } 3272 3273 return 0; 3274} 3275 3276/** 3277 * e1000e_update_phy_task - work thread to update phy 3278 * @work: pointer to our work struct 3279 * 3280 * this worker thread exists because we must acquire a 3281 * semaphore to read the phy, which we could msleep while 3282 * waiting for it, and we can't msleep in a timer. 3283 **/ 3284static void e1000e_update_phy_task(struct work_struct *work) 3285{ 3286 struct e1000_adapter *adapter = container_of(work, 3287 struct e1000_adapter, update_phy_task); 3288 e1000_get_phy_info(&adapter->hw); 3289} 3290 3291/* 3292 * Need to wait a few seconds after link up to get diagnostic information from 3293 * the phy 3294 */ 3295static void e1000_update_phy_info(unsigned long data) 3296{ 3297 struct e1000_adapter *adapter = (struct e1000_adapter *) data; 3298 schedule_work(&adapter->update_phy_task); 3299} 3300 3301/** 3302 * e1000e_update_stats - Update the board statistics counters 3303 * @adapter: board private structure 3304 **/ 3305void e1000e_update_stats(struct e1000_adapter *adapter) 3306{ 3307 struct e1000_hw *hw = &adapter->hw; 3308 struct pci_dev *pdev = adapter->pdev; 3309 u16 phy_data; 3310 3311 /* 3312 * Prevent stats update while adapter is being reset, or if the pci 3313 * connection is down. 3314 */ 3315 if (adapter->link_speed == 0) 3316 return; 3317 if (pci_channel_offline(pdev)) 3318 return; 3319 3320 adapter->stats.crcerrs += er32(CRCERRS); 3321 adapter->stats.gprc += er32(GPRC); 3322 adapter->stats.gorc += er32(GORCL); 3323 er32(GORCH); /* Clear gorc */ 3324 adapter->stats.bprc += er32(BPRC); 3325 adapter->stats.mprc += er32(MPRC); 3326 adapter->stats.roc += er32(ROC); 3327 3328 adapter->stats.mpc += er32(MPC); 3329 if ((hw->phy.type == e1000_phy_82578) || 3330 (hw->phy.type == e1000_phy_82577)) { 3331 e1e_rphy(hw, HV_SCC_UPPER, &phy_data); 3332 e1e_rphy(hw, HV_SCC_LOWER, &phy_data); 3333 adapter->stats.scc += phy_data; 3334 3335 e1e_rphy(hw, HV_ECOL_UPPER, &phy_data); 3336 e1e_rphy(hw, HV_ECOL_LOWER, &phy_data); 3337 adapter->stats.ecol += phy_data; 3338 3339 e1e_rphy(hw, HV_MCC_UPPER, &phy_data); 3340 e1e_rphy(hw, HV_MCC_LOWER, &phy_data); 3341 adapter->stats.mcc += phy_data; 3342 3343 e1e_rphy(hw, HV_LATECOL_UPPER, &phy_data); 3344 e1e_rphy(hw, HV_LATECOL_LOWER, &phy_data); 3345 adapter->stats.latecol += phy_data; 3346 3347 e1e_rphy(hw, HV_DC_UPPER, &phy_data); 3348 e1e_rphy(hw, HV_DC_LOWER, &phy_data); 3349 adapter->stats.dc += phy_data; 3350 } else { 3351 adapter->stats.scc += er32(SCC); 3352 adapter->stats.ecol += er32(ECOL); 3353 adapter->stats.mcc += er32(MCC); 3354 adapter->stats.latecol += er32(LATECOL); 3355 adapter->stats.dc += er32(DC); 3356 } 3357 adapter->stats.xonrxc += er32(XONRXC); 3358 adapter->stats.xontxc += er32(XONTXC); 3359 adapter->stats.xoffrxc += er32(XOFFRXC); 3360 adapter->stats.xofftxc += er32(XOFFTXC); 3361 adapter->stats.gptc += er32(GPTC); 3362 adapter->stats.gotc += er32(GOTCL); 3363 er32(GOTCH); /* Clear gotc */ 3364 adapter->stats.rnbc += er32(RNBC); 3365 adapter->stats.ruc += er32(RUC); 3366 3367 adapter->stats.mptc += er32(MPTC); 3368 adapter->stats.bptc += er32(BPTC); 3369 3370 /* used for adaptive IFS */ 3371 3372 hw->mac.tx_packet_delta = er32(TPT); 3373 adapter->stats.tpt += hw->mac.tx_packet_delta; 3374 if ((hw->phy.type == e1000_phy_82578) || 3375 (hw->phy.type == e1000_phy_82577)) { 3376 e1e_rphy(hw, HV_COLC_UPPER, &phy_data); 3377 e1e_rphy(hw, HV_COLC_LOWER, &phy_data); 3378 hw->mac.collision_delta = phy_data; 3379 } else { 3380 hw->mac.collision_delta = er32(COLC); 3381 } 3382 adapter->stats.colc += hw->mac.collision_delta; 3383 3384 adapter->stats.algnerrc += er32(ALGNERRC); 3385 adapter->stats.rxerrc += er32(RXERRC); 3386 if ((hw->phy.type == e1000_phy_82578) || 3387 (hw->phy.type == e1000_phy_82577)) { 3388 e1e_rphy(hw, HV_TNCRS_UPPER, &phy_data); 3389 e1e_rphy(hw, HV_TNCRS_LOWER, &phy_data); 3390 adapter->stats.tncrs += phy_data; 3391 } else { 3392 if ((hw->mac.type != e1000_82574) && 3393 (hw->mac.type != e1000_82583)) 3394 adapter->stats.tncrs += er32(TNCRS); 3395 } 3396 adapter->stats.cexterr += er32(CEXTERR); 3397 adapter->stats.tsctc += er32(TSCTC); 3398 adapter->stats.tsctfc += er32(TSCTFC); 3399 3400 /* Fill out the OS statistics structure */ 3401 adapter->net_stats.multicast = adapter->stats.mprc; 3402 adapter->net_stats.collisions = adapter->stats.colc; 3403 3404 /* Rx Errors */ 3405 3406 /* 3407 * RLEC on some newer hardware can be incorrect so build 3408 * our own version based on RUC and ROC 3409 */ 3410 adapter->net_stats.rx_errors = adapter->stats.rxerrc + 3411 adapter->stats.crcerrs + adapter->stats.algnerrc + 3412 adapter->stats.ruc + adapter->stats.roc + 3413 adapter->stats.cexterr; 3414 adapter->net_stats.rx_length_errors = adapter->stats.ruc + 3415 adapter->stats.roc; 3416 adapter->net_stats.rx_crc_errors = adapter->stats.crcerrs; 3417 adapter->net_stats.rx_frame_errors = adapter->stats.algnerrc; 3418 adapter->net_stats.rx_missed_errors = adapter->stats.mpc; 3419 3420 /* Tx Errors */ 3421 adapter->net_stats.tx_errors = adapter->stats.ecol + 3422 adapter->stats.latecol; 3423 adapter->net_stats.tx_aborted_errors = adapter->stats.ecol; 3424 adapter->net_stats.tx_window_errors = adapter->stats.latecol; 3425 adapter->net_stats.tx_carrier_errors = adapter->stats.tncrs; 3426 3427 /* Tx Dropped needs to be maintained elsewhere */ 3428 3429 /* Management Stats */ 3430 adapter->stats.mgptc += er32(MGTPTC); 3431 adapter->stats.mgprc += er32(MGTPRC); 3432 adapter->stats.mgpdc += er32(MGTPDC); 3433} 3434 3435/** 3436 * e1000_phy_read_status - Update the PHY register status snapshot 3437 * @adapter: board private structure 3438 **/ 3439static void e1000_phy_read_status(struct e1000_adapter *adapter) 3440{ 3441 struct e1000_hw *hw = &adapter->hw; 3442 struct e1000_phy_regs *phy = &adapter->phy_regs; 3443 int ret_val; 3444 3445 if ((er32(STATUS) & E1000_STATUS_LU) && 3446 (adapter->hw.phy.media_type == e1000_media_type_copper)) { 3447 ret_val = e1e_rphy(hw, PHY_CONTROL, &phy->bmcr); 3448 ret_val |= e1e_rphy(hw, PHY_STATUS, &phy->bmsr); 3449 ret_val |= e1e_rphy(hw, PHY_AUTONEG_ADV, &phy->advertise); 3450 ret_val |= e1e_rphy(hw, PHY_LP_ABILITY, &phy->lpa); 3451 ret_val |= e1e_rphy(hw, PHY_AUTONEG_EXP, &phy->expansion); 3452 ret_val |= e1e_rphy(hw, PHY_1000T_CTRL, &phy->ctrl1000); 3453 ret_val |= e1e_rphy(hw, PHY_1000T_STATUS, &phy->stat1000); 3454 ret_val |= e1e_rphy(hw, PHY_EXT_STATUS, &phy->estatus); 3455 if (ret_val) 3456 e_warn("Error reading PHY register\n"); 3457 } else { 3458 /* 3459 * Do not read PHY registers if link is not up 3460 * Set values to typical power-on defaults 3461 */ 3462 phy->bmcr = (BMCR_SPEED1000 | BMCR_ANENABLE | BMCR_FULLDPLX); 3463 phy->bmsr = (BMSR_100FULL | BMSR_100HALF | BMSR_10FULL | 3464 BMSR_10HALF | BMSR_ESTATEN | BMSR_ANEGCAPABLE | 3465 BMSR_ERCAP); 3466 phy->advertise = (ADVERTISE_PAUSE_ASYM | ADVERTISE_PAUSE_CAP | 3467 ADVERTISE_ALL | ADVERTISE_CSMA); 3468 phy->lpa = 0; 3469 phy->expansion = EXPANSION_ENABLENPAGE; 3470 phy->ctrl1000 = ADVERTISE_1000FULL; 3471 phy->stat1000 = 0; 3472 phy->estatus = (ESTATUS_1000_TFULL | ESTATUS_1000_THALF); 3473 } 3474} 3475 3476static void e1000_print_link_info(struct e1000_adapter *adapter) 3477{ 3478 struct e1000_hw *hw = &adapter->hw; 3479 u32 ctrl = er32(CTRL); 3480 3481 /* Link status message must follow this format for user tools */ 3482 printk(KERN_INFO "e1000e: %s NIC Link is Up %d Mbps %s, " 3483 "Flow Control: %s\n", 3484 adapter->netdev->name, 3485 adapter->link_speed, 3486 (adapter->link_duplex == FULL_DUPLEX) ? 3487 "Full Duplex" : "Half Duplex", 3488 ((ctrl & E1000_CTRL_TFCE) && (ctrl & E1000_CTRL_RFCE)) ? 3489 "RX/TX" : 3490 ((ctrl & E1000_CTRL_RFCE) ? "RX" : 3491 ((ctrl & E1000_CTRL_TFCE) ? "TX" : "None" ))); 3492} 3493 3494bool e1000_has_link(struct e1000_adapter *adapter) 3495{ 3496 struct e1000_hw *hw = &adapter->hw; 3497 bool link_active = 0; 3498 s32 ret_val = 0; 3499 3500 /* 3501 * get_link_status is set on LSC (link status) interrupt or 3502 * Rx sequence error interrupt. get_link_status will stay 3503 * false until the check_for_link establishes link 3504 * for copper adapters ONLY 3505 */ 3506 switch (hw->phy.media_type) { 3507 case e1000_media_type_copper: 3508 if (hw->mac.get_link_status) { 3509 ret_val = hw->mac.ops.check_for_link(hw); 3510 link_active = !hw->mac.get_link_status; 3511 } else { 3512 link_active = 1; 3513 } 3514 break; 3515 case e1000_media_type_fiber: 3516 ret_val = hw->mac.ops.check_for_link(hw); 3517 link_active = !!(er32(STATUS) & E1000_STATUS_LU); 3518 break; 3519 case e1000_media_type_internal_serdes: 3520 ret_val = hw->mac.ops.check_for_link(hw); 3521 link_active = adapter->hw.mac.serdes_has_link; 3522 break; 3523 default: 3524 case e1000_media_type_unknown: 3525 break; 3526 } 3527 3528 if ((ret_val == E1000_ERR_PHY) && (hw->phy.type == e1000_phy_igp_3) && 3529 (er32(CTRL) & E1000_PHY_CTRL_GBE_DISABLE)) { 3530 /* See e1000_kmrn_lock_loss_workaround_ich8lan() */ 3531 e_info("Gigabit has been disabled, downgrading speed\n"); 3532 } 3533 3534 return link_active; 3535} 3536 3537static void e1000e_enable_receives(struct e1000_adapter *adapter) 3538{ 3539 /* make sure the receive unit is started */ 3540 if ((adapter->flags & FLAG_RX_NEEDS_RESTART) && 3541 (adapter->flags & FLAG_RX_RESTART_NOW)) { 3542 struct e1000_hw *hw = &adapter->hw; 3543 u32 rctl = er32(RCTL); 3544 ew32(RCTL, rctl | E1000_RCTL_EN); 3545 adapter->flags &= ~FLAG_RX_RESTART_NOW; 3546 } 3547} 3548 3549/** 3550 * e1000_watchdog - Timer Call-back 3551 * @data: pointer to adapter cast into an unsigned long 3552 **/ 3553static void e1000_watchdog(unsigned long data) 3554{ 3555 struct e1000_adapter *adapter = (struct e1000_adapter *) data; 3556 3557 /* Do the rest outside of interrupt context */ 3558 schedule_work(&adapter->watchdog_task); 3559 3560 /* TODO: make this use queue_delayed_work() */ 3561} 3562 3563static void e1000_watchdog_task(struct work_struct *work) 3564{ 3565 struct e1000_adapter *adapter = container_of(work, 3566 struct e1000_adapter, watchdog_task); 3567 struct net_device *netdev = adapter->netdev; 3568 struct e1000_mac_info *mac = &adapter->hw.mac; 3569 struct e1000_phy_info *phy = &adapter->hw.phy; 3570 struct e1000_ring *tx_ring = adapter->tx_ring; 3571 struct e1000_hw *hw = &adapter->hw; 3572 u32 link, tctl; 3573 int tx_pending = 0; 3574 3575 link = e1000_has_link(adapter); 3576 if ((netif_carrier_ok(netdev)) && link) { 3577 e1000e_enable_receives(adapter); 3578 goto link_up; 3579 } 3580 3581 if ((e1000e_enable_tx_pkt_filtering(hw)) && 3582 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) 3583 e1000_update_mng_vlan(adapter); 3584 3585 if (link) { 3586 if (!netif_carrier_ok(netdev)) { 3587 bool txb2b = 1; 3588 /* update snapshot of PHY registers on LSC */ 3589 e1000_phy_read_status(adapter); 3590 mac->ops.get_link_up_info(&adapter->hw, 3591 &adapter->link_speed, 3592 &adapter->link_duplex); 3593 e1000_print_link_info(adapter); 3594 /* 3595 * On supported PHYs, check for duplex mismatch only 3596 * if link has autonegotiated at 10/100 half 3597 */ 3598 if ((hw->phy.type == e1000_phy_igp_3 || 3599 hw->phy.type == e1000_phy_bm) && 3600 (hw->mac.autoneg == true) && 3601 (adapter->link_speed == SPEED_10 || 3602 adapter->link_speed == SPEED_100) && 3603 (adapter->link_duplex == HALF_DUPLEX)) { 3604 u16 autoneg_exp; 3605 3606 e1e_rphy(hw, PHY_AUTONEG_EXP, &autoneg_exp); 3607 3608 if (!(autoneg_exp & NWAY_ER_LP_NWAY_CAPS)) 3609 e_info("Autonegotiated half duplex but" 3610 " link partner cannot autoneg. " 3611 " Try forcing full duplex if " 3612 "link gets many collisions.\n"); 3613 } 3614 3615 /* 3616 * tweak tx_queue_len according to speed/duplex 3617 * and adjust the timeout factor 3618 */ 3619 netdev->tx_queue_len = adapter->tx_queue_len; 3620 adapter->tx_timeout_factor = 1; 3621 switch (adapter->link_speed) { 3622 case SPEED_10: 3623 txb2b = 0; 3624 netdev->tx_queue_len = 10; 3625 adapter->tx_timeout_factor = 16; 3626 break; 3627 case SPEED_100: 3628 txb2b = 0; 3629 netdev->tx_queue_len = 100; 3630 adapter->tx_timeout_factor = 10; 3631 break; 3632 } 3633 3634 /* 3635 * workaround: re-program speed mode bit after 3636 * link-up event 3637 */ 3638 if ((adapter->flags & FLAG_TARC_SPEED_MODE_BIT) && 3639 !txb2b) { 3640 u32 tarc0; 3641 tarc0 = er32(TARC(0)); 3642 tarc0 &= ~SPEED_MODE_BIT; 3643 ew32(TARC(0), tarc0); 3644 } 3645 3646 /* 3647 * disable TSO for pcie and 10/100 speeds, to avoid 3648 * some hardware issues 3649 */ 3650 if (!(adapter->flags & FLAG_TSO_FORCE)) { 3651 switch (adapter->link_speed) { 3652 case SPEED_10: 3653 case SPEED_100: 3654 e_info("10/100 speed: disabling TSO\n"); 3655 netdev->features &= ~NETIF_F_TSO; 3656 netdev->features &= ~NETIF_F_TSO6; 3657 break; 3658 case SPEED_1000: 3659 netdev->features |= NETIF_F_TSO; 3660 netdev->features |= NETIF_F_TSO6; 3661 break; 3662 default: 3663 /* oops */ 3664 break; 3665 } 3666 } 3667 3668 /* 3669 * enable transmits in the hardware, need to do this 3670 * after setting TARC(0) 3671 */ 3672 tctl = er32(TCTL); 3673 tctl |= E1000_TCTL_EN; 3674 ew32(TCTL, tctl); 3675 3676 /* 3677 * Perform any post-link-up configuration before 3678 * reporting link up. 3679 */ 3680 if (phy->ops.cfg_on_link_up) 3681 phy->ops.cfg_on_link_up(hw); 3682 3683 netif_carrier_on(netdev); 3684 3685 if (!test_bit(__E1000_DOWN, &adapter->state)) 3686 mod_timer(&adapter->phy_info_timer, 3687 round_jiffies(jiffies + 2 * HZ)); 3688 } 3689 } else { 3690 if (netif_carrier_ok(netdev)) { 3691 adapter->link_speed = 0; 3692 adapter->link_duplex = 0; 3693 /* Link status message must follow this format */ 3694 printk(KERN_INFO "e1000e: %s NIC Link is Down\n", 3695 adapter->netdev->name); 3696 netif_carrier_off(netdev); 3697 if (!test_bit(__E1000_DOWN, &adapter->state)) 3698 mod_timer(&adapter->phy_info_timer, 3699 round_jiffies(jiffies + 2 * HZ)); 3700 3701 if (adapter->flags & FLAG_RX_NEEDS_RESTART) 3702 schedule_work(&adapter->reset_task); 3703 } 3704 } 3705 3706link_up: 3707 e1000e_update_stats(adapter); 3708 3709 mac->tx_packet_delta = adapter->stats.tpt - adapter->tpt_old; 3710 adapter->tpt_old = adapter->stats.tpt; 3711 mac->collision_delta = adapter->stats.colc - adapter->colc_old; 3712 adapter->colc_old = adapter->stats.colc; 3713 3714 adapter->gorc = adapter->stats.gorc - adapter->gorc_old; 3715 adapter->gorc_old = adapter->stats.gorc; 3716 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; 3717 adapter->gotc_old = adapter->stats.gotc; 3718 3719 e1000e_update_adaptive(&adapter->hw); 3720 3721 if (!netif_carrier_ok(netdev)) { 3722 tx_pending = (e1000_desc_unused(tx_ring) + 1 < 3723 tx_ring->count); 3724 if (tx_pending) { 3725 /* 3726 * We've lost link, so the controller stops DMA, 3727 * but we've got queued Tx work that's never going 3728 * to get done, so reset controller to flush Tx. 3729 * (Do the reset outside of interrupt context). 3730 */ 3731 adapter->tx_timeout_count++; 3732 schedule_work(&adapter->reset_task); 3733 /* return immediately since reset is imminent */ 3734 return; 3735 } 3736 } 3737 3738 /* Cause software interrupt to ensure Rx ring is cleaned */ 3739 if (adapter->msix_entries) 3740 ew32(ICS, adapter->rx_ring->ims_val); 3741 else 3742 ew32(ICS, E1000_ICS_RXDMT0); 3743 3744 /* Force detection of hung controller every watchdog period */ 3745 adapter->detect_tx_hung = 1; 3746 3747 /* 3748 * With 82571 controllers, LAA may be overwritten due to controller 3749 * reset from the other port. Set the appropriate LAA in RAR[0] 3750 */ 3751 if (e1000e_get_laa_state_82571(hw)) 3752 e1000e_rar_set(hw, adapter->hw.mac.addr, 0); 3753 3754 /* Reset the timer */ 3755 if (!test_bit(__E1000_DOWN, &adapter->state)) 3756 mod_timer(&adapter->watchdog_timer, 3757 round_jiffies(jiffies + 2 * HZ)); 3758} 3759 3760#define E1000_TX_FLAGS_CSUM 0x00000001 3761#define E1000_TX_FLAGS_VLAN 0x00000002 3762#define E1000_TX_FLAGS_TSO 0x00000004 3763#define E1000_TX_FLAGS_IPV4 0x00000008 3764#define E1000_TX_FLAGS_VLAN_MASK 0xffff0000 3765#define E1000_TX_FLAGS_VLAN_SHIFT 16 3766 3767static int e1000_tso(struct e1000_adapter *adapter, 3768 struct sk_buff *skb) 3769{ 3770 struct e1000_ring *tx_ring = adapter->tx_ring; 3771 struct e1000_context_desc *context_desc; 3772 struct e1000_buffer *buffer_info; 3773 unsigned int i; 3774 u32 cmd_length = 0; 3775 u16 ipcse = 0, tucse, mss; 3776 u8 ipcss, ipcso, tucss, tucso, hdr_len; 3777 int err; 3778 3779 if (skb_is_gso(skb)) { 3780 if (skb_header_cloned(skb)) { 3781 err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); 3782 if (err) 3783 return err; 3784 } 3785 3786 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); 3787 mss = skb_shinfo(skb)->gso_size; 3788 if (skb->protocol == htons(ETH_P_IP)) { 3789 struct iphdr *iph = ip_hdr(skb); 3790 iph->tot_len = 0; 3791 iph->check = 0; 3792 tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, 3793 iph->daddr, 0, 3794 IPPROTO_TCP, 3795 0); 3796 cmd_length = E1000_TXD_CMD_IP; 3797 ipcse = skb_transport_offset(skb) - 1; 3798 } else if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV6) { 3799 ipv6_hdr(skb)->payload_len = 0; 3800 tcp_hdr(skb)->check = 3801 ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, 3802 &ipv6_hdr(skb)->daddr, 3803 0, IPPROTO_TCP, 0); 3804 ipcse = 0; 3805 } 3806 ipcss = skb_network_offset(skb); 3807 ipcso = (void *)&(ip_hdr(skb)->check) - (void *)skb->data; 3808 tucss = skb_transport_offset(skb); 3809 tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data; 3810 tucse = 0; 3811 3812 cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE | 3813 E1000_TXD_CMD_TCP | (skb->len - (hdr_len))); 3814 3815 i = tx_ring->next_to_use; 3816 context_desc = E1000_CONTEXT_DESC(*tx_ring, i); 3817 buffer_info = &tx_ring->buffer_info[i]; 3818 3819 context_desc->lower_setup.ip_fields.ipcss = ipcss; 3820 context_desc->lower_setup.ip_fields.ipcso = ipcso; 3821 context_desc->lower_setup.ip_fields.ipcse = cpu_to_le16(ipcse); 3822 context_desc->upper_setup.tcp_fields.tucss = tucss; 3823 context_desc->upper_setup.tcp_fields.tucso = tucso; 3824 context_desc->upper_setup.tcp_fields.tucse = cpu_to_le16(tucse); 3825 context_desc->tcp_seg_setup.fields.mss = cpu_to_le16(mss); 3826 context_desc->tcp_seg_setup.fields.hdr_len = hdr_len; 3827 context_desc->cmd_and_length = cpu_to_le32(cmd_length); 3828 3829 buffer_info->time_stamp = jiffies; 3830 buffer_info->next_to_watch = i; 3831 3832 i++; 3833 if (i == tx_ring->count) 3834 i = 0; 3835 tx_ring->next_to_use = i; 3836 3837 return 1; 3838 } 3839 3840 return 0; 3841} 3842 3843static bool e1000_tx_csum(struct e1000_adapter *adapter, struct sk_buff *skb) 3844{ 3845 struct e1000_ring *tx_ring = adapter->tx_ring; 3846 struct e1000_context_desc *context_desc; 3847 struct e1000_buffer *buffer_info; 3848 unsigned int i; 3849 u8 css; 3850 u32 cmd_len = E1000_TXD_CMD_DEXT; 3851 __be16 protocol; 3852 3853 if (skb->ip_summed != CHECKSUM_PARTIAL) 3854 return 0; 3855 3856 if (skb->protocol == cpu_to_be16(ETH_P_8021Q)) 3857 protocol = vlan_eth_hdr(skb)->h_vlan_encapsulated_proto; 3858 else 3859 protocol = skb->protocol; 3860 3861 switch (protocol) { 3862 case cpu_to_be16(ETH_P_IP): 3863 if (ip_hdr(skb)->protocol == IPPROTO_TCP) 3864 cmd_len |= E1000_TXD_CMD_TCP; 3865 break; 3866 case cpu_to_be16(ETH_P_IPV6): 3867 /* XXX not handling all IPV6 headers */ 3868 if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP) 3869 cmd_len |= E1000_TXD_CMD_TCP; 3870 break; 3871 default: 3872 if (unlikely(net_ratelimit())) 3873 e_warn("checksum_partial proto=%x!\n", 3874 be16_to_cpu(protocol)); 3875 break; 3876 } 3877 3878 css = skb_transport_offset(skb); 3879 3880 i = tx_ring->next_to_use; 3881 buffer_info = &tx_ring->buffer_info[i]; 3882 context_desc = E1000_CONTEXT_DESC(*tx_ring, i); 3883 3884 context_desc->lower_setup.ip_config = 0; 3885 context_desc->upper_setup.tcp_fields.tucss = css; 3886 context_desc->upper_setup.tcp_fields.tucso = 3887 css + skb->csum_offset; 3888 context_desc->upper_setup.tcp_fields.tucse = 0; 3889 context_desc->tcp_seg_setup.data = 0; 3890 context_desc->cmd_and_length = cpu_to_le32(cmd_len); 3891 3892 buffer_info->time_stamp = jiffies; 3893 buffer_info->next_to_watch = i; 3894 3895 i++; 3896 if (i == tx_ring->count) 3897 i = 0; 3898 tx_ring->next_to_use = i; 3899 3900 return 1; 3901} 3902 3903#define E1000_MAX_PER_TXD 8192 3904#define E1000_MAX_TXD_PWR 12 3905 3906static int e1000_tx_map(struct e1000_adapter *adapter, 3907 struct sk_buff *skb, unsigned int first, 3908 unsigned int max_per_txd, unsigned int nr_frags, 3909 unsigned int mss) 3910{ 3911 struct e1000_ring *tx_ring = adapter->tx_ring; 3912 struct e1000_buffer *buffer_info; 3913 unsigned int len = skb_headlen(skb); 3914 unsigned int offset, size, count = 0, i; 3915 unsigned int f; 3916 dma_addr_t *map; 3917 3918 i = tx_ring->next_to_use; 3919 3920 if (skb_dma_map(&adapter->pdev->dev, skb, DMA_TO_DEVICE)) { 3921 dev_err(&adapter->pdev->dev, "TX DMA map failed\n"); 3922 adapter->tx_dma_failed++; 3923 return 0; 3924 } 3925 3926 map = skb_shinfo(skb)->dma_maps; 3927 offset = 0; 3928 3929 while (len) { 3930 buffer_info = &tx_ring->buffer_info[i]; 3931 size = min(len, max_per_txd); 3932 3933 buffer_info->length = size; 3934 buffer_info->time_stamp = jiffies; 3935 buffer_info->next_to_watch = i; 3936 buffer_info->dma = skb_shinfo(skb)->dma_head + offset; 3937 count++; 3938 3939 len -= size; 3940 offset += size; 3941 3942 if (len) { 3943 i++; 3944 if (i == tx_ring->count) 3945 i = 0; 3946 } 3947 } 3948 3949 for (f = 0; f < nr_frags; f++) { 3950 struct skb_frag_struct *frag; 3951 3952 frag = &skb_shinfo(skb)->frags[f]; 3953 len = frag->size; 3954 offset = 0; 3955 3956 while (len) { 3957 i++; 3958 if (i == tx_ring->count) 3959 i = 0; 3960 3961 buffer_info = &tx_ring->buffer_info[i]; 3962 size = min(len, max_per_txd); 3963 3964 buffer_info->length = size; 3965 buffer_info->time_stamp = jiffies; 3966 buffer_info->next_to_watch = i; 3967 buffer_info->dma = map[f] + offset; 3968 3969 len -= size; 3970 offset += size; 3971 count++; 3972 } 3973 } 3974 3975 tx_ring->buffer_info[i].skb = skb; 3976 tx_ring->buffer_info[first].next_to_watch = i; 3977 3978 return count; 3979} 3980 3981static void e1000_tx_queue(struct e1000_adapter *adapter, 3982 int tx_flags, int count) 3983{ 3984 struct e1000_ring *tx_ring = adapter->tx_ring; 3985 struct e1000_tx_desc *tx_desc = NULL; 3986 struct e1000_buffer *buffer_info; 3987 u32 txd_upper = 0, txd_lower = E1000_TXD_CMD_IFCS; 3988 unsigned int i; 3989 3990 if (tx_flags & E1000_TX_FLAGS_TSO) { 3991 txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D | 3992 E1000_TXD_CMD_TSE; 3993 txd_upper |= E1000_TXD_POPTS_TXSM << 8; 3994 3995 if (tx_flags & E1000_TX_FLAGS_IPV4) 3996 txd_upper |= E1000_TXD_POPTS_IXSM << 8; 3997 } 3998 3999 if (tx_flags & E1000_TX_FLAGS_CSUM) { 4000 txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D; 4001 txd_upper |= E1000_TXD_POPTS_TXSM << 8; 4002 } 4003 4004 if (tx_flags & E1000_TX_FLAGS_VLAN) { 4005 txd_lower |= E1000_TXD_CMD_VLE; 4006 txd_upper |= (tx_flags & E1000_TX_FLAGS_VLAN_MASK); 4007 } 4008 4009 i = tx_ring->next_to_use; 4010 4011 while (count--) { 4012 buffer_info = &tx_ring->buffer_info[i]; 4013 tx_desc = E1000_TX_DESC(*tx_ring, i); 4014 tx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); 4015 tx_desc->lower.data = 4016 cpu_to_le32(txd_lower | buffer_info->length); 4017 tx_desc->upper.data = cpu_to_le32(txd_upper); 4018 4019 i++; 4020 if (i == tx_ring->count) 4021 i = 0; 4022 } 4023 4024 tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd); 4025 4026 /* 4027 * Force memory writes to complete before letting h/w 4028 * know there are new descriptors to fetch. (Only 4029 * applicable for weak-ordered memory model archs, 4030 * such as IA-64). 4031 */ 4032 wmb(); 4033 4034 tx_ring->next_to_use = i; 4035 writel(i, adapter->hw.hw_addr + tx_ring->tail); 4036 /* 4037 * we need this if more than one processor can write to our tail 4038 * at a time, it synchronizes IO on IA64/Altix systems 4039 */ 4040 mmiowb(); 4041} 4042 4043#define MINIMUM_DHCP_PACKET_SIZE 282 4044static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter, 4045 struct sk_buff *skb) 4046{ 4047 struct e1000_hw *hw = &adapter->hw; 4048 u16 length, offset; 4049 4050 if (vlan_tx_tag_present(skb)) { 4051 if (!((vlan_tx_tag_get(skb) == adapter->hw.mng_cookie.vlan_id) 4052 && (adapter->hw.mng_cookie.status & 4053 E1000_MNG_DHCP_COOKIE_STATUS_VLAN))) 4054 return 0; 4055 } 4056 4057 if (skb->len <= MINIMUM_DHCP_PACKET_SIZE) 4058 return 0; 4059 4060 if (((struct ethhdr *) skb->data)->h_proto != htons(ETH_P_IP)) 4061 return 0; 4062 4063 { 4064 const struct iphdr *ip = (struct iphdr *)((u8 *)skb->data+14); 4065 struct udphdr *udp; 4066 4067 if (ip->protocol != IPPROTO_UDP) 4068 return 0; 4069 4070 udp = (struct udphdr *)((u8 *)ip + (ip->ihl << 2)); 4071 if (ntohs(udp->dest) != 67) 4072 return 0; 4073 4074 offset = (u8 *)udp + 8 - skb->data; 4075 length = skb->len - offset; 4076 return e1000e_mng_write_dhcp_info(hw, (u8 *)udp + 8, length); 4077 } 4078 4079 return 0; 4080} 4081 4082static int __e1000_maybe_stop_tx(struct net_device *netdev, int size) 4083{ 4084 struct e1000_adapter *adapter = netdev_priv(netdev); 4085 4086 netif_stop_queue(netdev); 4087 /* 4088 * Herbert's original patch had: 4089 * smp_mb__after_netif_stop_queue(); 4090 * but since that doesn't exist yet, just open code it. 4091 */ 4092 smp_mb(); 4093 4094 /* 4095 * We need to check again in a case another CPU has just 4096 * made room available. 4097 */ 4098 if (e1000_desc_unused(adapter->tx_ring) < size) 4099 return -EBUSY; 4100 4101 /* A reprieve! */ 4102 netif_start_queue(netdev); 4103 ++adapter->restart_queue; 4104 return 0; 4105} 4106 4107static int e1000_maybe_stop_tx(struct net_device *netdev, int size) 4108{ 4109 struct e1000_adapter *adapter = netdev_priv(netdev); 4110 4111 if (e1000_desc_unused(adapter->tx_ring) >= size) 4112 return 0; 4113 return __e1000_maybe_stop_tx(netdev, size); 4114} 4115 4116#define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1 ) 4117static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, 4118 struct net_device *netdev) 4119{ 4120 struct e1000_adapter *adapter = netdev_priv(netdev); 4121 struct e1000_ring *tx_ring = adapter->tx_ring; 4122 unsigned int first; 4123 unsigned int max_per_txd = E1000_MAX_PER_TXD; 4124 unsigned int max_txd_pwr = E1000_MAX_TXD_PWR; 4125 unsigned int tx_flags = 0; 4126 unsigned int len = skb->len - skb->data_len; 4127 unsigned int nr_frags; 4128 unsigned int mss; 4129 int count = 0; 4130 int tso; 4131 unsigned int f; 4132 4133 if (test_bit(__E1000_DOWN, &adapter->state)) { 4134 dev_kfree_skb_any(skb); 4135 return NETDEV_TX_OK; 4136 } 4137 4138 if (skb->len <= 0) { 4139 dev_kfree_skb_any(skb); 4140 return NETDEV_TX_OK; 4141 } 4142 4143 mss = skb_shinfo(skb)->gso_size; 4144 /* 4145 * The controller does a simple calculation to 4146 * make sure there is enough room in the FIFO before 4147 * initiating the DMA for each buffer. The calc is: 4148 * 4 = ceil(buffer len/mss). To make sure we don't 4149 * overrun the FIFO, adjust the max buffer len if mss 4150 * drops. 4151 */ 4152 if (mss) { 4153 u8 hdr_len; 4154 max_per_txd = min(mss << 2, max_per_txd); 4155 max_txd_pwr = fls(max_per_txd) - 1; 4156 4157 /* 4158 * TSO Workaround for 82571/2/3 Controllers -- if skb->data 4159 * points to just header, pull a few bytes of payload from 4160 * frags into skb->data 4161 */ 4162 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); 4163 /* 4164 * we do this workaround for ES2LAN, but it is un-necessary, 4165 * avoiding it could save a lot of cycles 4166 */ 4167 if (skb->data_len && (hdr_len == len)) { 4168 unsigned int pull_size; 4169 4170 pull_size = min((unsigned int)4, skb->data_len); 4171 if (!__pskb_pull_tail(skb, pull_size)) { 4172 e_err("__pskb_pull_tail failed.\n"); 4173 dev_kfree_skb_any(skb); 4174 return NETDEV_TX_OK; 4175 } 4176 len = skb->len - skb->data_len; 4177 } 4178 } 4179 4180 /* reserve a descriptor for the offload context */ 4181 if ((mss) || (skb->ip_summed == CHECKSUM_PARTIAL)) 4182 count++; 4183 count++; 4184 4185 count += TXD_USE_COUNT(len, max_txd_pwr); 4186 4187 nr_frags = skb_shinfo(skb)->nr_frags; 4188 for (f = 0; f < nr_frags; f++) 4189 count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size, 4190 max_txd_pwr); 4191 4192 if (adapter->hw.mac.tx_pkt_filtering) 4193 e1000_transfer_dhcp_info(adapter, skb); 4194 4195 /* 4196 * need: count + 2 desc gap to keep tail from touching 4197 * head, otherwise try next time 4198 */ 4199 if (e1000_maybe_stop_tx(netdev, count + 2)) 4200 return NETDEV_TX_BUSY; 4201 4202 if (adapter->vlgrp && vlan_tx_tag_present(skb)) { 4203 tx_flags |= E1000_TX_FLAGS_VLAN; 4204 tx_flags |= (vlan_tx_tag_get(skb) << E1000_TX_FLAGS_VLAN_SHIFT); 4205 } 4206 4207 first = tx_ring->next_to_use; 4208 4209 tso = e1000_tso(adapter, skb); 4210 if (tso < 0) { 4211 dev_kfree_skb_any(skb); 4212 return NETDEV_TX_OK; 4213 } 4214 4215 if (tso) 4216 tx_flags |= E1000_TX_FLAGS_TSO; 4217 else if (e1000_tx_csum(adapter, skb)) 4218 tx_flags |= E1000_TX_FLAGS_CSUM; 4219 4220 /* 4221 * Old method was to assume IPv4 packet by default if TSO was enabled. 4222 * 82571 hardware supports TSO capabilities for IPv6 as well... 4223 * no longer assume, we must. 4224 */ 4225 if (skb->protocol == htons(ETH_P_IP)) 4226 tx_flags |= E1000_TX_FLAGS_IPV4; 4227 4228 /* if count is 0 then mapping error has occured */ 4229 count = e1000_tx_map(adapter, skb, first, max_per_txd, nr_frags, mss); 4230 if (count) { 4231 e1000_tx_queue(adapter, tx_flags, count); 4232 /* Make sure there is space in the ring for the next send. */ 4233 e1000_maybe_stop_tx(netdev, MAX_SKB_FRAGS + 2); 4234 4235 } else { 4236 dev_kfree_skb_any(skb); 4237 tx_ring->buffer_info[first].time_stamp = 0; 4238 tx_ring->next_to_use = first; 4239 } 4240 4241 return NETDEV_TX_OK; 4242} 4243 4244/** 4245 * e1000_tx_timeout - Respond to a Tx Hang 4246 * @netdev: network interface device structure 4247 **/ 4248static void e1000_tx_timeout(struct net_device *netdev) 4249{ 4250 struct e1000_adapter *adapter = netdev_priv(netdev); 4251 4252 /* Do the reset outside of interrupt context */ 4253 adapter->tx_timeout_count++; 4254 schedule_work(&adapter->reset_task); 4255} 4256 4257static void e1000_reset_task(struct work_struct *work) 4258{ 4259 struct e1000_adapter *adapter; 4260 adapter = container_of(work, struct e1000_adapter, reset_task); 4261 4262 e1000e_reinit_locked(adapter); 4263} 4264 4265/** 4266 * e1000_get_stats - Get System Network Statistics 4267 * @netdev: network interface device structure 4268 * 4269 * Returns the address of the device statistics structure. 4270 * The statistics are actually updated from the timer callback. 4271 **/ 4272static struct net_device_stats *e1000_get_stats(struct net_device *netdev) 4273{ 4274 struct e1000_adapter *adapter = netdev_priv(netdev); 4275 4276 /* only return the current stats */ 4277 return &adapter->net_stats; 4278} 4279 4280/** 4281 * e1000_change_mtu - Change the Maximum Transfer Unit 4282 * @netdev: network interface device structure 4283 * @new_mtu: new value for maximum frame size 4284 * 4285 * Returns 0 on success, negative on failure 4286 **/ 4287static int e1000_change_mtu(struct net_device *netdev, int new_mtu) 4288{ 4289 struct e1000_adapter *adapter = netdev_priv(netdev); 4290 int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN; 4291 4292 /* Jumbo frame support */ 4293 if ((max_frame > ETH_FRAME_LEN + ETH_FCS_LEN) && 4294 !(adapter->flags & FLAG_HAS_JUMBO_FRAMES)) { 4295 e_err("Jumbo Frames not supported.\n"); 4296 return -EINVAL; 4297 } 4298 4299 /* Supported frame sizes */ 4300 if ((new_mtu < ETH_ZLEN + ETH_FCS_LEN + VLAN_HLEN) || 4301 (max_frame > adapter->max_hw_frame_size)) { 4302 e_err("Unsupported MTU setting\n"); 4303 return -EINVAL; 4304 } 4305 4306 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) 4307 msleep(1); 4308 /* e1000e_down -> e1000e_reset dependent on max_frame_size & mtu */ 4309 adapter->max_frame_size = max_frame; 4310 e_info("changing MTU from %d to %d\n", netdev->mtu, new_mtu); 4311 netdev->mtu = new_mtu; 4312 if (netif_running(netdev)) 4313 e1000e_down(adapter); 4314 4315 /* 4316 * NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN 4317 * means we reserve 2 more, this pushes us to allocate from the next 4318 * larger slab size. 4319 * i.e. RXBUFFER_2048 --> size-4096 slab 4320 * However with the new *_jumbo_rx* routines, jumbo receives will use 4321 * fragmented skbs 4322 */ 4323 4324 if (max_frame <= 256) 4325 adapter->rx_buffer_len = 256; 4326 else if (max_frame <= 512) 4327 adapter->rx_buffer_len = 512; 4328 else if (max_frame <= 1024) 4329 adapter->rx_buffer_len = 1024; 4330 else if (max_frame <= 2048) 4331 adapter->rx_buffer_len = 2048; 4332 else 4333 adapter->rx_buffer_len = 4096; 4334 4335 /* adjust allocation if LPE protects us, and we aren't using SBP */ 4336 if ((max_frame == ETH_FRAME_LEN + ETH_FCS_LEN) || 4337 (max_frame == ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN)) 4338 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN 4339 + ETH_FCS_LEN; 4340 4341 if (netif_running(netdev)) 4342 e1000e_up(adapter); 4343 else 4344 e1000e_reset(adapter); 4345 4346 clear_bit(__E1000_RESETTING, &adapter->state); 4347 4348 return 0; 4349} 4350 4351static int e1000_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, 4352 int cmd) 4353{ 4354 struct e1000_adapter *adapter = netdev_priv(netdev); 4355 struct mii_ioctl_data *data = if_mii(ifr); 4356 4357 if (adapter->hw.phy.media_type != e1000_media_type_copper) 4358 return -EOPNOTSUPP; 4359 4360 switch (cmd) { 4361 case SIOCGMIIPHY: 4362 data->phy_id = adapter->hw.phy.addr; 4363 break; 4364 case SIOCGMIIREG: 4365 switch (data->reg_num & 0x1F) { 4366 case MII_BMCR: 4367 data->val_out = adapter->phy_regs.bmcr; 4368 break; 4369 case MII_BMSR: 4370 data->val_out = adapter->phy_regs.bmsr; 4371 break; 4372 case MII_PHYSID1: 4373 data->val_out = (adapter->hw.phy.id >> 16); 4374 break; 4375 case MII_PHYSID2: 4376 data->val_out = (adapter->hw.phy.id & 0xFFFF); 4377 break; 4378 case MII_ADVERTISE: 4379 data->val_out = adapter->phy_regs.advertise; 4380 break; 4381 case MII_LPA: 4382 data->val_out = adapter->phy_regs.lpa; 4383 break; 4384 case MII_EXPANSION: 4385 data->val_out = adapter->phy_regs.expansion; 4386 break; 4387 case MII_CTRL1000: 4388 data->val_out = adapter->phy_regs.ctrl1000; 4389 break; 4390 case MII_STAT1000: 4391 data->val_out = adapter->phy_regs.stat1000; 4392 break; 4393 case MII_ESTATUS: 4394 data->val_out = adapter->phy_regs.estatus; 4395 break; 4396 default: 4397 return -EIO; 4398 } 4399 break; 4400 case SIOCSMIIREG: 4401 default: 4402 return -EOPNOTSUPP; 4403 } 4404 return 0; 4405} 4406 4407static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) 4408{ 4409 switch (cmd) { 4410 case SIOCGMIIPHY: 4411 case SIOCGMIIREG: 4412 case SIOCSMIIREG: 4413 return e1000_mii_ioctl(netdev, ifr, cmd); 4414 default: 4415 return -EOPNOTSUPP; 4416 } 4417} 4418 4419static int e1000_init_phy_wakeup(struct e1000_adapter *adapter, u32 wufc) 4420{ 4421 struct e1000_hw *hw = &adapter->hw; 4422 u32 i, mac_reg; 4423 u16 phy_reg; 4424 int retval = 0; 4425 4426 /* copy MAC RARs to PHY RARs */ 4427 for (i = 0; i < adapter->hw.mac.rar_entry_count; i++) { 4428 mac_reg = er32(RAL(i)); 4429 e1e_wphy(hw, BM_RAR_L(i), (u16)(mac_reg & 0xFFFF)); 4430 e1e_wphy(hw, BM_RAR_M(i), (u16)((mac_reg >> 16) & 0xFFFF)); 4431 mac_reg = er32(RAH(i)); 4432 e1e_wphy(hw, BM_RAR_H(i), (u16)(mac_reg & 0xFFFF)); 4433 e1e_wphy(hw, BM_RAR_CTRL(i), (u16)((mac_reg >> 16) & 0xFFFF)); 4434 } 4435 4436 /* copy MAC MTA to PHY MTA */ 4437 for (i = 0; i < adapter->hw.mac.mta_reg_count; i++) { 4438 mac_reg = E1000_READ_REG_ARRAY(hw, E1000_MTA, i); 4439 e1e_wphy(hw, BM_MTA(i), (u16)(mac_reg & 0xFFFF)); 4440 e1e_wphy(hw, BM_MTA(i) + 1, (u16)((mac_reg >> 16) & 0xFFFF)); 4441 } 4442 4443 /* configure PHY Rx Control register */ 4444 e1e_rphy(&adapter->hw, BM_RCTL, &phy_reg); 4445 mac_reg = er32(RCTL); 4446 if (mac_reg & E1000_RCTL_UPE) 4447 phy_reg |= BM_RCTL_UPE; 4448 if (mac_reg & E1000_RCTL_MPE) 4449 phy_reg |= BM_RCTL_MPE; 4450 phy_reg &= ~(BM_RCTL_MO_MASK); 4451 if (mac_reg & E1000_RCTL_MO_3) 4452 phy_reg |= (((mac_reg & E1000_RCTL_MO_3) >> E1000_RCTL_MO_SHIFT) 4453 << BM_RCTL_MO_SHIFT); 4454 if (mac_reg & E1000_RCTL_BAM) 4455 phy_reg |= BM_RCTL_BAM; 4456 if (mac_reg & E1000_RCTL_PMCF) 4457 phy_reg |= BM_RCTL_PMCF; 4458 mac_reg = er32(CTRL); 4459 if (mac_reg & E1000_CTRL_RFCE) 4460 phy_reg |= BM_RCTL_RFCE; 4461 e1e_wphy(&adapter->hw, BM_RCTL, phy_reg); 4462 4463 /* enable PHY wakeup in MAC register */ 4464 ew32(WUFC, wufc); 4465 ew32(WUC, E1000_WUC_PHY_WAKE | E1000_WUC_PME_EN); 4466 4467 /* configure and enable PHY wakeup in PHY registers */ 4468 e1e_wphy(&adapter->hw, BM_WUFC, wufc); 4469 e1e_wphy(&adapter->hw, BM_WUC, E1000_WUC_PME_EN); 4470 4471 /* activate PHY wakeup */ 4472 retval = hw->phy.ops.acquire_phy(hw); 4473 if (retval) { 4474 e_err("Could not acquire PHY\n"); 4475 return retval; 4476 } 4477 e1000e_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, 4478 (BM_WUC_ENABLE_PAGE << IGP_PAGE_SHIFT)); 4479 retval = e1000e_read_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, &phy_reg); 4480 if (retval) { 4481 e_err("Could not read PHY page 769\n"); 4482 goto out; 4483 } 4484 phy_reg |= BM_WUC_ENABLE_BIT | BM_WUC_HOST_WU_BIT; 4485 retval = e1000e_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, phy_reg); 4486 if (retval) 4487 e_err("Could not set PHY Host Wakeup bit\n"); 4488out: 4489 hw->phy.ops.release_phy(hw); 4490 4491 return retval; 4492} 4493 4494static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake) 4495{ 4496 struct net_device *netdev = pci_get_drvdata(pdev); 4497 struct e1000_adapter *adapter = netdev_priv(netdev); 4498 struct e1000_hw *hw = &adapter->hw; 4499 u32 ctrl, ctrl_ext, rctl, status; 4500 u32 wufc = adapter->wol; 4501 int retval = 0; 4502 4503 netif_device_detach(netdev); 4504 4505 if (netif_running(netdev)) { 4506 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); 4507 e1000e_down(adapter); 4508 e1000_free_irq(adapter); 4509 } 4510 e1000e_reset_interrupt_capability(adapter); 4511 4512 retval = pci_save_state(pdev); 4513 if (retval) 4514 return retval; 4515 4516 status = er32(STATUS); 4517 if (status & E1000_STATUS_LU) 4518 wufc &= ~E1000_WUFC_LNKC; 4519 4520 if (wufc) { 4521 e1000_setup_rctl(adapter); 4522 e1000_set_multi(netdev); 4523 4524 /* turn on all-multi mode if wake on multicast is enabled */ 4525 if (wufc & E1000_WUFC_MC) { 4526 rctl = er32(RCTL); 4527 rctl |= E1000_RCTL_MPE; 4528 ew32(RCTL, rctl); 4529 } 4530 4531 ctrl = er32(CTRL); 4532 /* advertise wake from D3Cold */ 4533 #define E1000_CTRL_ADVD3WUC 0x00100000 4534 /* phy power management enable */ 4535 #define E1000_CTRL_EN_PHY_PWR_MGMT 0x00200000 4536 ctrl |= E1000_CTRL_ADVD3WUC; 4537 if (!(adapter->flags2 & FLAG2_HAS_PHY_WAKEUP)) 4538 ctrl |= E1000_CTRL_EN_PHY_PWR_MGMT; 4539 ew32(CTRL, ctrl); 4540 4541 if (adapter->hw.phy.media_type == e1000_media_type_fiber || 4542 adapter->hw.phy.media_type == 4543 e1000_media_type_internal_serdes) { 4544 /* keep the laser running in D3 */ 4545 ctrl_ext = er32(CTRL_EXT); 4546 ctrl_ext |= E1000_CTRL_EXT_SDP7_DATA; 4547 ew32(CTRL_EXT, ctrl_ext); 4548 } 4549 4550 if (adapter->flags & FLAG_IS_ICH) 4551 e1000e_disable_gig_wol_ich8lan(&adapter->hw); 4552 4553 /* Allow time for pending master requests to run */ 4554 e1000e_disable_pcie_master(&adapter->hw); 4555 4556 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) { 4557 /* enable wakeup by the PHY */ 4558 retval = e1000_init_phy_wakeup(adapter, wufc); 4559 if (retval) 4560 return retval; 4561 } else { 4562 /* enable wakeup by the MAC */ 4563 ew32(WUFC, wufc); 4564 ew32(WUC, E1000_WUC_PME_EN); 4565 } 4566 } else { 4567 ew32(WUC, 0); 4568 ew32(WUFC, 0); 4569 } 4570 4571 *enable_wake = !!wufc; 4572 4573 /* make sure adapter isn't asleep if manageability is enabled */ 4574 if ((adapter->flags & FLAG_MNG_PT_ENABLED) || 4575 (hw->mac.ops.check_mng_mode(hw))) 4576 *enable_wake = true; 4577 4578 if (adapter->hw.phy.type == e1000_phy_igp_3) 4579 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); 4580 4581 /* 4582 * Release control of h/w to f/w. If f/w is AMT enabled, this 4583 * would have already happened in close and is redundant. 4584 */ 4585 e1000_release_hw_control(adapter); 4586 4587 pci_disable_device(pdev); 4588 4589 return 0; 4590} 4591 4592static void e1000_power_off(struct pci_dev *pdev, bool sleep, bool wake) 4593{ 4594 if (sleep && wake) { 4595 pci_prepare_to_sleep(pdev); 4596 return; 4597 } 4598 4599 pci_wake_from_d3(pdev, wake); 4600 pci_set_power_state(pdev, PCI_D3hot); 4601} 4602 4603static void e1000_complete_shutdown(struct pci_dev *pdev, bool sleep, 4604 bool wake) 4605{ 4606 struct net_device *netdev = pci_get_drvdata(pdev); 4607 struct e1000_adapter *adapter = netdev_priv(netdev); 4608 4609 /* 4610 * The pci-e switch on some quad port adapters will report a 4611 * correctable error when the MAC transitions from D0 to D3. To 4612 * prevent this we need to mask off the correctable errors on the 4613 * downstream port of the pci-e switch. 4614 */ 4615 if (adapter->flags & FLAG_IS_QUAD_PORT) { 4616 struct pci_dev *us_dev = pdev->bus->self; 4617 int pos = pci_find_capability(us_dev, PCI_CAP_ID_EXP); 4618 u16 devctl; 4619 4620 pci_read_config_word(us_dev, pos + PCI_EXP_DEVCTL, &devctl); 4621 pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL, 4622 (devctl & ~PCI_EXP_DEVCTL_CERE)); 4623 4624 e1000_power_off(pdev, sleep, wake); 4625 4626 pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL, devctl); 4627 } else { 4628 e1000_power_off(pdev, sleep, wake); 4629 } 4630} 4631 4632static void e1000e_disable_l1aspm(struct pci_dev *pdev) 4633{ 4634 int pos; 4635 u16 val; 4636 4637 /* 4638 * 82573 workaround - disable L1 ASPM on mobile chipsets 4639 * 4640 * L1 ASPM on various mobile (ich7) chipsets do not behave properly 4641 * resulting in lost data or garbage information on the pci-e link 4642 * level. This could result in (false) bad EEPROM checksum errors, 4643 * long ping times (up to 2s) or even a system freeze/hang. 4644 * 4645 * Unfortunately this feature saves about 1W power consumption when 4646 * active. 4647 */ 4648 pos = pci_find_capability(pdev, PCI_CAP_ID_EXP); 4649 pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, &val); 4650 if (val & 0x2) { 4651 dev_warn(&pdev->dev, "Disabling L1 ASPM\n"); 4652 val &= ~0x2; 4653 pci_write_config_word(pdev, pos + PCI_EXP_LNKCTL, val); 4654 } 4655} 4656 4657#ifdef CONFIG_PM 4658static int e1000_suspend(struct pci_dev *pdev, pm_message_t state) 4659{ 4660 int retval; 4661 bool wake; 4662 4663 retval = __e1000_shutdown(pdev, &wake); 4664 if (!retval) 4665 e1000_complete_shutdown(pdev, true, wake); 4666 4667 return retval; 4668} 4669 4670static int e1000_resume(struct pci_dev *pdev) 4671{ 4672 struct net_device *netdev = pci_get_drvdata(pdev); 4673 struct e1000_adapter *adapter = netdev_priv(netdev); 4674 struct e1000_hw *hw = &adapter->hw; 4675 u32 err; 4676 4677 pci_set_power_state(pdev, PCI_D0); 4678 pci_restore_state(pdev); 4679 e1000e_disable_l1aspm(pdev); 4680 4681 err = pci_enable_device_mem(pdev); 4682 if (err) { 4683 dev_err(&pdev->dev, 4684 "Cannot enable PCI device from suspend\n"); 4685 return err; 4686 } 4687 4688 pci_set_master(pdev); 4689 4690 pci_enable_wake(pdev, PCI_D3hot, 0); 4691 pci_enable_wake(pdev, PCI_D3cold, 0); 4692 4693 e1000e_set_interrupt_capability(adapter); 4694 if (netif_running(netdev)) { 4695 err = e1000_request_irq(adapter); 4696 if (err) 4697 return err; 4698 } 4699 4700 e1000e_power_up_phy(adapter); 4701 4702 /* report the system wakeup cause from S3/S4 */ 4703 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) { 4704 u16 phy_data; 4705 4706 e1e_rphy(&adapter->hw, BM_WUS, &phy_data); 4707 if (phy_data) { 4708 e_info("PHY Wakeup cause - %s\n", 4709 phy_data & E1000_WUS_EX ? "Unicast Packet" : 4710 phy_data & E1000_WUS_MC ? "Multicast Packet" : 4711 phy_data & E1000_WUS_BC ? "Broadcast Packet" : 4712 phy_data & E1000_WUS_MAG ? "Magic Packet" : 4713 phy_data & E1000_WUS_LNKC ? "Link Status " 4714 " Change" : "other"); 4715 } 4716 e1e_wphy(&adapter->hw, BM_WUS, ~0); 4717 } else { 4718 u32 wus = er32(WUS); 4719 if (wus) { 4720 e_info("MAC Wakeup cause - %s\n", 4721 wus & E1000_WUS_EX ? "Unicast Packet" : 4722 wus & E1000_WUS_MC ? "Multicast Packet" : 4723 wus & E1000_WUS_BC ? "Broadcast Packet" : 4724 wus & E1000_WUS_MAG ? "Magic Packet" : 4725 wus & E1000_WUS_LNKC ? "Link Status Change" : 4726 "other"); 4727 } 4728 ew32(WUS, ~0); 4729 } 4730 4731 e1000e_reset(adapter); 4732 4733 e1000_init_manageability(adapter); 4734 4735 if (netif_running(netdev)) 4736 e1000e_up(adapter); 4737 4738 netif_device_attach(netdev); 4739 4740 /* 4741 * If the controller has AMT, do not set DRV_LOAD until the interface 4742 * is up. For all other cases, let the f/w know that the h/w is now 4743 * under the control of the driver. 4744 */ 4745 if (!(adapter->flags & FLAG_HAS_AMT)) 4746 e1000_get_hw_control(adapter); 4747 4748 return 0; 4749} 4750#endif 4751 4752static void e1000_shutdown(struct pci_dev *pdev) 4753{ 4754 bool wake = false; 4755 4756 __e1000_shutdown(pdev, &wake); 4757 4758 if (system_state == SYSTEM_POWER_OFF) 4759 e1000_complete_shutdown(pdev, false, wake); 4760} 4761 4762#ifdef CONFIG_NET_POLL_CONTROLLER 4763/* 4764 * Polling 'interrupt' - used by things like netconsole to send skbs 4765 * without having to re-enable interrupts. It's not called while 4766 * the interrupt routine is executing. 4767 */ 4768static void e1000_netpoll(struct net_device *netdev) 4769{ 4770 struct e1000_adapter *adapter = netdev_priv(netdev); 4771 4772 disable_irq(adapter->pdev->irq); 4773 e1000_intr(adapter->pdev->irq, netdev); 4774 4775 enable_irq(adapter->pdev->irq); 4776} 4777#endif 4778 4779/** 4780 * e1000_io_error_detected - called when PCI error is detected 4781 * @pdev: Pointer to PCI device 4782 * @state: The current pci connection state 4783 * 4784 * This function is called after a PCI bus error affecting 4785 * this device has been detected. 4786 */ 4787static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev, 4788 pci_channel_state_t state) 4789{ 4790 struct net_device *netdev = pci_get_drvdata(pdev); 4791 struct e1000_adapter *adapter = netdev_priv(netdev); 4792 4793 netif_device_detach(netdev); 4794 4795 if (state == pci_channel_io_perm_failure) 4796 return PCI_ERS_RESULT_DISCONNECT; 4797 4798 if (netif_running(netdev)) 4799 e1000e_down(adapter); 4800 pci_disable_device(pdev); 4801 4802 /* Request a slot slot reset. */ 4803 return PCI_ERS_RESULT_NEED_RESET; 4804} 4805 4806/** 4807 * e1000_io_slot_reset - called after the pci bus has been reset. 4808 * @pdev: Pointer to PCI device 4809 * 4810 * Restart the card from scratch, as if from a cold-boot. Implementation 4811 * resembles the first-half of the e1000_resume routine. 4812 */ 4813static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev) 4814{ 4815 struct net_device *netdev = pci_get_drvdata(pdev); 4816 struct e1000_adapter *adapter = netdev_priv(netdev); 4817 struct e1000_hw *hw = &adapter->hw; 4818 int err; 4819 pci_ers_result_t result; 4820 4821 e1000e_disable_l1aspm(pdev); 4822 err = pci_enable_device_mem(pdev); 4823 if (err) { 4824 dev_err(&pdev->dev, 4825 "Cannot re-enable PCI device after reset.\n"); 4826 result = PCI_ERS_RESULT_DISCONNECT; 4827 } else { 4828 pci_set_master(pdev); 4829 pci_restore_state(pdev); 4830 4831 pci_enable_wake(pdev, PCI_D3hot, 0); 4832 pci_enable_wake(pdev, PCI_D3cold, 0); 4833 4834 e1000e_reset(adapter); 4835 ew32(WUS, ~0); 4836 result = PCI_ERS_RESULT_RECOVERED; 4837 } 4838 4839 pci_cleanup_aer_uncorrect_error_status(pdev); 4840 4841 return result; 4842} 4843 4844/** 4845 * e1000_io_resume - called when traffic can start flowing again. 4846 * @pdev: Pointer to PCI device 4847 * 4848 * This callback is called when the error recovery driver tells us that 4849 * its OK to resume normal operation. Implementation resembles the 4850 * second-half of the e1000_resume routine. 4851 */ 4852static void e1000_io_resume(struct pci_dev *pdev) 4853{ 4854 struct net_device *netdev = pci_get_drvdata(pdev); 4855 struct e1000_adapter *adapter = netdev_priv(netdev); 4856 4857 e1000_init_manageability(adapter); 4858 4859 if (netif_running(netdev)) { 4860 if (e1000e_up(adapter)) { 4861 dev_err(&pdev->dev, 4862 "can't bring device back up after reset\n"); 4863 return; 4864 } 4865 } 4866 4867 netif_device_attach(netdev); 4868 4869 /* 4870 * If the controller has AMT, do not set DRV_LOAD until the interface 4871 * is up. For all other cases, let the f/w know that the h/w is now 4872 * under the control of the driver. 4873 */ 4874 if (!(adapter->flags & FLAG_HAS_AMT)) 4875 e1000_get_hw_control(adapter); 4876 4877} 4878 4879static void e1000_print_device_info(struct e1000_adapter *adapter) 4880{ 4881 struct e1000_hw *hw = &adapter->hw; 4882 struct net_device *netdev = adapter->netdev; 4883 u32 pba_num; 4884 4885 /* print bus type/speed/width info */ 4886 e_info("(PCI Express:2.5GB/s:%s) %pM\n", 4887 /* bus width */ 4888 ((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" : 4889 "Width x1"), 4890 /* MAC address */ 4891 netdev->dev_addr); 4892 e_info("Intel(R) PRO/%s Network Connection\n", 4893 (hw->phy.type == e1000_phy_ife) ? "10/100" : "1000"); 4894 e1000e_read_pba_num(hw, &pba_num); 4895 e_info("MAC: %d, PHY: %d, PBA No: %06x-%03x\n", 4896 hw->mac.type, hw->phy.type, (pba_num >> 8), (pba_num & 0xff)); 4897} 4898 4899static void e1000_eeprom_checks(struct e1000_adapter *adapter) 4900{ 4901 struct e1000_hw *hw = &adapter->hw; 4902 int ret_val; 4903 u16 buf = 0; 4904 4905 if (hw->mac.type != e1000_82573) 4906 return; 4907 4908 ret_val = e1000_read_nvm(hw, NVM_INIT_CONTROL2_REG, 1, &buf); 4909 if (!ret_val && (!(le16_to_cpu(buf) & (1 << 0)))) { 4910 /* Deep Smart Power Down (DSPD) */ 4911 dev_warn(&adapter->pdev->dev, 4912 "Warning: detected DSPD enabled in EEPROM\n"); 4913 } 4914 4915 ret_val = e1000_read_nvm(hw, NVM_INIT_3GIO_3, 1, &buf); 4916 if (!ret_val && (le16_to_cpu(buf) & (3 << 2))) { 4917 /* ASPM enable */ 4918 dev_warn(&adapter->pdev->dev, 4919 "Warning: detected ASPM enabled in EEPROM\n"); 4920 } 4921} 4922 4923static const struct net_device_ops e1000e_netdev_ops = { 4924 .ndo_open = e1000_open, 4925 .ndo_stop = e1000_close, 4926 .ndo_start_xmit = e1000_xmit_frame, 4927 .ndo_get_stats = e1000_get_stats, 4928 .ndo_set_multicast_list = e1000_set_multi, 4929 .ndo_set_mac_address = e1000_set_mac, 4930 .ndo_change_mtu = e1000_change_mtu, 4931 .ndo_do_ioctl = e1000_ioctl, 4932 .ndo_tx_timeout = e1000_tx_timeout, 4933 .ndo_validate_addr = eth_validate_addr, 4934 4935 .ndo_vlan_rx_register = e1000_vlan_rx_register, 4936 .ndo_vlan_rx_add_vid = e1000_vlan_rx_add_vid, 4937 .ndo_vlan_rx_kill_vid = e1000_vlan_rx_kill_vid, 4938#ifdef CONFIG_NET_POLL_CONTROLLER 4939 .ndo_poll_controller = e1000_netpoll, 4940#endif 4941}; 4942 4943/** 4944 * e1000_probe - Device Initialization Routine 4945 * @pdev: PCI device information struct 4946 * @ent: entry in e1000_pci_tbl 4947 * 4948 * Returns 0 on success, negative on failure 4949 * 4950 * e1000_probe initializes an adapter identified by a pci_dev structure. 4951 * The OS initialization, configuring of the adapter private structure, 4952 * and a hardware reset occur. 4953 **/ 4954static int __devinit e1000_probe(struct pci_dev *pdev, 4955 const struct pci_device_id *ent) 4956{ 4957 struct net_device *netdev; 4958 struct e1000_adapter *adapter; 4959 struct e1000_hw *hw; 4960 const struct e1000_info *ei = e1000_info_tbl[ent->driver_data]; 4961 resource_size_t mmio_start, mmio_len; 4962 resource_size_t flash_start, flash_len; 4963 4964 static int cards_found; 4965 int i, err, pci_using_dac; 4966 u16 eeprom_data = 0; 4967 u16 eeprom_apme_mask = E1000_EEPROM_APME; 4968 4969 e1000e_disable_l1aspm(pdev); 4970 4971 err = pci_enable_device_mem(pdev); 4972 if (err) 4973 return err; 4974 4975 pci_using_dac = 0; 4976 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); 4977 if (!err) { 4978 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); 4979 if (!err) 4980 pci_using_dac = 1; 4981 } else { 4982 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); 4983 if (err) { 4984 err = pci_set_consistent_dma_mask(pdev, 4985 DMA_BIT_MASK(32)); 4986 if (err) { 4987 dev_err(&pdev->dev, "No usable DMA " 4988 "configuration, aborting\n"); 4989 goto err_dma; 4990 } 4991 } 4992 } 4993 4994 err = pci_request_selected_regions_exclusive(pdev, 4995 pci_select_bars(pdev, IORESOURCE_MEM), 4996 e1000e_driver_name); 4997 if (err) 4998 goto err_pci_reg; 4999 5000 /* AER (Advanced Error Reporting) hooks */ 5001 pci_enable_pcie_error_reporting(pdev); 5002 5003 pci_set_master(pdev); 5004 /* PCI config space info */ 5005 err = pci_save_state(pdev); 5006 if (err) 5007 goto err_alloc_etherdev; 5008 5009 err = -ENOMEM; 5010 netdev = alloc_etherdev(sizeof(struct e1000_adapter)); 5011 if (!netdev) 5012 goto err_alloc_etherdev; 5013 5014 SET_NETDEV_DEV(netdev, &pdev->dev); 5015 5016 pci_set_drvdata(pdev, netdev); 5017 adapter = netdev_priv(netdev); 5018 hw = &adapter->hw; 5019 adapter->netdev = netdev; 5020 adapter->pdev = pdev; 5021 adapter->ei = ei; 5022 adapter->pba = ei->pba; 5023 adapter->flags = ei->flags; 5024 adapter->flags2 = ei->flags2; 5025 adapter->hw.adapter = adapter; 5026 adapter->hw.mac.type = ei->mac; 5027 adapter->max_hw_frame_size = ei->max_hw_frame_size; 5028 adapter->msg_enable = (1 << NETIF_MSG_DRV | NETIF_MSG_PROBE) - 1; 5029 5030 mmio_start = pci_resource_start(pdev, 0); 5031 mmio_len = pci_resource_len(pdev, 0); 5032 5033 err = -EIO; 5034 adapter->hw.hw_addr = ioremap(mmio_start, mmio_len); 5035 if (!adapter->hw.hw_addr) 5036 goto err_ioremap; 5037 5038 if ((adapter->flags & FLAG_HAS_FLASH) && 5039 (pci_resource_flags(pdev, 1) & IORESOURCE_MEM)) { 5040 flash_start = pci_resource_start(pdev, 1); 5041 flash_len = pci_resource_len(pdev, 1); 5042 adapter->hw.flash_address = ioremap(flash_start, flash_len); 5043 if (!adapter->hw.flash_address) 5044 goto err_flashmap; 5045 } 5046 5047 /* construct the net_device struct */ 5048 netdev->netdev_ops = &e1000e_netdev_ops; 5049 e1000e_set_ethtool_ops(netdev); 5050 netdev->watchdog_timeo = 5 * HZ; 5051 netif_napi_add(netdev, &adapter->napi, e1000_clean, 64); 5052 strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1); 5053 5054 netdev->mem_start = mmio_start; 5055 netdev->mem_end = mmio_start + mmio_len; 5056 5057 adapter->bd_number = cards_found++; 5058 5059 e1000e_check_options(adapter); 5060 5061 /* setup adapter struct */ 5062 err = e1000_sw_init(adapter); 5063 if (err) 5064 goto err_sw_init; 5065 5066 err = -EIO; 5067 5068 memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops)); 5069 memcpy(&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops)); 5070 memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops)); 5071 5072 err = ei->get_variants(adapter); 5073 if (err) 5074 goto err_hw_init; 5075 5076 if ((adapter->flags & FLAG_IS_ICH) && 5077 (adapter->flags & FLAG_READ_ONLY_NVM)) 5078 e1000e_write_protect_nvm_ich8lan(&adapter->hw); 5079 5080 hw->mac.ops.get_bus_info(&adapter->hw); 5081 5082 adapter->hw.phy.autoneg_wait_to_complete = 0; 5083 5084 /* Copper options */ 5085 if (adapter->hw.phy.media_type == e1000_media_type_copper) { 5086 adapter->hw.phy.mdix = AUTO_ALL_MODES; 5087 adapter->hw.phy.disable_polarity_correction = 0; 5088 adapter->hw.phy.ms_type = e1000_ms_hw_default; 5089 } 5090 5091 if (e1000_check_reset_block(&adapter->hw)) 5092 e_info("PHY reset is blocked due to SOL/IDER session.\n"); 5093 5094 netdev->features = NETIF_F_SG | 5095 NETIF_F_HW_CSUM | 5096 NETIF_F_HW_VLAN_TX | 5097 NETIF_F_HW_VLAN_RX; 5098 5099 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) 5100 netdev->features |= NETIF_F_HW_VLAN_FILTER; 5101 5102 netdev->features |= NETIF_F_TSO; 5103 netdev->features |= NETIF_F_TSO6; 5104 5105 netdev->vlan_features |= NETIF_F_TSO; 5106 netdev->vlan_features |= NETIF_F_TSO6; 5107 netdev->vlan_features |= NETIF_F_HW_CSUM; 5108 netdev->vlan_features |= NETIF_F_SG; 5109 5110 if (pci_using_dac) 5111 netdev->features |= NETIF_F_HIGHDMA; 5112 5113 if (e1000e_enable_mng_pass_thru(&adapter->hw)) 5114 adapter->flags |= FLAG_MNG_PT_ENABLED; 5115 5116 /* 5117 * before reading the NVM, reset the controller to 5118 * put the device in a known good starting state 5119 */ 5120 adapter->hw.mac.ops.reset_hw(&adapter->hw); 5121 5122 /* 5123 * systems with ASPM and others may see the checksum fail on the first 5124 * attempt. Let's give it a few tries 5125 */ 5126 for (i = 0;; i++) { 5127 if (e1000_validate_nvm_checksum(&adapter->hw) >= 0) 5128 break; 5129 if (i == 2) { 5130 e_err("The NVM Checksum Is Not Valid\n"); 5131 err = -EIO; 5132 goto err_eeprom; 5133 } 5134 } 5135 5136 e1000_eeprom_checks(adapter); 5137 5138 /* copy the MAC address out of the NVM */ 5139 if (e1000e_read_mac_addr(&adapter->hw)) 5140 e_err("NVM Read Error while reading MAC address\n"); 5141 5142 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); 5143 memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len); 5144 5145 if (!is_valid_ether_addr(netdev->perm_addr)) { 5146 e_err("Invalid MAC Address: %pM\n", netdev->perm_addr); 5147 err = -EIO; 5148 goto err_eeprom; 5149 } 5150 5151 init_timer(&adapter->watchdog_timer); 5152 adapter->watchdog_timer.function = &e1000_watchdog; 5153 adapter->watchdog_timer.data = (unsigned long) adapter; 5154 5155 init_timer(&adapter->phy_info_timer); 5156 adapter->phy_info_timer.function = &e1000_update_phy_info; 5157 adapter->phy_info_timer.data = (unsigned long) adapter; 5158 5159 INIT_WORK(&adapter->reset_task, e1000_reset_task); 5160 INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task); 5161 INIT_WORK(&adapter->downshift_task, e1000e_downshift_workaround); 5162 INIT_WORK(&adapter->update_phy_task, e1000e_update_phy_task); 5163 5164 /* Initialize link parameters. User can change them with ethtool */ 5165 adapter->hw.mac.autoneg = 1; 5166 adapter->fc_autoneg = 1; 5167 adapter->hw.fc.requested_mode = e1000_fc_default; 5168 adapter->hw.fc.current_mode = e1000_fc_default; 5169 adapter->hw.phy.autoneg_advertised = 0x2f; 5170 5171 /* ring size defaults */ 5172 adapter->rx_ring->count = 256; 5173 adapter->tx_ring->count = 256; 5174 5175 /* 5176 * Initial Wake on LAN setting - If APM wake is enabled in 5177 * the EEPROM, enable the ACPI Magic Packet filter 5178 */ 5179 if (adapter->flags & FLAG_APME_IN_WUC) { 5180 /* APME bit in EEPROM is mapped to WUC.APME */ 5181 eeprom_data = er32(WUC); 5182 eeprom_apme_mask = E1000_WUC_APME; 5183 if (eeprom_data & E1000_WUC_PHY_WAKE) 5184 adapter->flags2 |= FLAG2_HAS_PHY_WAKEUP; 5185 } else if (adapter->flags & FLAG_APME_IN_CTRL3) { 5186 if (adapter->flags & FLAG_APME_CHECK_PORT_B && 5187 (adapter->hw.bus.func == 1)) 5188 e1000_read_nvm(&adapter->hw, 5189 NVM_INIT_CONTROL3_PORT_B, 1, &eeprom_data); 5190 else 5191 e1000_read_nvm(&adapter->hw, 5192 NVM_INIT_CONTROL3_PORT_A, 1, &eeprom_data); 5193 } 5194 5195 /* fetch WoL from EEPROM */ 5196 if (eeprom_data & eeprom_apme_mask) 5197 adapter->eeprom_wol |= E1000_WUFC_MAG; 5198 5199 /* 5200 * now that we have the eeprom settings, apply the special cases 5201 * where the eeprom may be wrong or the board simply won't support 5202 * wake on lan on a particular port 5203 */ 5204 if (!(adapter->flags & FLAG_HAS_WOL)) 5205 adapter->eeprom_wol = 0; 5206 5207 /* initialize the wol settings based on the eeprom settings */ 5208 adapter->wol = adapter->eeprom_wol; 5209 device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); 5210 5211 /* save off EEPROM version number */ 5212 e1000_read_nvm(&adapter->hw, 5, 1, &adapter->eeprom_vers); 5213 5214 /* reset the hardware with the new settings */ 5215 e1000e_reset(adapter); 5216 5217 /* 5218 * If the controller has AMT, do not set DRV_LOAD until the interface 5219 * is up. For all other cases, let the f/w know that the h/w is now 5220 * under the control of the driver. 5221 */ 5222 if (!(adapter->flags & FLAG_HAS_AMT)) 5223 e1000_get_hw_control(adapter); 5224 5225 strcpy(netdev->name, "eth%d"); 5226 err = register_netdev(netdev); 5227 if (err) 5228 goto err_register; 5229 5230 /* carrier off reporting is important to ethtool even BEFORE open */ 5231 netif_carrier_off(netdev); 5232 5233 e1000_print_device_info(adapter); 5234 5235 return 0; 5236 5237err_register: 5238 if (!(adapter->flags & FLAG_HAS_AMT)) 5239 e1000_release_hw_control(adapter); 5240err_eeprom: 5241 if (!e1000_check_reset_block(&adapter->hw)) 5242 e1000_phy_hw_reset(&adapter->hw); 5243err_hw_init: 5244 5245 kfree(adapter->tx_ring); 5246 kfree(adapter->rx_ring); 5247err_sw_init: 5248 if (adapter->hw.flash_address) 5249 iounmap(adapter->hw.flash_address); 5250 e1000e_reset_interrupt_capability(adapter); 5251err_flashmap: 5252 iounmap(adapter->hw.hw_addr); 5253err_ioremap: 5254 free_netdev(netdev); 5255err_alloc_etherdev: 5256 pci_release_selected_regions(pdev, 5257 pci_select_bars(pdev, IORESOURCE_MEM)); 5258err_pci_reg: 5259err_dma: 5260 pci_disable_device(pdev); 5261 return err; 5262} 5263 5264/** 5265 * e1000_remove - Device Removal Routine 5266 * @pdev: PCI device information struct 5267 * 5268 * e1000_remove is called by the PCI subsystem to alert the driver 5269 * that it should release a PCI device. The could be caused by a 5270 * Hot-Plug event, or because the driver is going to be removed from 5271 * memory. 5272 **/ 5273static void __devexit e1000_remove(struct pci_dev *pdev) 5274{ 5275 struct net_device *netdev = pci_get_drvdata(pdev); 5276 struct e1000_adapter *adapter = netdev_priv(netdev); 5277 5278 /* 5279 * flush_scheduled work may reschedule our watchdog task, so 5280 * explicitly disable watchdog tasks from being rescheduled 5281 */ 5282 set_bit(__E1000_DOWN, &adapter->state); 5283 del_timer_sync(&adapter->watchdog_timer); 5284 del_timer_sync(&adapter->phy_info_timer); 5285 5286 flush_scheduled_work(); 5287 5288 /* 5289 * Release control of h/w to f/w. If f/w is AMT enabled, this 5290 * would have already happened in close and is redundant. 5291 */ 5292 e1000_release_hw_control(adapter); 5293 5294 unregister_netdev(netdev); 5295 5296 if (!e1000_check_reset_block(&adapter->hw)) 5297 e1000_phy_hw_reset(&adapter->hw); 5298 5299 e1000e_reset_interrupt_capability(adapter); 5300 kfree(adapter->tx_ring); 5301 kfree(adapter->rx_ring); 5302 5303 iounmap(adapter->hw.hw_addr); 5304 if (adapter->hw.flash_address) 5305 iounmap(adapter->hw.flash_address); 5306 pci_release_selected_regions(pdev, 5307 pci_select_bars(pdev, IORESOURCE_MEM)); 5308 5309 free_netdev(netdev); 5310 5311 /* AER disable */ 5312 pci_disable_pcie_error_reporting(pdev); 5313 5314 pci_disable_device(pdev); 5315} 5316 5317/* PCI Error Recovery (ERS) */ 5318static struct pci_error_handlers e1000_err_handler = { 5319 .error_detected = e1000_io_error_detected, 5320 .slot_reset = e1000_io_slot_reset, 5321 .resume = e1000_io_resume, 5322}; 5323 5324static struct pci_device_id e1000_pci_tbl[] = { 5325 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_COPPER), board_82571 }, 5326 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_FIBER), board_82571 }, 5327 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_COPPER), board_82571 }, 5328 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_COPPER_LP), board_82571 }, 5329 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_FIBER), board_82571 }, 5330 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_SERDES), board_82571 }, 5331 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_SERDES_DUAL), board_82571 }, 5332 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_SERDES_QUAD), board_82571 }, 5333 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82571PT_QUAD_COPPER), board_82571 }, 5334 5335 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82572EI), board_82572 }, 5336 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82572EI_COPPER), board_82572 }, 5337 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82572EI_FIBER), board_82572 }, 5338 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82572EI_SERDES), board_82572 }, 5339 5340 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82573E), board_82573 }, 5341 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82573E_IAMT), board_82573 }, 5342 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82573L), board_82573 }, 5343 5344 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82574L), board_82574 }, 5345 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82574LA), board_82574 }, 5346 { PCI_VDEVICE(INTEL, E1000_DEV_ID_82583V), board_82583 }, 5347 5348 { PCI_VDEVICE(INTEL, E1000_DEV_ID_80003ES2LAN_COPPER_DPT), 5349 board_80003es2lan }, 5350 { PCI_VDEVICE(INTEL, E1000_DEV_ID_80003ES2LAN_COPPER_SPT), 5351 board_80003es2lan }, 5352 { PCI_VDEVICE(INTEL, E1000_DEV_ID_80003ES2LAN_SERDES_DPT), 5353 board_80003es2lan }, 5354 { PCI_VDEVICE(INTEL, E1000_DEV_ID_80003ES2LAN_SERDES_SPT), 5355 board_80003es2lan }, 5356 5357 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IFE), board_ich8lan }, 5358 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IFE_G), board_ich8lan }, 5359 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IFE_GT), board_ich8lan }, 5360 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IGP_AMT), board_ich8lan }, 5361 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IGP_C), board_ich8lan }, 5362 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IGP_M), board_ich8lan }, 5363 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH8_IGP_M_AMT), board_ich8lan }, 5364 5365 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IFE), board_ich9lan }, 5366 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IFE_G), board_ich9lan }, 5367 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IFE_GT), board_ich9lan }, 5368 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_AMT), board_ich9lan }, 5369 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_C), board_ich9lan }, 5370 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_BM), board_ich9lan }, 5371 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M), board_ich9lan }, 5372 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_AMT), board_ich9lan }, 5373 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_V), board_ich9lan }, 5374 5375 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LM), board_ich9lan }, 5376 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LF), board_ich9lan }, 5377 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_V), board_ich9lan }, 5378 5379 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_D_BM_LM), board_ich10lan }, 5380 { PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_D_BM_LF), board_ich10lan }, 5381 5382 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_M_HV_LM), board_pchlan }, 5383 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_M_HV_LC), board_pchlan }, 5384 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_D_HV_DM), board_pchlan }, 5385 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_D_HV_DC), board_pchlan }, 5386 5387 { } /* terminate list */ 5388}; 5389MODULE_DEVICE_TABLE(pci, e1000_pci_tbl); 5390 5391/* PCI Device API Driver */ 5392static struct pci_driver e1000_driver = { 5393 .name = e1000e_driver_name, 5394 .id_table = e1000_pci_tbl, 5395 .probe = e1000_probe, 5396 .remove = __devexit_p(e1000_remove), 5397#ifdef CONFIG_PM 5398 /* Power Management Hooks */ 5399 .suspend = e1000_suspend, 5400 .resume = e1000_resume, 5401#endif 5402 .shutdown = e1000_shutdown, 5403 .err_handler = &e1000_err_handler 5404}; 5405 5406/** 5407 * e1000_init_module - Driver Registration Routine 5408 * 5409 * e1000_init_module is the first routine called when the driver is 5410 * loaded. All it does is register with the PCI subsystem. 5411 **/ 5412static int __init e1000_init_module(void) 5413{ 5414 int ret; 5415 printk(KERN_INFO "%s: Intel(R) PRO/1000 Network Driver - %s\n", 5416 e1000e_driver_name, e1000e_driver_version); 5417 printk(KERN_INFO "%s: Copyright (c) 1999-2008 Intel Corporation.\n", 5418 e1000e_driver_name); 5419 ret = pci_register_driver(&e1000_driver); 5420 pm_qos_add_requirement(PM_QOS_CPU_DMA_LATENCY, e1000e_driver_name, 5421 PM_QOS_DEFAULT_VALUE); 5422 5423 return ret; 5424} 5425module_init(e1000_init_module); 5426 5427/** 5428 * e1000_exit_module - Driver Exit Cleanup Routine 5429 * 5430 * e1000_exit_module is called just before the driver is removed 5431 * from memory. 5432 **/ 5433static void __exit e1000_exit_module(void) 5434{ 5435 pci_unregister_driver(&e1000_driver); 5436 pm_qos_remove_requirement(PM_QOS_CPU_DMA_LATENCY, e1000e_driver_name); 5437} 5438module_exit(e1000_exit_module); 5439 5440 5441MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>"); 5442MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver"); 5443MODULE_LICENSE("GPL"); 5444MODULE_VERSION(DRV_VERSION); 5445 5446/* e1000_main.c */