|
@@ -363,6 +363,7 @@ static void intel_check_link ( struct net_device *netdev ) {
|
363
|
363
|
static int intel_create_ring ( struct intel_nic *intel,
|
364
|
364
|
struct intel_ring *ring ) {
|
365
|
365
|
physaddr_t address;
|
|
366
|
+ uint32_t dctl;
|
366
|
367
|
|
367
|
368
|
/* Allocate descriptor ring. Align ring on its own size to
|
368
|
369
|
* prevent any possible page-crossing errors due to hardware
|
|
@@ -393,6 +394,11 @@ static int intel_create_ring ( struct intel_nic *intel,
|
393
|
394
|
writel ( 0, ( intel->regs + ring->reg + INTEL_xDH ) );
|
394
|
395
|
writel ( 0, ( intel->regs + ring->reg + INTEL_xDT ) );
|
395
|
396
|
|
|
397
|
+ /* Enable ring */
|
|
398
|
+ dctl = readl ( intel->regs + ring->reg + INTEL_xDCTL );
|
|
399
|
+ dctl |= INTEL_xDCTL_ENABLE;
|
|
400
|
+ writel ( dctl, intel->regs + ring->reg + INTEL_xDCTL );
|
|
401
|
+
|
396
|
402
|
DBGC ( intel, "INTEL %p ring %05x is at [%08llx,%08llx)\n",
|
397
|
403
|
intel, ring->reg, ( ( unsigned long long ) address ),
|
398
|
404
|
( ( unsigned long long ) address + ring->len ) );
|