aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/e1000e/netdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c393
1 files changed, 218 insertions, 175 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index a855db1ad249..a5bd7a3dafc9 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -163,16 +163,13 @@ static void e1000_regdump(struct e1000_hw *hw, struct e1000_reg_info *reginfo)
163 regs[n] = __er32(hw, E1000_TARC(n)); 163 regs[n] = __er32(hw, E1000_TARC(n));
164 break; 164 break;
165 default: 165 default:
166 printk(KERN_INFO "%-15s %08x\n", 166 pr_info("%-15s %08x\n",
167 reginfo->name, __er32(hw, reginfo->ofs)); 167 reginfo->name, __er32(hw, reginfo->ofs));
168 return; 168 return;
169 } 169 }
170 170
171 snprintf(rname, 16, "%s%s", reginfo->name, "[0-1]"); 171 snprintf(rname, 16, "%s%s", reginfo->name, "[0-1]");
172 printk(KERN_INFO "%-15s ", rname); 172 pr_info("%-15s %08x %08x\n", rname, regs[0], regs[1]);
173 for (n = 0; n < 2; n++)
174 printk(KERN_CONT "%08x ", regs[n]);
175 printk(KERN_CONT "\n");
176} 173}
177 174
178/* 175/*
@@ -208,16 +205,15 @@ static void e1000e_dump(struct e1000_adapter *adapter)
208 /* Print netdevice Info */ 205 /* Print netdevice Info */
209 if (netdev) { 206 if (netdev) {
210 dev_info(&adapter->pdev->dev, "Net device Info\n"); 207 dev_info(&adapter->pdev->dev, "Net device Info\n");
211 printk(KERN_INFO "Device Name state " 208 pr_info("Device Name state trans_start last_rx\n");
212 "trans_start last_rx\n"); 209 pr_info("%-15s %016lX %016lX %016lX\n",
213 printk(KERN_INFO "%-15s %016lX %016lX %016lX\n", 210 netdev->name, netdev->state, netdev->trans_start,
214 netdev->name, netdev->state, netdev->trans_start, 211 netdev->last_rx);
215 netdev->last_rx);
216 } 212 }
217 213
218 /* Print Registers */ 214 /* Print Registers */
219 dev_info(&adapter->pdev->dev, "Register Dump\n"); 215 dev_info(&adapter->pdev->dev, "Register Dump\n");
220 printk(KERN_INFO " Register Name Value\n"); 216 pr_info(" Register Name Value\n");
221 for (reginfo = (struct e1000_reg_info *)e1000_reg_info_tbl; 217 for (reginfo = (struct e1000_reg_info *)e1000_reg_info_tbl;
222 reginfo->name; reginfo++) { 218 reginfo->name; reginfo++) {
223 e1000_regdump(hw, reginfo); 219 e1000_regdump(hw, reginfo);
@@ -228,15 +224,14 @@ static void e1000e_dump(struct e1000_adapter *adapter)
228 goto exit; 224 goto exit;
229 225
230 dev_info(&adapter->pdev->dev, "Tx Ring Summary\n"); 226 dev_info(&adapter->pdev->dev, "Tx Ring Summary\n");
231 printk(KERN_INFO "Queue [NTU] [NTC] [bi(ntc)->dma ]" 227 pr_info("Queue [NTU] [NTC] [bi(ntc)->dma ] leng ntw timestamp\n");
232 " leng ntw timestamp\n");
233 buffer_info = &tx_ring->buffer_info[tx_ring->next_to_clean]; 228 buffer_info = &tx_ring->buffer_info[tx_ring->next_to_clean];
234 printk(KERN_INFO " %5d %5X %5X %016llX %04X %3X %016llX\n", 229 pr_info(" %5d %5X %5X %016llX %04X %3X %016llX\n",
235 0, tx_ring->next_to_use, tx_ring->next_to_clean, 230 0, tx_ring->next_to_use, tx_ring->next_to_clean,
236 (unsigned long long)buffer_info->dma, 231 (unsigned long long)buffer_info->dma,
237 buffer_info->length, 232 buffer_info->length,
238 buffer_info->next_to_watch, 233 buffer_info->next_to_watch,
239 (unsigned long long)buffer_info->time_stamp); 234 (unsigned long long)buffer_info->time_stamp);
240 235
241 /* Print Tx Ring */ 236 /* Print Tx Ring */
242 if (!netif_msg_tx_done(adapter)) 237 if (!netif_msg_tx_done(adapter))
@@ -271,37 +266,32 @@ static void e1000e_dump(struct e1000_adapter *adapter)
271 * +----------------------------------------------------------------+ 266 * +----------------------------------------------------------------+
272 * 63 48 47 40 39 36 35 32 31 24 23 20 19 0 267 * 63 48 47 40 39 36 35 32 31 24 23 20 19 0
273 */ 268 */
274 printk(KERN_INFO "Tl[desc] [address 63:0 ] [SpeCssSCmCsLen]" 269 pr_info("Tl[desc] [address 63:0 ] [SpeCssSCmCsLen] [bi->dma ] leng ntw timestamp bi->skb <-- Legacy format\n");
275 " [bi->dma ] leng ntw timestamp bi->skb " 270 pr_info("Tc[desc] [Ce CoCsIpceCoS] [MssHlRSCm0Plen] [bi->dma ] leng ntw timestamp bi->skb <-- Ext Context format\n");
276 "<-- Legacy format\n"); 271 pr_info("Td[desc] [address 63:0 ] [VlaPoRSCm1Dlen] [bi->dma ] leng ntw timestamp bi->skb <-- Ext Data format\n");
277 printk(KERN_INFO "Tc[desc] [Ce CoCsIpceCoS] [MssHlRSCm0Plen]"
278 " [bi->dma ] leng ntw timestamp bi->skb "
279 "<-- Ext Context format\n");
280 printk(KERN_INFO "Td[desc] [address 63:0 ] [VlaPoRSCm1Dlen]"
281 " [bi->dma ] leng ntw timestamp bi->skb "
282 "<-- Ext Data format\n");
283 for (i = 0; tx_ring->desc && (i < tx_ring->count); i++) { 272 for (i = 0; tx_ring->desc && (i < tx_ring->count); i++) {
273 const char *next_desc;
284 tx_desc = E1000_TX_DESC(*tx_ring, i); 274 tx_desc = E1000_TX_DESC(*tx_ring, i);
285 buffer_info = &tx_ring->buffer_info[i]; 275 buffer_info = &tx_ring->buffer_info[i];
286 u0 = (struct my_u0 *)tx_desc; 276 u0 = (struct my_u0 *)tx_desc;
287 printk(KERN_INFO "T%c[0x%03X] %016llX %016llX %016llX "
288 "%04X %3X %016llX %p",
289 (!(le64_to_cpu(u0->b) & (1 << 29)) ? 'l' :
290 ((le64_to_cpu(u0->b) & (1 << 20)) ? 'd' : 'c')), i,
291 (unsigned long long)le64_to_cpu(u0->a),
292 (unsigned long long)le64_to_cpu(u0->b),
293 (unsigned long long)buffer_info->dma,
294 buffer_info->length, buffer_info->next_to_watch,
295 (unsigned long long)buffer_info->time_stamp,
296 buffer_info->skb);
297 if (i == tx_ring->next_to_use && i == tx_ring->next_to_clean) 277 if (i == tx_ring->next_to_use && i == tx_ring->next_to_clean)
298 printk(KERN_CONT " NTC/U\n"); 278 next_desc = " NTC/U";
299 else if (i == tx_ring->next_to_use) 279 else if (i == tx_ring->next_to_use)
300 printk(KERN_CONT " NTU\n"); 280 next_desc = " NTU";
301 else if (i == tx_ring->next_to_clean) 281 else if (i == tx_ring->next_to_clean)
302 printk(KERN_CONT " NTC\n"); 282 next_desc = " NTC";
303 else 283 else
304 printk(KERN_CONT "\n"); 284 next_desc = "";
285 pr_info("T%c[0x%03X] %016llX %016llX %016llX %04X %3X %016llX %p%s\n",
286 (!(le64_to_cpu(u0->b) & (1 << 29)) ? 'l' :
287 ((le64_to_cpu(u0->b) & (1 << 20)) ? 'd' : 'c')),
288 i,
289 (unsigned long long)le64_to_cpu(u0->a),
290 (unsigned long long)le64_to_cpu(u0->b),
291 (unsigned long long)buffer_info->dma,
292 buffer_info->length, buffer_info->next_to_watch,
293 (unsigned long long)buffer_info->time_stamp,
294 buffer_info->skb, next_desc);
305 295
306 if (netif_msg_pktdata(adapter) && buffer_info->dma != 0) 296 if (netif_msg_pktdata(adapter) && buffer_info->dma != 0)
307 print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, 297 print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS,
@@ -312,9 +302,9 @@ static void e1000e_dump(struct e1000_adapter *adapter)
312 /* Print Rx Ring Summary */ 302 /* Print Rx Ring Summary */
313rx_ring_summary: 303rx_ring_summary:
314 dev_info(&adapter->pdev->dev, "Rx Ring Summary\n"); 304 dev_info(&adapter->pdev->dev, "Rx Ring Summary\n");
315 printk(KERN_INFO "Queue [NTU] [NTC]\n"); 305 pr_info("Queue [NTU] [NTC]\n");
316 printk(KERN_INFO " %5d %5X %5X\n", 0, 306 pr_info(" %5d %5X %5X\n",
317 rx_ring->next_to_use, rx_ring->next_to_clean); 307 0, rx_ring->next_to_use, rx_ring->next_to_clean);
318 308
319 /* Print Rx Ring */ 309 /* Print Rx Ring */
320 if (!netif_msg_rx_status(adapter)) 310 if (!netif_msg_rx_status(adapter))
@@ -337,10 +327,7 @@ rx_ring_summary:
337 * 24 | Buffer Address 3 [63:0] | 327 * 24 | Buffer Address 3 [63:0] |
338 * +-----------------------------------------------------+ 328 * +-----------------------------------------------------+
339 */ 329 */
340 printk(KERN_INFO "R [desc] [buffer 0 63:0 ] " 330 pr_info("R [desc] [buffer 0 63:0 ] [buffer 1 63:0 ] [buffer 2 63:0 ] [buffer 3 63:0 ] [bi->dma ] [bi->skb] <-- Ext Pkt Split format\n");
341 "[buffer 1 63:0 ] "
342 "[buffer 2 63:0 ] [buffer 3 63:0 ] [bi->dma ] "
343 "[bi->skb] <-- Ext Pkt Split format\n");
344 /* [Extended] Receive Descriptor (Write-Back) Format 331 /* [Extended] Receive Descriptor (Write-Back) Format
345 * 332 *
346 * 63 48 47 32 31 13 12 8 7 4 3 0 333 * 63 48 47 32 31 13 12 8 7 4 3 0
@@ -352,35 +339,40 @@ rx_ring_summary:
352 * +------------------------------------------------------+ 339 * +------------------------------------------------------+
353 * 63 48 47 32 31 20 19 0 340 * 63 48 47 32 31 20 19 0
354 */ 341 */
355 printk(KERN_INFO "RWB[desc] [ck ipid mrqhsh] " 342 pr_info("RWB[desc] [ck ipid mrqhsh] [vl l0 ee es] [ l3 l2 l1 hs] [reserved ] ---------------- [bi->skb] <-- Ext Rx Write-Back format\n");
356 "[vl l0 ee es] "
357 "[ l3 l2 l1 hs] [reserved ] ---------------- "
358 "[bi->skb] <-- Ext Rx Write-Back format\n");
359 for (i = 0; i < rx_ring->count; i++) { 343 for (i = 0; i < rx_ring->count; i++) {
344 const char *next_desc;
360 buffer_info = &rx_ring->buffer_info[i]; 345 buffer_info = &rx_ring->buffer_info[i];
361 rx_desc_ps = E1000_RX_DESC_PS(*rx_ring, i); 346 rx_desc_ps = E1000_RX_DESC_PS(*rx_ring, i);
362 u1 = (struct my_u1 *)rx_desc_ps; 347 u1 = (struct my_u1 *)rx_desc_ps;
363 staterr = 348 staterr =
364 le32_to_cpu(rx_desc_ps->wb.middle.status_error); 349 le32_to_cpu(rx_desc_ps->wb.middle.status_error);
350
351 if (i == rx_ring->next_to_use)
352 next_desc = " NTU";
353 else if (i == rx_ring->next_to_clean)
354 next_desc = " NTC";
355 else
356 next_desc = "";
357
365 if (staterr & E1000_RXD_STAT_DD) { 358 if (staterr & E1000_RXD_STAT_DD) {
366 /* Descriptor Done */ 359 /* Descriptor Done */
367 printk(KERN_INFO "RWB[0x%03X] %016llX " 360 pr_info("%s[0x%03X] %016llX %016llX %016llX %016llX ---------------- %p%s\n",
368 "%016llX %016llX %016llX " 361 "RWB", i,
369 "---------------- %p", i, 362 (unsigned long long)le64_to_cpu(u1->a),
370 (unsigned long long)le64_to_cpu(u1->a), 363 (unsigned long long)le64_to_cpu(u1->b),
371 (unsigned long long)le64_to_cpu(u1->b), 364 (unsigned long long)le64_to_cpu(u1->c),
372 (unsigned long long)le64_to_cpu(u1->c), 365 (unsigned long long)le64_to_cpu(u1->d),
373 (unsigned long long)le64_to_cpu(u1->d), 366 buffer_info->skb, next_desc);
374 buffer_info->skb);
375 } else { 367 } else {
376 printk(KERN_INFO "R [0x%03X] %016llX " 368 pr_info("%s[0x%03X] %016llX %016llX %016llX %016llX %016llX %p%s\n",
377 "%016llX %016llX %016llX %016llX %p", i, 369 "R ", i,
378 (unsigned long long)le64_to_cpu(u1->a), 370 (unsigned long long)le64_to_cpu(u1->a),
379 (unsigned long long)le64_to_cpu(u1->b), 371 (unsigned long long)le64_to_cpu(u1->b),
380 (unsigned long long)le64_to_cpu(u1->c), 372 (unsigned long long)le64_to_cpu(u1->c),
381 (unsigned long long)le64_to_cpu(u1->d), 373 (unsigned long long)le64_to_cpu(u1->d),
382 (unsigned long long)buffer_info->dma, 374 (unsigned long long)buffer_info->dma,
383 buffer_info->skb); 375 buffer_info->skb, next_desc);
384 376
385 if (netif_msg_pktdata(adapter)) 377 if (netif_msg_pktdata(adapter))
386 print_hex_dump(KERN_INFO, "", 378 print_hex_dump(KERN_INFO, "",
@@ -388,13 +380,6 @@ rx_ring_summary:
388 phys_to_virt(buffer_info->dma), 380 phys_to_virt(buffer_info->dma),
389 adapter->rx_ps_bsize0, true); 381 adapter->rx_ps_bsize0, true);
390 } 382 }
391
392 if (i == rx_ring->next_to_use)
393 printk(KERN_CONT " NTU\n");
394 else if (i == rx_ring->next_to_clean)
395 printk(KERN_CONT " NTC\n");
396 else
397 printk(KERN_CONT "\n");
398 } 383 }
399 break; 384 break;
400 default: 385 default:
@@ -407,9 +392,7 @@ rx_ring_summary:
407 * 8 | Reserved | 392 * 8 | Reserved |
408 * +-----------------------------------------------------+ 393 * +-----------------------------------------------------+
409 */ 394 */
410 printk(KERN_INFO "R [desc] [buf addr 63:0 ] " 395 pr_info("R [desc] [buf addr 63:0 ] [reserved 63:0 ] [bi->dma ] [bi->skb] <-- Ext (Read) format\n");
411 "[reserved 63:0 ] [bi->dma ] "
412 "[bi->skb] <-- Ext (Read) format\n");
413 /* Extended Receive Descriptor (Write-Back) Format 396 /* Extended Receive Descriptor (Write-Back) Format
414 * 397 *
415 * 63 48 47 32 31 24 23 4 3 0 398 * 63 48 47 32 31 24 23 4 3 0
@@ -423,29 +406,37 @@ rx_ring_summary:
423 * +------------------------------------------------------+ 406 * +------------------------------------------------------+
424 * 63 48 47 32 31 20 19 0 407 * 63 48 47 32 31 20 19 0
425 */ 408 */
426 printk(KERN_INFO "RWB[desc] [cs ipid mrq] " 409 pr_info("RWB[desc] [cs ipid mrq] [vt ln xe xs] [bi->skb] <-- Ext (Write-Back) format\n");
427 "[vt ln xe xs] "
428 "[bi->skb] <-- Ext (Write-Back) format\n");
429 410
430 for (i = 0; i < rx_ring->count; i++) { 411 for (i = 0; i < rx_ring->count; i++) {
412 const char *next_desc;
413
431 buffer_info = &rx_ring->buffer_info[i]; 414 buffer_info = &rx_ring->buffer_info[i];
432 rx_desc = E1000_RX_DESC_EXT(*rx_ring, i); 415 rx_desc = E1000_RX_DESC_EXT(*rx_ring, i);
433 u1 = (struct my_u1 *)rx_desc; 416 u1 = (struct my_u1 *)rx_desc;
434 staterr = le32_to_cpu(rx_desc->wb.upper.status_error); 417 staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
418
419 if (i == rx_ring->next_to_use)
420 next_desc = " NTU";
421 else if (i == rx_ring->next_to_clean)
422 next_desc = " NTC";
423 else
424 next_desc = "";
425
435 if (staterr & E1000_RXD_STAT_DD) { 426 if (staterr & E1000_RXD_STAT_DD) {
436 /* Descriptor Done */ 427 /* Descriptor Done */
437 printk(KERN_INFO "RWB[0x%03X] %016llX " 428 pr_info("%s[0x%03X] %016llX %016llX ---------------- %p%s\n",
438 "%016llX ---------------- %p", i, 429 "RWB", i,
439 (unsigned long long)le64_to_cpu(u1->a), 430 (unsigned long long)le64_to_cpu(u1->a),
440 (unsigned long long)le64_to_cpu(u1->b), 431 (unsigned long long)le64_to_cpu(u1->b),
441 buffer_info->skb); 432 buffer_info->skb, next_desc);
442 } else { 433 } else {
443 printk(KERN_INFO "R [0x%03X] %016llX " 434 pr_info("%s[0x%03X] %016llX %016llX %016llX %p%s\n",
444 "%016llX %016llX %p", i, 435 "R ", i,
445 (unsigned long long)le64_to_cpu(u1->a), 436 (unsigned long long)le64_to_cpu(u1->a),
446 (unsigned long long)le64_to_cpu(u1->b), 437 (unsigned long long)le64_to_cpu(u1->b),
447 (unsigned long long)buffer_info->dma, 438 (unsigned long long)buffer_info->dma,
448 buffer_info->skb); 439 buffer_info->skb, next_desc);
449 440
450 if (netif_msg_pktdata(adapter)) 441 if (netif_msg_pktdata(adapter))
451 print_hex_dump(KERN_INFO, "", 442 print_hex_dump(KERN_INFO, "",
@@ -456,13 +447,6 @@ rx_ring_summary:
456 adapter->rx_buffer_len, 447 adapter->rx_buffer_len,
457 true); 448 true);
458 } 449 }
459
460 if (i == rx_ring->next_to_use)
461 printk(KERN_CONT " NTU\n");
462 else if (i == rx_ring->next_to_clean)
463 printk(KERN_CONT " NTC\n");
464 else
465 printk(KERN_CONT "\n");
466 } 450 }
467 } 451 }
468 452
@@ -1222,8 +1206,7 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
1222 adapter->flags2 |= FLAG2_IS_DISCARDING; 1206 adapter->flags2 |= FLAG2_IS_DISCARDING;
1223 1207
1224 if (adapter->flags2 & FLAG2_IS_DISCARDING) { 1208 if (adapter->flags2 & FLAG2_IS_DISCARDING) {
1225 e_dbg("Packet Split buffers didn't pick up the full " 1209 e_dbg("Packet Split buffers didn't pick up the full packet\n");
1226 "packet\n");
1227 dev_kfree_skb_irq(skb); 1210 dev_kfree_skb_irq(skb);
1228 if (staterr & E1000_RXD_STAT_EOP) 1211 if (staterr & E1000_RXD_STAT_EOP)
1229 adapter->flags2 &= ~FLAG2_IS_DISCARDING; 1212 adapter->flags2 &= ~FLAG2_IS_DISCARDING;
@@ -1238,8 +1221,7 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
1238 length = le16_to_cpu(rx_desc->wb.middle.length0); 1221 length = le16_to_cpu(rx_desc->wb.middle.length0);
1239 1222
1240 if (!length) { 1223 if (!length) {
1241 e_dbg("Last part of the packet spanning multiple " 1224 e_dbg("Last part of the packet spanning multiple descriptors\n");
1242 "descriptors\n");
1243 dev_kfree_skb_irq(skb); 1225 dev_kfree_skb_irq(skb);
1244 goto next_desc; 1226 goto next_desc;
1245 } 1227 }
@@ -1917,8 +1899,7 @@ void e1000e_set_interrupt_capability(struct e1000_adapter *adapter)
1917 return; 1899 return;
1918 } 1900 }
1919 /* MSI-X failed, so fall through and try MSI */ 1901 /* MSI-X failed, so fall through and try MSI */
1920 e_err("Failed to initialize MSI-X interrupts. " 1902 e_err("Failed to initialize MSI-X interrupts. Falling back to MSI interrupts.\n");
1921 "Falling back to MSI interrupts.\n");
1922 e1000e_reset_interrupt_capability(adapter); 1903 e1000e_reset_interrupt_capability(adapter);
1923 } 1904 }
1924 adapter->int_mode = E1000E_INT_MODE_MSI; 1905 adapter->int_mode = E1000E_INT_MODE_MSI;
@@ -1928,8 +1909,7 @@ void e1000e_set_interrupt_capability(struct e1000_adapter *adapter)
1928 adapter->flags |= FLAG_MSI_ENABLED; 1909 adapter->flags |= FLAG_MSI_ENABLED;
1929 } else { 1910 } else {
1930 adapter->int_mode = E1000E_INT_MODE_LEGACY; 1911 adapter->int_mode = E1000E_INT_MODE_LEGACY;
1931 e_err("Failed to initialize MSI interrupts. Falling " 1912 e_err("Failed to initialize MSI interrupts. Falling back to legacy interrupts.\n");
1932 "back to legacy interrupts.\n");
1933 } 1913 }
1934 /* Fall through */ 1914 /* Fall through */
1935 case E1000E_INT_MODE_LEGACY: 1915 case E1000E_INT_MODE_LEGACY:
@@ -3113,79 +3093,147 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
3113} 3093}
3114 3094
3115/** 3095/**
3116 * e1000_update_mc_addr_list - Update Multicast addresses 3096 * e1000e_write_mc_addr_list - write multicast addresses to MTA
3117 * @hw: pointer to the HW structure 3097 * @netdev: network interface device structure
3118 * @mc_addr_list: array of multicast addresses to program 3098 *
3119 * @mc_addr_count: number of multicast addresses to program 3099 * Writes multicast address list to the MTA hash table.
3100 * Returns: -ENOMEM on failure
3101 * 0 on no addresses written
3102 * X on writing X addresses to MTA
3103 */
3104static int e1000e_write_mc_addr_list(struct net_device *netdev)
3105{
3106 struct e1000_adapter *adapter = netdev_priv(netdev);
3107 struct e1000_hw *hw = &adapter->hw;
3108 struct netdev_hw_addr *ha;
3109 u8 *mta_list;
3110 int i;
3111
3112 if (netdev_mc_empty(netdev)) {
3113 /* nothing to program, so clear mc list */
3114 hw->mac.ops.update_mc_addr_list(hw, NULL, 0);
3115 return 0;
3116 }
3117
3118 mta_list = kzalloc(netdev_mc_count(netdev) * ETH_ALEN, GFP_ATOMIC);
3119 if (!mta_list)
3120 return -ENOMEM;
3121
3122 /* update_mc_addr_list expects a packed array of only addresses. */
3123 i = 0;
3124 netdev_for_each_mc_addr(ha, netdev)
3125 memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN);
3126
3127 hw->mac.ops.update_mc_addr_list(hw, mta_list, i);
3128 kfree(mta_list);
3129
3130 return netdev_mc_count(netdev);
3131}
3132
3133/**
3134 * e1000e_write_uc_addr_list - write unicast addresses to RAR table
3135 * @netdev: network interface device structure
3120 * 3136 *
3121 * Updates the Multicast Table Array. 3137 * Writes unicast address list to the RAR table.
3122 * The caller must have a packed mc_addr_list of multicast addresses. 3138 * Returns: -ENOMEM on failure/insufficient address space
3139 * 0 on no addresses written
3140 * X on writing X addresses to the RAR table
3123 **/ 3141 **/
3124static void e1000_update_mc_addr_list(struct e1000_hw *hw, u8 *mc_addr_list, 3142static int e1000e_write_uc_addr_list(struct net_device *netdev)
3125 u32 mc_addr_count)
3126{ 3143{
3127 hw->mac.ops.update_mc_addr_list(hw, mc_addr_list, mc_addr_count); 3144 struct e1000_adapter *adapter = netdev_priv(netdev);
3145 struct e1000_hw *hw = &adapter->hw;
3146 unsigned int rar_entries = hw->mac.rar_entry_count;
3147 int count = 0;
3148
3149 /* save a rar entry for our hardware address */
3150 rar_entries--;
3151
3152 /* save a rar entry for the LAA workaround */
3153 if (adapter->flags & FLAG_RESET_OVERWRITES_LAA)
3154 rar_entries--;
3155
3156 /* return ENOMEM indicating insufficient memory for addresses */
3157 if (netdev_uc_count(netdev) > rar_entries)
3158 return -ENOMEM;
3159
3160 if (!netdev_uc_empty(netdev) && rar_entries) {
3161 struct netdev_hw_addr *ha;
3162
3163 /*
3164 * write the addresses in reverse order to avoid write
3165 * combining
3166 */
3167 netdev_for_each_uc_addr(ha, netdev) {
3168 if (!rar_entries)
3169 break;
3170 e1000e_rar_set(hw, ha->addr, rar_entries--);
3171 count++;
3172 }
3173 }
3174
3175 /* zero out the remaining RAR entries not used above */
3176 for (; rar_entries > 0; rar_entries--) {
3177 ew32(RAH(rar_entries), 0);
3178 ew32(RAL(rar_entries), 0);
3179 }
3180 e1e_flush();
3181
3182 return count;
3128} 3183}
3129 3184
3130/** 3185/**
3131 * e1000_set_multi - Multicast and Promiscuous mode set 3186 * e1000e_set_rx_mode - secondary unicast, Multicast and Promiscuous mode set
3132 * @netdev: network interface device structure 3187 * @netdev: network interface device structure
3133 * 3188 *
3134 * The set_multi entry point is called whenever the multicast address 3189 * The ndo_set_rx_mode entry point is called whenever the unicast or multicast
3135 * list or the network interface flags are updated. This routine is 3190 * address list or the network interface flags are updated. This routine is
3136 * responsible for configuring the hardware for proper multicast, 3191 * responsible for configuring the hardware for proper unicast, multicast,
3137 * promiscuous mode, and all-multi behavior. 3192 * promiscuous mode, and all-multi behavior.
3138 **/ 3193 **/
3139static void e1000_set_multi(struct net_device *netdev) 3194static void e1000e_set_rx_mode(struct net_device *netdev)
3140{ 3195{
3141 struct e1000_adapter *adapter = netdev_priv(netdev); 3196 struct e1000_adapter *adapter = netdev_priv(netdev);
3142 struct e1000_hw *hw = &adapter->hw; 3197 struct e1000_hw *hw = &adapter->hw;
3143 struct netdev_hw_addr *ha;
3144 u8 *mta_list;
3145 u32 rctl; 3198 u32 rctl;
3146 3199
3147 /* Check for Promiscuous and All Multicast modes */ 3200 /* Check for Promiscuous and All Multicast modes */
3148
3149 rctl = er32(RCTL); 3201 rctl = er32(RCTL);
3150 3202
3203 /* clear the affected bits */
3204 rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE);
3205
3151 if (netdev->flags & IFF_PROMISC) { 3206 if (netdev->flags & IFF_PROMISC) {
3152 rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE); 3207 rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE);
3153 rctl &= ~E1000_RCTL_VFE;
3154 /* Do not hardware filter VLANs in promisc mode */ 3208 /* Do not hardware filter VLANs in promisc mode */
3155 e1000e_vlan_filter_disable(adapter); 3209 e1000e_vlan_filter_disable(adapter);
3156 } else { 3210 } else {
3211 int count;
3157 if (netdev->flags & IFF_ALLMULTI) { 3212 if (netdev->flags & IFF_ALLMULTI) {
3158 rctl |= E1000_RCTL_MPE; 3213 rctl |= E1000_RCTL_MPE;
3159 rctl &= ~E1000_RCTL_UPE;
3160 } else { 3214 } else {
3161 rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE); 3215 /*
3216 * Write addresses to the MTA, if the attempt fails
3217 * then we should just turn on promiscuous mode so
3218 * that we can at least receive multicast traffic
3219 */
3220 count = e1000e_write_mc_addr_list(netdev);
3221 if (count < 0)
3222 rctl |= E1000_RCTL_MPE;
3162 } 3223 }
3163 e1000e_vlan_filter_enable(adapter); 3224 e1000e_vlan_filter_enable(adapter);
3164 }
3165
3166 ew32(RCTL, rctl);
3167
3168 if (!netdev_mc_empty(netdev)) {
3169 int i = 0;
3170
3171 mta_list = kmalloc(netdev_mc_count(netdev) * 6, GFP_ATOMIC);
3172 if (!mta_list)
3173 return;
3174
3175 /* prepare a packed array of only addresses. */
3176 netdev_for_each_mc_addr(ha, netdev)
3177 memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN);
3178
3179 e1000_update_mc_addr_list(hw, mta_list, i);
3180 kfree(mta_list);
3181 } else {
3182 /* 3225 /*
3183 * if we're called from probe, we might not have 3226 * Write addresses to available RAR registers, if there is not
3184 * anything to do here, so clear out the list 3227 * sufficient space to store all the addresses then enable
3228 * unicast promiscuous mode
3185 */ 3229 */
3186 e1000_update_mc_addr_list(hw, NULL, 0); 3230 count = e1000e_write_uc_addr_list(netdev);
3231 if (count < 0)
3232 rctl |= E1000_RCTL_UPE;
3187 } 3233 }
3188 3234
3235 ew32(RCTL, rctl);
3236
3189 if (netdev->features & NETIF_F_HW_VLAN_RX) 3237 if (netdev->features & NETIF_F_HW_VLAN_RX)
3190 e1000e_vlan_strip_enable(adapter); 3238 e1000e_vlan_strip_enable(adapter);
3191 else 3239 else
@@ -3198,7 +3246,7 @@ static void e1000_set_multi(struct net_device *netdev)
3198 **/ 3246 **/
3199static void e1000_configure(struct e1000_adapter *adapter) 3247static void e1000_configure(struct e1000_adapter *adapter)
3200{ 3248{
3201 e1000_set_multi(adapter->netdev); 3249 e1000e_set_rx_mode(adapter->netdev);
3202 3250
3203 e1000_restore_vlan(adapter); 3251 e1000_restore_vlan(adapter);
3204 e1000_init_manageability_pt(adapter); 3252 e1000_init_manageability_pt(adapter);
@@ -4168,16 +4216,13 @@ static void e1000_print_link_info(struct e1000_adapter *adapter)
4168 u32 ctrl = er32(CTRL); 4216 u32 ctrl = er32(CTRL);
4169 4217
4170 /* Link status message must follow this format for user tools */ 4218 /* Link status message must follow this format for user tools */
4171 printk(KERN_INFO "e1000e: %s NIC Link is Up %d Mbps %s, " 4219 printk(KERN_INFO "e1000e: %s NIC Link is Up %d Mbps %s Duplex, Flow Control: %s\n",
4172 "Flow Control: %s\n", 4220 adapter->netdev->name,
4173 adapter->netdev->name, 4221 adapter->link_speed,
4174 adapter->link_speed, 4222 adapter->link_duplex == FULL_DUPLEX ? "Full" : "Half",
4175 (adapter->link_duplex == FULL_DUPLEX) ? 4223 (ctrl & E1000_CTRL_TFCE) && (ctrl & E1000_CTRL_RFCE) ? "Rx/Tx" :
4176 "Full Duplex" : "Half Duplex", 4224 (ctrl & E1000_CTRL_RFCE) ? "Rx" :
4177 ((ctrl & E1000_CTRL_TFCE) && (ctrl & E1000_CTRL_RFCE)) ? 4225 (ctrl & E1000_CTRL_TFCE) ? "Tx" : "None");
4178 "Rx/Tx" :
4179 ((ctrl & E1000_CTRL_RFCE) ? "Rx" :
4180 ((ctrl & E1000_CTRL_TFCE) ? "Tx" : "None")));
4181} 4226}
4182 4227
4183static bool e1000e_has_link(struct e1000_adapter *adapter) 4228static bool e1000e_has_link(struct e1000_adapter *adapter)
@@ -4323,10 +4368,7 @@ static void e1000_watchdog_task(struct work_struct *work)
4323 e1e_rphy(hw, PHY_AUTONEG_EXP, &autoneg_exp); 4368 e1e_rphy(hw, PHY_AUTONEG_EXP, &autoneg_exp);
4324 4369
4325 if (!(autoneg_exp & NWAY_ER_LP_NWAY_CAPS)) 4370 if (!(autoneg_exp & NWAY_ER_LP_NWAY_CAPS))
4326 e_info("Autonegotiated half duplex but" 4371 e_info("Autonegotiated half duplex but link partner cannot autoneg. Try forcing full duplex if link gets many collisions.\n");
4327 " link partner cannot autoneg. "
4328 " Try forcing full duplex if "
4329 "link gets many collisions.\n");
4330 } 4372 }
4331 4373
4332 /* adjust timeout factor according to speed/duplex */ 4374 /* adjust timeout factor according to speed/duplex */
@@ -5110,8 +5152,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
5110 if ((adapter->hw.mac.type == e1000_pch2lan) && 5152 if ((adapter->hw.mac.type == e1000_pch2lan) &&
5111 !(adapter->flags2 & FLAG2_CRC_STRIPPING) && 5153 !(adapter->flags2 & FLAG2_CRC_STRIPPING) &&
5112 (new_mtu > ETH_DATA_LEN)) { 5154 (new_mtu > ETH_DATA_LEN)) {
5113 e_err("Jumbo Frames not supported on 82579 when CRC " 5155 e_err("Jumbo Frames not supported on 82579 when CRC stripping is disabled.\n");
5114 "stripping is disabled.\n");
5115 return -EINVAL; 5156 return -EINVAL;
5116 } 5157 }
5117 5158
@@ -5331,7 +5372,7 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake,
5331 5372
5332 if (wufc) { 5373 if (wufc) {
5333 e1000_setup_rctl(adapter); 5374 e1000_setup_rctl(adapter);
5334 e1000_set_multi(netdev); 5375 e1000e_set_rx_mode(netdev);
5335 5376
5336 /* turn on all-multi mode if wake on multicast is enabled */ 5377 /* turn on all-multi mode if wake on multicast is enabled */
5337 if (wufc & E1000_WUFC_MC) { 5378 if (wufc & E1000_WUFC_MC) {
@@ -5527,8 +5568,8 @@ static int __e1000_resume(struct pci_dev *pdev)
5527 phy_data & E1000_WUS_MC ? "Multicast Packet" : 5568 phy_data & E1000_WUS_MC ? "Multicast Packet" :
5528 phy_data & E1000_WUS_BC ? "Broadcast Packet" : 5569 phy_data & E1000_WUS_BC ? "Broadcast Packet" :
5529 phy_data & E1000_WUS_MAG ? "Magic Packet" : 5570 phy_data & E1000_WUS_MAG ? "Magic Packet" :
5530 phy_data & E1000_WUS_LNKC ? "Link Status " 5571 phy_data & E1000_WUS_LNKC ?
5531 " Change" : "other"); 5572 "Link Status Change" : "other");
5532 } 5573 }
5533 e1e_wphy(&adapter->hw, BM_WUS, ~0); 5574 e1e_wphy(&adapter->hw, BM_WUS, ~0);
5534 } else { 5575 } else {
@@ -5859,10 +5900,11 @@ static void e1000_eeprom_checks(struct e1000_adapter *adapter)
5859 } 5900 }
5860} 5901}
5861 5902
5862static int e1000_set_features(struct net_device *netdev, u32 features) 5903static int e1000_set_features(struct net_device *netdev,
5904 netdev_features_t features)
5863{ 5905{
5864 struct e1000_adapter *adapter = netdev_priv(netdev); 5906 struct e1000_adapter *adapter = netdev_priv(netdev);
5865 u32 changed = features ^ netdev->features; 5907 netdev_features_t changed = features ^ netdev->features;
5866 5908
5867 if (changed & (NETIF_F_TSO | NETIF_F_TSO6)) 5909 if (changed & (NETIF_F_TSO | NETIF_F_TSO6))
5868 adapter->flags |= FLAG_TSO_FORCE; 5910 adapter->flags |= FLAG_TSO_FORCE;
@@ -5884,7 +5926,7 @@ static const struct net_device_ops e1000e_netdev_ops = {
5884 .ndo_stop = e1000_close, 5926 .ndo_stop = e1000_close,
5885 .ndo_start_xmit = e1000_xmit_frame, 5927 .ndo_start_xmit = e1000_xmit_frame,
5886 .ndo_get_stats64 = e1000e_get_stats64, 5928 .ndo_get_stats64 = e1000e_get_stats64,
5887 .ndo_set_rx_mode = e1000_set_multi, 5929 .ndo_set_rx_mode = e1000e_set_rx_mode,
5888 .ndo_set_mac_address = e1000_set_mac, 5930 .ndo_set_mac_address = e1000_set_mac,
5889 .ndo_change_mtu = e1000_change_mtu, 5931 .ndo_change_mtu = e1000_change_mtu,
5890 .ndo_do_ioctl = e1000_ioctl, 5932 .ndo_do_ioctl = e1000_ioctl,
@@ -5949,8 +5991,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
5949 err = dma_set_coherent_mask(&pdev->dev, 5991 err = dma_set_coherent_mask(&pdev->dev,
5950 DMA_BIT_MASK(32)); 5992 DMA_BIT_MASK(32));
5951 if (err) { 5993 if (err) {
5952 dev_err(&pdev->dev, "No usable DMA " 5994 dev_err(&pdev->dev, "No usable DMA configuration, aborting\n");
5953 "configuration, aborting\n");
5954 goto err_dma; 5995 goto err_dma;
5955 } 5996 }
5956 } 5997 }
@@ -6076,6 +6117,8 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
6076 NETIF_F_TSO6 | 6117 NETIF_F_TSO6 |
6077 NETIF_F_HW_CSUM); 6118 NETIF_F_HW_CSUM);
6078 6119
6120 netdev->priv_flags |= IFF_UNICAST_FLT;
6121
6079 if (pci_using_dac) { 6122 if (pci_using_dac) {
6080 netdev->features |= NETIF_F_HIGHDMA; 6123 netdev->features |= NETIF_F_HIGHDMA;
6081 netdev->vlan_features |= NETIF_F_HIGHDMA; 6124 netdev->vlan_features |= NETIF_F_HIGHDMA;