Mainly checkpatch fixes
cover Mainly checkpatch fixes
Resending patches. Reduces the number of checkpatch warnings, removing forward declarations and whitespace changes.
Last patch removes some redundant code.
Mark Einon (12):
staging: et131x: Remove unused rx_ring.recv_buffer_pool
staging: et131x: Remove redundant et131x_reset_recv() call
staging: et131x: Remove call to find pci pm capability
staging: et131x: Remove unused rx_ring.recv_packet_pool
staging: et131x: Remove some forward declarations
staging: et131x: Remove forward declaration of et131x_adapter_setup
staging: et131x: Remove more forward declarations
staging: et131x: Remove yet more forward declarations
staging: et131x: Remove even more forward declarations
staging: et131x: Remove last of the forward declarations
staging: et131x: Mainly whitespace changes to appease checkpatch
staging: et131x: Remove redundant check and return statement
drivers/staging/et131x/et131x.c | 2465 +++++++++++++++++++-------------------- 1 files changed, 1201 insertions(+), 1264 deletions(-)
PATCH 1/12 staging: et131x: Remove unused rx_ring.recv_buffer_pool
rx_ring.recv_buffer_pool is unused, even in the original driver code. Remove from stuct, and also remove some comments regarding it.
--- drivers/staging/et131x/et131x.c | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-)
drivers/staging/et131x/et131x.c +0 -6
@@ -329,8 +329,6 @@ struct rx_ring {struct rx_status_block *rx_status_block;dma_addr_t rx_status_bus; -struct list_head recv_buff_pool; -/* RECV */ struct list_head recv_list;u32 num_ready_recv;
@@ -2307,10 +2305,6 @@ void et131x_rx_dma_memory_free(struct et131x_adapter *adapter) rx_ring->rx_status_block =NULL ; } -/* Free receive buffer pool */ - -/* Free receive packet pool */ -/* Destroy the lookaside (RFD) pool */ if (adapter->flags & fMP_ADAPTER_RECV_LOOKASIDE) {kmem_cache_destroy (rx_ring->recv_lookaside);
Signature · 1 line
1.7.6.4
PATCH 2/12 staging: et131x: Remove redundant et131x_reset_recv() call
In reply to Mark EinonThis call doesn't do anything useful - only warns on the receive list being empty, so removed it.
--- drivers/staging/et131x/et131x.c | 18 ------------------ 1 files changed, 0 insertions(+), 18 deletions(-)
drivers/staging/et131x/et131x.c +0 -18
@@ -605,7 +605,6 @@ int32_t et131x_mii_write(struct et131x_adapter *adapter,void et131x_rx_dma_memory_free (struct et131x_adapter *adapter);void et131x_rx_dma_disable (struct et131x_adapter *adapter);void et131x_rx_dma_enable (struct et131x_adapter *adapter); -void et131x_reset_recv (struct et131x_adapter *adapter);void et131x_init_send (struct et131x_adapter *adapter);void et131x_tx_dma_enable (struct et131x_adapter *adapter);
@@ -1839,9 +1838,6 @@ void et1310_disable_phy_coma(struct et131x_adapter *adapter)/* Re-initialize the send structures */ et131x_init_send (adapter); -/* Reset the RFD list and re-start RU */ -et131x_reset_recv (adapter); -/* Bring the device back to the state it was during init prior to * autonegotiation being complete. This way, when we get the auto-neg * complete interrupt, we can complete init by calling ConfigMacREGS2.
@@ -2882,17 +2878,6 @@ static struct rfd *nic_rx_pkts(struct et131x_adapter *adapter) }/** -* et131x_reset_recv - Reset the receive list -* @adapter: pointer to our adapter -* -* Assumption, Rcv spinlock has been acquired. -*/ -void et131x_reset_recv (struct et131x_adapter *adapter) -{ -WARN_ON (list_empty (&adapter->rx_ring.recv_list)); -} - -/** * et131x_handle_recv_interrupt - Interrupt handler for receive processing * @adapter: pointer to our adapter *
@@ -4251,9 +4236,6 @@ static void et131x_adjust_link(struct net_device *netdev)/* Re-initialize the send structures */ et131x_init_send (adapter); -/* Reset the RFD list and re-start RU */ -et131x_reset_recv (adapter); -/* * Bring the device back to the state it was during * init prior to autonegotiation being complete. This
Signature · 1 line
1.7.6.4
PATCH 3/12 staging: et131x: Remove call to find pci pm capability
In reply to Mark Einonpci_find_capability is called, but not used and is now redundant as power management is handled elsewhere. Removed.
--- drivers/staging/et131x/et131x.c | 14 -------------- 1 files changed, 0 insertions(+), 14 deletions(-)
drivers/staging/et131x/et131x.c +0 -14
@@ -4356,7 +4356,6 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev, const struct pci_device_id *ent) {int result; -int pm_cap;struct net_device *netdev;struct et131x_adapter *adapter;int ii;
@@ -4380,19 +4379,6 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,pci_set_master (pdev); -/* Query PCI for Power Mgmt Capabilities -* -* NOTE: Now reading PowerMgmt in another location; is this still -* needed? -*/ - pm_cap =pci_find_capability (pdev,PCI_CAP_ID_PM ); -if (!pm_cap) { -dev_err (&pdev->dev, -"Cannot find Power Management capabilities\n" ); - result = -EIO ; - goto err_release_res; - } -/* Check the DMA addressing support of this device */ if (!dma_set_mask (&pdev->dev,DMA_BIT_MASK (64 ))) { result =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 ));
Signature · 1 line
1.7.6.4
PATCH 4/12 staging: et131x: Remove unused rx_ring.recv_packet_pool
In reply to Mark Einontx_ring.recv_packet_pool is unused, even in the original driver code. Removed.
--- drivers/staging/et131x/et131x.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
drivers/staging/et131x/et131x.c +0 -2
@@ -337,8 +337,6 @@ struct rx_ring {bool unfinished_receives; -struct list_head recv_packet_pool; -/* lookaside lists */ struct kmem_cache *recv_lookaside; };
Signature · 1 line
1.7.6.4
PATCH 5/12 staging: et131x: Remove some forward declarations
In reply to Mark EinonMoved functions in et131x.c file to remove the following forward declarations:
et131x_align_allocated_memoryet131x_disable_interruptset131x_enable_interruptset131x_error_timer_handler
--- drivers/staging/et131x/et131x.c | 126 ++++++++++++++++++-------------------- 1 files changed, 60 insertions(+), 66 deletions(-)
drivers/staging/et131x/et131x.c +60 -66
@@ -576,12 +576,6 @@ struct et131x_adapter {struct net_device_stats net_stats; }; -void et131x_error_timer_handler (unsigned long data); -void et131x_enable_interrupts (struct et131x_adapter *adapter); -void et131x_disable_interrupts (struct et131x_adapter *adapter); -void et131x_align_allocated_memory (struct et131x_adapter *adapter, -u64 *phys_addr, -u64 *offset,u64 mask);void et131x_adapter_setup (struct et131x_adapter *adapter);void et131x_soft_reset (struct et131x_adapter *adapter);void et131x_isr_handler (struct work_struct *work);
@@ -1872,6 +1866,33 @@ static inline u32 bump_free_buff_ring(u32 *free_buff_ring, u32 limit) }/** +* et131x_align_allocated_memory - Align allocated memory on a given boundary +* @adapter: pointer to our adapter structure +* @phys_addr: pointer to Physical address +* @offset: pointer to the offset variable +* @mask: correct mask +*/ +void et131x_align_allocated_memory (struct et131x_adapter *adapter, +uint64_t *phys_addr, +uint64_t *offset,uint64_t mask) +{ +uint64_t new_addr; + + *offset =0 ; + + new_addr = *phys_addr & ~mask; + +if (new_addr != *phys_addr) { +/* Move to next aligned block */ + new_addr += mask +1 ; +/* Return offset for adjusting virt addr */ + *offset = new_addr - *phys_addr; +/* Return new physical address */ + *phys_addr = new_addr; + } +} + +/** * et131x_rx_dma_memory_alloc * @adapter: pointer to our private adapter structure *
@@ -3938,6 +3959,27 @@ static int et131x_pci_init(struct et131x_adapter *adapter, }/** +* et131x_enable_interrupts - enable interrupt +* @adapter: et131x device +* +* Enable the appropriate interrupts on the ET131x according to our +* configuration +*/ +void et131x_enable_interrupts (struct et131x_adapter *adapter) +{ +u32 mask; + +/* Enable all global interrupts */ +if (adapter->flowcontrol ==FLOW_TXONLY || + adapter->flowcontrol ==FLOW_BOTH ) + mask =INT_MASK_ENABLE ; +else + mask =INT_MASK_ENABLE_NO_FLOW ; + +writel (mask, &adapter->regs->global.int_mask); +} + +/** * et131x_error_timer_handler * @data: timer-specific variable; here a pointer to our adapter structure *
@@ -4071,33 +4113,6 @@ void et131x_soft_reset(struct et131x_adapter *adapter) }/** -* et131x_align_allocated_memory - Align allocated memory on a given boundary -* @adapter: pointer to our adapter structure -* @phys_addr: pointer to Physical address -* @offset: pointer to the offset variable -* @mask: correct mask -*/ -void et131x_align_allocated_memory (struct et131x_adapter *adapter, -uint64_t *phys_addr, -uint64_t *offset,uint64_t mask) -{ -uint64_t new_addr; - - *offset =0 ; - - new_addr = *phys_addr & ~mask; - -if (new_addr != *phys_addr) { -/* Move to next aligned block */ - new_addr += mask +1 ; -/* Return offset for adjusting virt addr */ - *offset = new_addr - *phys_addr; -/* Return new physical address */ - *phys_addr = new_addr; - } -} - -/** * et131x_adapter_memory_alloc * @adapter: pointer to our private adapter structure *
@@ -4339,6 +4354,18 @@ static struct et131x_adapter *et131x_adapter_init(struct net_device *netdev, }/** +* et131x_disable_interrupts - interrupt disable +* @adapter: et131x device +* +* Block all interrupts from the et131x device at the device itself +*/ +void et131x_disable_interrupts (struct et131x_adapter *adapter) +{ +/* Disable all global interrupts */ +writel (INT_MASK_DISABLE , &adapter->regs->global.int_mask); +} + +/** * et131x_pci_setup - Perform device initialization * @pdev: a pointer to the device's pci_dev structure * @ent: this device's entry in the pci_device_id table
@@ -4633,39 +4660,6 @@ module_exit(et131x_cleanup_module);/* ISR functions */ /** -* et131x_enable_interrupts - enable interrupt -* @adapter: et131x device -* -* Enable the appropriate interrupts on the ET131x according to our -* configuration -*/ -void et131x_enable_interrupts (struct et131x_adapter *adapter) -{ -u32 mask; - -/* Enable all global interrupts */ -if (adapter->flowcontrol ==FLOW_TXONLY || - adapter->flowcontrol ==FLOW_BOTH ) - mask =INT_MASK_ENABLE ; -else - mask =INT_MASK_ENABLE_NO_FLOW ; - -writel (mask, &adapter->regs->global.int_mask); -} - -/** -* et131x_disable_interrupts - interrupt disable -* @adapter: et131x device -* -* Block all interrupts from the et131x device at the device itself -*/ -void et131x_disable_interrupts (struct et131x_adapter *adapter) -{ -/* Disable all global interrupts */ -writel (INT_MASK_DISABLE , &adapter->regs->global.int_mask); -} - -/** * et131x_isr - The Interrupt Service Routine for the driver. * @irq: the IRQ on which the interrupt was received. * @dev_id: device-specific info (here a pointer to a net_device struct)
Signature · 1 line
1.7.6.4
PATCH 6/12 staging: et131x: Remove forward declaration of et131x_adapter_setup
In reply to Mark EinonAlso associated function movements within et131x.c file
--- drivers/staging/et131x/et131x.c | 445 +++++++++++++++++++-------------------- 1 files changed, 222 insertions(+), 223 deletions(-)
drivers/staging/et131x/et131x.c +222 -223
@@ -576,7 +576,6 @@ struct et131x_adapter {struct net_device_stats net_stats; }; -void et131x_adapter_setup (struct et131x_adapter *adapter);void et131x_soft_reset (struct et131x_adapter *adapter);void et131x_isr_handler (struct work_struct *work);void et1310_setup_device_for_multicast (struct et131x_adapter *adapter);
@@ -1731,6 +1730,53 @@ void et131x_xcvr_init(struct et131x_adapter *adapter) } } +/** +* et131x_configure_global_regs - configure JAGCore global regs +* @adapter: pointer to our adapter structure +* +* Used to configure the global registers on the JAGCore +*/ +void et131x_configure_global_regs (struct et131x_adapter *adapter) +{ +struct global_regs __iomem *regs = &adapter->regs->global; + +writel (0 , ®s->rxq_start_addr); +writel (INTERNAL_MEM_SIZE -1 , ®s->txq_end_addr); + +if (adapter->registry_jumbo_packet <2048 ) { +/* Tx / RxDMA and Tx/Rx MAC interfaces have a 1k word +* block of RAM that the driver can split between Tx +* and Rx as it desires. Our default is to split it +* 50/50: +*/ +writel (PARM_RX_MEM_END_DEF , ®s->rxq_end_addr); +writel (PARM_RX_MEM_END_DEF +1 , ®s->txq_start_addr); + }else if (adapter->registry_jumbo_packet <8192 ) { +/* For jumbo packets > 2k but < 8k, split 50-50. */ +writel (INTERNAL_MEM_RX_OFFSET , ®s->rxq_end_addr); +writel (INTERNAL_MEM_RX_OFFSET +1 , ®s->txq_start_addr); + }else { +/* 9216 is the only packet size greater than 8k that +* is available. The Tx buffer has to be big enough +* for one whole packet on the Tx side. We'll make +* the Tx 9408, and give the rest to Rx +*/ +writel (0x01b3 , ®s->rxq_end_addr); +writel (0x01b4 , ®s->txq_start_addr); + } + +/* Initialize the loopback register. Disable all loopbacks. */ +writel (0 , ®s->loopback); + +/* MSI Register */ +writel (0 , ®s->msi_config); + +/* By default, disable the watchdog timer. It will be enabled when +* a packet is queued. +*/ +writel (0 , ®s->watchdog_timer); +} +/* PM functions */ /**
@@ -1749,6 +1795,181 @@ int et1310_in_phy_coma(struct et131x_adapter *adapter) }/** +* et131x_config_rx_dma_regs - Start of Rx_DMA init sequence +* @adapter: pointer to our adapter structure +*/ +void et131x_config_rx_dma_regs (struct et131x_adapter *adapter) +{ +struct rxdma_regs __iomem *rx_dma = &adapter->regs->rxdma; +struct rx_ring *rx_local = &adapter->rx_ring; +struct fbr_desc *fbr_entry; +u32 entry; +u32 psr_num_des; +unsigned long flags; + +/* Halt RXDMA to perform the reconfigure. */ +et131x_rx_dma_disable (adapter); + +/* Load the completion writeback physical address +* +* NOTE : dma_alloc_coherent(), used above to alloc DMA regions, +* ALWAYS returns SAC (32-bit) addresses. If DAC (64-bit) addresses +* are ever returned, make sure the high part is retrieved here +* before storing the adjusted address. +*/ +writel ((u32) ((u64 )rx_local->rx_status_bus >>32 ), + &rx_dma->dma_wb_base_hi); +writel ((u32 ) rx_local->rx_status_bus, &rx_dma->dma_wb_base_lo); + +memset (rx_local->rx_status_block,0 ,sizeof (struct rx_status_block )); + +/* Set the address and parameters of the packet status ring into the +* 1310's registers +*/ +writel ((u32) ((u64 )rx_local->ps_ring_physaddr >>32 ), + &rx_dma->psr_base_hi); +writel ((u32 ) rx_local->ps_ring_physaddr, &rx_dma->psr_base_lo); +writel (rx_local->psr_num_entries -1 , &rx_dma->psr_num_des); +writel (0 , &rx_dma->psr_full_offset); + + psr_num_des =readl (&rx_dma->psr_num_des) &0xFFF ; +writel ((psr_num_des *LO_MARK_PERCENT_FOR_PSR ) /100 , + &rx_dma->psr_min_des); + +spin_lock_irqsave (&adapter->rcv_lock, flags); + +/* These local variables track the PSR in the adapter structure */ + rx_local->local_psr_full =0 ; + +/* Now's the best time to initialize FBR1 contents */ + fbr_entry = (struct fbr_desc *) rx_local->fbr[0 ]->ring_virtaddr; +for (entry =0 ; entry < rx_local->fbr[0 ]->num_entries; entry++) { + fbr_entry->addr_hi = rx_local->fbr[0 ]->bus_high[entry]; + fbr_entry->addr_lo = rx_local->fbr[0 ]->bus_low[entry]; + fbr_entry->word2 = entry; + fbr_entry++; + } + +/* Set the address and parameters of Free buffer ring 1 (and 0 if +* required) into the 1310's registers +*/ +writel ((u32) (rx_local->fbr[0 ]->real_physaddr >>32 ), + &rx_dma->fbr1_base_hi); +writel ((u32 ) rx_local->fbr[0 ]->real_physaddr, &rx_dma->fbr1_base_lo); +writel (rx_local->fbr[0 ]->num_entries -1 , &rx_dma->fbr1_num_des); +writel (ET_DMA10_WRAP , &rx_dma->fbr1_full_offset); + +/* This variable tracks the free buffer ring 1 full position, so it +* has to match the above. +*/ + rx_local->fbr[0 ]->local_full =ET_DMA10_WRAP ; +writel ( + ((rx_local->fbr[0 ]->num_entries *LO_MARK_PERCENT_FOR_RX ) /100 ) -1 , + &rx_dma->fbr1_min_des); + +#ifdef USE_FBR0 +/* Now's the best time to initialize FBR0 contents */ + fbr_entry = (struct fbr_desc *) rx_local->fbr[1 ]->ring_virtaddr; +for (entry =0 ; entry < rx_local->fbr[1 ]->num_entries; entry++) { + fbr_entry->addr_hi = rx_local->fbr[1 ]->bus_high[entry]; + fbr_entry->addr_lo = rx_local->fbr[1 ]->bus_low[entry]; + fbr_entry->word2 = entry; + fbr_entry++; + } + +writel ((u32) (rx_local->fbr[1 ]->real_physaddr >>32 ), + &rx_dma->fbr0_base_hi); +writel ((u32 ) rx_local->fbr[1 ]->real_physaddr, &rx_dma->fbr0_base_lo); +writel (rx_local->fbr[1 ]->num_entries -1 , &rx_dma->fbr0_num_des); +writel (ET_DMA10_WRAP , &rx_dma->fbr0_full_offset); + +/* This variable tracks the free buffer ring 0 full position, so it +* has to match the above. +*/ + rx_local->fbr[1 ]->local_full =ET_DMA10_WRAP ; +writel ( + ((rx_local->fbr[1 ]->num_entries *LO_MARK_PERCENT_FOR_RX ) /100 ) -1 , + &rx_dma->fbr0_min_des); +#endif + +/* Program the number of packets we will receive before generating an +* interrupt. +* For version B silicon, this value gets updated once autoneg is +*complete. +*/ +writel (PARM_RX_NUM_BUFS_DEF , &rx_dma->num_pkt_done); + +/* The "time_done" is not working correctly to coalesce interrupts +* after a given time period, but rather is giving us an interrupt +* regardless of whether we have received packets. +* This value gets updated once autoneg is complete. +*/ +writel (PARM_RX_TIME_INT_DEF , &rx_dma->max_pkt_time); + +spin_unlock_irqrestore (&adapter->rcv_lock, flags); +} + +/** +* et131x_config_tx_dma_regs - Set up the tx dma section of the JAGCore. +* @adapter: pointer to our private adapter structure +* +* Configure the transmit engine with the ring buffers we have created +* and prepare it for use. +*/ +void et131x_config_tx_dma_regs (struct et131x_adapter *adapter) +{ +struct txdma_regs __iomem *txdma = &adapter->regs->txdma; + +/* Load the hardware with the start of the transmit descriptor ring. */ +writel ((u32) ((u64 )adapter->tx_ring.tx_desc_ring_pa >>32 ), + &txdma->pr_base_hi); +writel ((u32 ) adapter->tx_ring.tx_desc_ring_pa, + &txdma->pr_base_lo); + +/* Initialise the transmit DMA engine */ +writel (NUM_DESC_PER_RING_TX -1 , &txdma->pr_num_des); + +/* Load the completion writeback physical address */ +writel ((u32)((u64 )adapter->tx_ring.tx_status_pa >>32 ), + &txdma->dma_wb_base_hi); +writel ((u32 )adapter->tx_ring.tx_status_pa, &txdma->dma_wb_base_lo); + + *adapter->tx_ring.tx_status =0 ; + +writel (0 , &txdma->service_request); + adapter->tx_ring.send_idx =0 ; +} + +/** +* et131x_adapter_setup - Set the adapter up as per cassini+ documentation +* @adapter: pointer to our private adapter structure +* +* Returns 0 on success, errno on failure (as defined in errno.h) +*/ +void et131x_adapter_setup (struct et131x_adapter *adapter) +{ +/* Configure the JAGCore */ +et131x_configure_global_regs (adapter); + +et1310_config_mac_regs1 (adapter); + +/* Configure the MMC registers */ +/* All we need to do is initialize the Memory Control Register */ +writel (ET_MMC_ENABLE , &adapter->regs->mmc.mmc_ctrl); + +et1310_config_rxmac_regs (adapter); +et1310_config_txmac_regs (adapter); + +et131x_config_rx_dma_regs (adapter); +et131x_config_tx_dma_regs (adapter); + +et1310_config_macstat_regs (adapter); + +et1310_phy_power_down (adapter,0 ); +et131x_xcvr_init (adapter); +} + +/** * et1310_enable_phy_coma - called when network cable is unplugged * @adapter: pointer to our adapter structure *
@@ -2390,121 +2611,6 @@ int et131x_init_recv(struct et131x_adapter *adapter) }/** -* et131x_config_rx_dma_regs - Start of Rx_DMA init sequence -* @adapter: pointer to our adapter structure -*/ -void et131x_config_rx_dma_regs (struct et131x_adapter *adapter) -{ -struct rxdma_regs __iomem *rx_dma = &adapter->regs->rxdma; -struct rx_ring *rx_local = &adapter->rx_ring; -struct fbr_desc *fbr_entry; -u32 entry; -u32 psr_num_des; -unsigned long flags; - -/* Halt RXDMA to perform the reconfigure. */ -et131x_rx_dma_disable (adapter); - -/* Load the completion writeback physical address -* -* NOTE : dma_alloc_coherent(), used above to alloc DMA regions, -* ALWAYS returns SAC (32-bit) addresses. If DAC (64-bit) addresses -* are ever returned, make sure the high part is retrieved here -* before storing the adjusted address. -*/ -writel ((u32) ((u64 )rx_local->rx_status_bus >>32 ), - &rx_dma->dma_wb_base_hi); -writel ((u32 ) rx_local->rx_status_bus, &rx_dma->dma_wb_base_lo); - -memset (rx_local->rx_status_block,0 ,sizeof (struct rx_status_block )); - -/* Set the address and parameters of the packet status ring into the -* 1310's registers -*/ -writel ((u32) ((u64 )rx_local->ps_ring_physaddr >>32 ), - &rx_dma->psr_base_hi); -writel ((u32 ) rx_local->ps_ring_physaddr, &rx_dma->psr_base_lo); -writel (rx_local->psr_num_entries -1 , &rx_dma->psr_num_des); -writel (0 , &rx_dma->psr_full_offset); - - psr_num_des =readl (&rx_dma->psr_num_des) &0xFFF ; -writel ((psr_num_des *LO_MARK_PERCENT_FOR_PSR ) /100 , - &rx_dma->psr_min_des); - -spin_lock_irqsave (&adapter->rcv_lock, flags); - -/* These local variables track the PSR in the adapter structure */ - rx_local->local_psr_full =0 ; - -/* Now's the best time to initialize FBR1 contents */ - fbr_entry = (struct fbr_desc *) rx_local->fbr[0 ]->ring_virtaddr; -for (entry =0 ; entry < rx_local->fbr[0 ]->num_entries; entry++) { - fbr_entry->addr_hi = rx_local->fbr[0 ]->bus_high[entry]; - fbr_entry->addr_lo = rx_local->fbr[0 ]->bus_low[entry]; - fbr_entry->word2 = entry; - fbr_entry++; - } - -/* Set the address and parameters of Free buffer ring 1 (and 0 if -* required) into the 1310's registers -*/ -writel ((u32) (rx_local->fbr[0 ]->real_physaddr >>32 ), - &rx_dma->fbr1_base_hi); -writel ((u32 ) rx_local->fbr[0 ]->real_physaddr, &rx_dma->fbr1_base_lo); -writel (rx_local->fbr[0 ]->num_entries -1 , &rx_dma->fbr1_num_des); -writel (ET_DMA10_WRAP , &rx_dma->fbr1_full_offset); - -/* This variable tracks the free buffer ring 1 full position, so it -* has to match the above. -*/ - rx_local->fbr[0 ]->local_full =ET_DMA10_WRAP ; -writel ( - ((rx_local->fbr[0 ]->num_entries *LO_MARK_PERCENT_FOR_RX ) /100 ) -1 , - &rx_dma->fbr1_min_des); - -#ifdef USE_FBR0 -/* Now's the best time to initialize FBR0 contents */ - fbr_entry = (struct fbr_desc *) rx_local->fbr[1 ]->ring_virtaddr; -for (entry =0 ; entry < rx_local->fbr[1 ]->num_entries; entry++) { - fbr_entry->addr_hi = rx_local->fbr[1 ]->bus_high[entry]; - fbr_entry->addr_lo = rx_local->fbr[1 ]->bus_low[entry]; - fbr_entry->word2 = entry; - fbr_entry++; - } - -writel ((u32) (rx_local->fbr[1 ]->real_physaddr >>32 ), - &rx_dma->fbr0_base_hi); -writel ((u32 ) rx_local->fbr[1 ]->real_physaddr, &rx_dma->fbr0_base_lo); -writel (rx_local->fbr[1 ]->num_entries -1 , &rx_dma->fbr0_num_des); -writel (ET_DMA10_WRAP , &rx_dma->fbr0_full_offset); - -/* This variable tracks the free buffer ring 0 full position, so it -* has to match the above. -*/ - rx_local->fbr[1 ]->local_full =ET_DMA10_WRAP ; -writel ( - ((rx_local->fbr[1 ]->num_entries *LO_MARK_PERCENT_FOR_RX ) /100 ) -1 , - &rx_dma->fbr0_min_des); -#endif - -/* Program the number of packets we will receive before generating an -* interrupt. -* For version B silicon, this value gets updated once autoneg is -*complete. -*/ -writel (PARM_RX_NUM_BUFS_DEF , &rx_dma->num_pkt_done); - -/* The "time_done" is not working correctly to coalesce interrupts -* after a given time period, but rather is giving us an interrupt -* regardless of whether we have received packets. -* This value gets updated once autoneg is complete. -*/ -writel (PARM_RX_TIME_INT_DEF , &rx_dma->max_pkt_time); - -spin_unlock_irqrestore (&adapter->rcv_lock, flags); -} - -/** * et131x_set_rx_dma_timer - Set the heartbeat timer according to line rate. * @adapter: pointer to our adapter structure */
@@ -3046,37 +3152,6 @@ void et131x_tx_dma_memory_free(struct et131x_adapter *adapter) }/** -* et131x_config_tx_dma_regs - Set up the tx dma section of the JAGCore. -* @adapter: pointer to our private adapter structure -* -* Configure the transmit engine with the ring buffers we have created -* and prepare it for use. -*/ -void et131x_config_tx_dma_regs (struct et131x_adapter *adapter) -{ -struct txdma_regs __iomem *txdma = &adapter->regs->txdma; - -/* Load the hardware with the start of the transmit descriptor ring. */ -writel ((u32) ((u64 )adapter->tx_ring.tx_desc_ring_pa >>32 ), - &txdma->pr_base_hi); -writel ((u32 ) adapter->tx_ring.tx_desc_ring_pa, - &txdma->pr_base_lo); - -/* Initialise the transmit DMA engine */ -writel (NUM_DESC_PER_RING_TX -1 , &txdma->pr_num_des); - -/* Load the completion writeback physical address */ -writel ((u32)((u64 )adapter->tx_ring.tx_status_pa >>32 ), - &txdma->dma_wb_base_hi); -writel ((u32 )adapter->tx_ring.tx_status_pa, &txdma->dma_wb_base_lo); - - *adapter->tx_ring.tx_status =0 ; - -writel (0 , &txdma->service_request); - adapter->tx_ring.send_idx =0 ; -} - -/** * et131x_tx_dma_disable - Stop of Tx_DMA on the ET1310 * @adapter: pointer to our adapter structure */
@@ -4022,82 +4097,6 @@ void et131x_error_timer_handler(unsigned long data) }/** -* et131x_configure_global_regs - configure JAGCore global regs -* @adapter: pointer to our adapter structure -* -* Used to configure the global registers on the JAGCore -*/ -void et131x_configure_global_regs (struct et131x_adapter *adapter) -{ -struct global_regs __iomem *regs = &adapter->regs->global; - -writel (0 , ®s->rxq_start_addr); -writel (INTERNAL_MEM_SIZE -1 , ®s->txq_end_addr); - -if (adapter->registry_jumbo_packet <2048 ) { -/* Tx / RxDMA and Tx/Rx MAC interfaces have a 1k word -* block of RAM that the driver can split between Tx -* and Rx as it desires. Our default is to split it -* 50/50: -*/ -writel (PARM_RX_MEM_END_DEF , ®s->rxq_end_addr); -writel (PARM_RX_MEM_END_DEF +1 , ®s->txq_start_addr); - }else if (adapter->registry_jumbo_packet <8192 ) { -/* For jumbo packets > 2k but < 8k, split 50-50. */ -writel (INTERNAL_MEM_RX_OFFSET , ®s->rxq_end_addr); -writel (INTERNAL_MEM_RX_OFFSET +1 , ®s->txq_start_addr); - }else { -/* 9216 is the only packet size greater than 8k that -* is available. The Tx buffer has to be big enough -* for one whole packet on the Tx side. We'll make -* the Tx 9408, and give the rest to Rx -*/ -writel (0x01b3 , ®s->rxq_end_addr); -writel (0x01b4 , ®s->txq_start_addr); - } - -/* Initialize the loopback register. Disable all loopbacks. */ -writel (0 , ®s->loopback); - -/* MSI Register */ -writel (0 , ®s->msi_config); - -/* By default, disable the watchdog timer. It will be enabled when -* a packet is queued. -*/ -writel (0 , ®s->watchdog_timer); -} - -/** -* et131x_adapter_setup - Set the adapter up as per cassini+ documentation -* @adapter: pointer to our private adapter structure -* -* Returns 0 on success, errno on failure (as defined in errno.h) -*/ -void et131x_adapter_setup (struct et131x_adapter *adapter) -{ -/* Configure the JAGCore */ -et131x_configure_global_regs (adapter); - -et1310_config_mac_regs1 (adapter); - -/* Configure the MMC registers */ -/* All we need to do is initialize the Memory Control Register */ -writel (ET_MMC_ENABLE , &adapter->regs->mmc.mmc_ctrl); - -et1310_config_rxmac_regs (adapter); -et1310_config_txmac_regs (adapter); - -et131x_config_rx_dma_regs (adapter); -et131x_config_tx_dma_regs (adapter); - -et1310_config_macstat_regs (adapter); - -et1310_phy_power_down (adapter,0 ); -et131x_xcvr_init (adapter); -} - -/** * et131x_soft_reset - Issue a soft reset to the hardware, complete for ET1310 * @adapter: pointer to our private adapter structure */
Signature · 1 line
1.7.6.4
PATCH 7/12 staging: et131x: Remove more forward declarations
In reply to Mark EinonMoved functions in et131x.c file to remove the following forward declarations:
et131x_soft_resetet131x_isr_handleret131x_device_alloc
--- drivers/staging/et131x/et131x.c | 505 +++++++++++++++++++-------------------- 1 files changed, 251 insertions(+), 254 deletions(-)
drivers/staging/et131x/et131x.c +251 -254
@@ -576,13 +576,10 @@ struct et131x_adapter {struct net_device_stats net_stats; }; -void et131x_soft_reset (struct et131x_adapter *adapter); -void et131x_isr_handler (struct work_struct *work);void et1310_setup_device_for_multicast (struct et131x_adapter *adapter);void et1310_setup_device_for_unicast (struct et131x_adapter *adapter);void et131x_up (struct net_device *netdev);void et131x_down (struct net_device *netdev); -struct net_device *et131x_device_alloc (void );void et131x_enable_txrx (struct net_device *netdev);void et131x_disable_txrx (struct net_device *netdev);int et1310_in_phy_coma (struct et131x_adapter *adapter);
@@ -1970,6 +1967,21 @@ void et131x_adapter_setup(struct et131x_adapter *adapter) }/** +* et131x_soft_reset - Issue a soft reset to the hardware, complete for ET1310 +* @adapter: pointer to our private adapter structure +*/ +void et131x_soft_reset (struct et131x_adapter *adapter) +{ +/* Disable MAC Core */ +writel (0xc00f0000 , &adapter->regs->mac.cfg1); + +/* Set everything to a reset value */ +writel (0x7F , &adapter->regs->global.sw_reset); +writel (0x000f0000 , &adapter->regs->mac.cfg1); +writel (0x00000000 , &adapter->regs->mac.cfg1); +} + +/** * et1310_enable_phy_coma - called when network cable is unplugged * @adapter: pointer to our adapter structure *
@@ -4097,21 +4109,6 @@ void et131x_error_timer_handler(unsigned long data) }/** -* et131x_soft_reset - Issue a soft reset to the hardware, complete for ET1310 -* @adapter: pointer to our private adapter structure -*/ -void et131x_soft_reset (struct et131x_adapter *adapter) -{ -/* Disable MAC Core */ -writel (0xc00f0000 , &adapter->regs->mac.cfg1); - -/* Set everything to a reset value */ -writel (0x7F , &adapter->regs->global.sw_reset); -writel (0x000f0000 , &adapter->regs->mac.cfg1); -writel (0x00000000 , &adapter->regs->mac.cfg1); -} - -/** * et131x_adapter_memory_alloc * @adapter: pointer to our private adapter structure *
@@ -4365,200 +4362,6 @@ void et131x_disable_interrupts(struct et131x_adapter *adapter) }/** -* et131x_pci_setup - Perform device initialization -* @pdev: a pointer to the device's pci_dev structure -* @ent: this device's entry in the pci_device_id table -* -* Returns 0 on success, errno on failure (as defined in errno.h) -* -* Registered in the pci_driver structure, this function is called when the -* PCI subsystem finds a new PCI device which matches the information -* contained in the pci_device_id table. This routine is the equivalent to -* a device insertion routine. -*/ -static int __devinit et131x_pci_setup (struct pci_dev *pdev, -const struct pci_device_id *ent) -{ -int result; -struct net_device *netdev; -struct et131x_adapter *adapter; -int ii; - - result =pci_enable_device (pdev); -if (result) { -dev_err (&pdev->dev,"pci_enable_device() failed\n" ); - goto err_out; - } - -/* Perform some basic PCI checks */ -if (!(pci_resource_flags (pdev,0 ) &IORESOURCE_MEM )) { -dev_err (&pdev->dev,"Can't find PCI device's base address\n" ); - goto err_disable; - } - -if (pci_request_regions (pdev,DRIVER_NAME )) { -dev_err (&pdev->dev,"Can't get PCI resources\n" ); - goto err_disable; - } - -pci_set_master (pdev); - -/* Check the DMA addressing support of this device */ -if (!dma_set_mask (&pdev->dev,DMA_BIT_MASK (64 ))) { - result =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 )); -if (result) { -dev_err (&pdev->dev, -"Unable to obtain 64 bit DMA for consistent allocations\n" ); - goto err_release_res; - } - }else if (!dma_set_mask (&pdev->dev,DMA_BIT_MASK (32 ))) { - result =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (32 )); -if (result) { -dev_err (&pdev->dev, -"Unable to obtain 32 bit DMA for consistent allocations\n" ); - goto err_release_res; - } - }else { -dev_err (&pdev->dev,"No usable DMA addressing method\n" ); - result = -EIO ; - goto err_release_res; - } - -/* Allocate netdev and private adapter structs */ - netdev =et131x_device_alloc (); -if (!netdev) { -dev_err (&pdev->dev,"Couldn't alloc netdev struct\n" ); - result = -ENOMEM ; - goto err_release_res; - } - -SET_NETDEV_DEV (netdev, &pdev->dev); -et131x_set_ethtool_ops (netdev); - - adapter =et131x_adapter_init (netdev, pdev); - -/* Initialise the PCI setup for the device */ -et131x_pci_init (adapter, pdev); - -/* Map the bus-relative registers to system virtual memory */ - adapter->regs =pci_ioremap_bar (pdev,0 ); -if (!adapter->regs) { -dev_err (&pdev->dev,"Cannot map device registers\n" ); - result = -ENOMEM ; - goto err_free_dev; - } - -/* If Phy COMA mode was enabled when we went down, disable it here. */ -writel (ET_PMCSR_INIT , &adapter->regs->global.pm_csr); - -/* Issue a global reset to the et1310 */ -et131x_soft_reset (adapter); - -/* Disable all interrupts (paranoid) */ -et131x_disable_interrupts (adapter); - -/* Allocate DMA memory */ - result =et131x_adapter_memory_alloc (adapter); -if (result) { -dev_err (&pdev->dev,"Could not alloc adapater memory (DMA)\n" ); - goto err_iounmap; - } - -/* Init send data structures */ -et131x_init_send (adapter); - -/* Set up the task structure for the ISR's deferred handler */ -INIT_WORK (&adapter->task, et131x_isr_handler); - -/* Copy address into the net_device struct */ -memcpy (netdev->dev_addr, adapter->addr,ETH_ALEN ); - -/* Init variable for counting how long we do not have link status */ - adapter->boot_coma =0 ; -et1310_disable_phy_coma (adapter); - -/* Setup the mii_bus struct */ - adapter->mii_bus =mdiobus_alloc (); -if (!adapter->mii_bus) { -dev_err (&pdev->dev,"Alloc of mii_bus struct failed\n" ); - goto err_mem_free; - } - - adapter->mii_bus->name ="et131x_eth_mii" ; -snprintf (adapter->mii_bus->id,MII_BUS_ID_SIZE ,"%x" , - (adapter->pdev->bus->number <<8 ) | adapter->pdev->devfn); - adapter->mii_bus->priv = netdev; - adapter->mii_bus->read = et131x_mdio_read; - adapter->mii_bus->write = et131x_mdio_write; - adapter->mii_bus->reset = et131x_mdio_reset; - adapter->mii_bus->irq =kmalloc (sizeof (int )*PHY_MAX_ADDR ,GFP_KERNEL ); -if (!adapter->mii_bus->irq) { -dev_err (&pdev->dev,"mii_bus irq allocation failed\n" ); - goto err_mdio_free; - } - -for (ii =0 ; ii <PHY_MAX_ADDR ; ii++) - adapter->mii_bus->irq[ii] =PHY_POLL ; - -if (mdiobus_register (adapter->mii_bus)) { -dev_err (&pdev->dev,"failed to register MII bus\n" ); -mdiobus_free (adapter->mii_bus); - goto err_mdio_free_irq; - } - -if (et131x_mii_probe (netdev)) { -dev_err (&pdev->dev,"failed to probe MII bus\n" ); - goto err_mdio_unregister; - } - -/* Setup et1310 as per the documentation */ -et131x_adapter_setup (adapter); - -/* We can enable interrupts now -* -* NOTE - Because registration of interrupt handler is done in the -* device's open(), defer enabling device interrupts to that -* point -*/ - -/* Register the net_device struct with the Linux network layer */ - result =register_netdev (netdev); -if (result !=0 ) { -dev_err (&pdev->dev,"register_netdev() failed\n" ); - goto err_mdio_unregister; - } - -/* Register the net_device struct with the PCI subsystem. Save a copy -* of the PCI config space for this device now that the device has -* been initialized, just in case it needs to be quickly restored. -*/ -pci_set_drvdata (pdev, netdev); -pci_save_state (adapter->pdev); - -return result; - -err_mdio_unregister: -mdiobus_unregister (adapter->mii_bus); -err_mdio_free_irq: -kfree (adapter->mii_bus->irq); -err_mdio_free: -mdiobus_free (adapter->mii_bus); -err_mem_free: -et131x_adapter_memory_free (adapter); -err_iounmap: -iounmap (adapter->regs); -err_free_dev: -pci_dev_put (pdev); -free_netdev (netdev); -err_release_res: -pci_release_regions (pdev); -err_disable: -pci_disable_device (pdev); -err_out: -return result; -} - -/** * et131x_pci_remove * @pdev: a pointer to the device's pci_dev structure *
@@ -4614,48 +4417,6 @@ static int et131x_resume(struct device *dev)return 0 ; } -static SIMPLE_DEV_PM_OPS(et131x_pm_ops, et131x_suspend, et131x_resume); -#define ET131X_PM_OPS (&et131x_pm_ops) -#else -#define ET131X_PM_OPS NULL -#endif - -static DEFINE_PCI_DEVICE_TABLE (et131x_pci_table) = { - {PCI_VDEVICE (ATT ,ET131X_PCI_DEVICE_ID_GIG ),0UL }, - {PCI_VDEVICE (ATT ,ET131X_PCI_DEVICE_ID_FAST ),0UL }, - {0 ,} -}; -MODULE_DEVICE_TABLE (pci, et131x_pci_table); - -static struct pci_driver et131x_driver = { - .name =DRIVER_NAME , - .id_table = et131x_pci_table, - .probe = et131x_pci_setup, - .remove =__devexit_p (et131x_pci_remove), - .driver.pm =ET131X_PM_OPS , -}; - -/** -* et131x_init_module - The "main" entry point called on driver initialization -* -* Returns 0 on success, errno on failure (as defined in errno.h) -*/ -static int __init et131x_init_module (void ) -{ -return pci_register_driver (&et131x_driver); -} - -/** -* et131x_cleanup_module - The entry point called on driver cleanup -*/ -static void __exit et131x_cleanup_module(void) -{ -pci_unregister_driver (&et131x_driver); -} - -module_init (et131x_init_module); -module_exit (et131x_cleanup_module); -/* ISR functions */ /**
@@ -5528,3 +5289,239 @@ struct net_device *et131x_device_alloc(void) return netdev; } +/** +* et131x_pci_setup - Perform device initialization +* @pdev: a pointer to the device's pci_dev structure +* @ent: this device's entry in the pci_device_id table +* +* Returns 0 on success, errno on failure (as defined in errno.h) +* +* Registered in the pci_driver structure, this function is called when the +* PCI subsystem finds a new PCI device which matches the information +* contained in the pci_device_id table. This routine is the equivalent to +* a device insertion routine. +*/ +static int __devinit et131x_pci_setup (struct pci_dev *pdev, +const struct pci_device_id *ent) +{ +int result; +struct net_device *netdev; +struct et131x_adapter *adapter; +int ii; + + result =pci_enable_device (pdev); +if (result) { +dev_err (&pdev->dev,"pci_enable_device() failed\n" ); + goto err_out; + } + +/* Perform some basic PCI checks */ +if (!(pci_resource_flags (pdev,0 ) &IORESOURCE_MEM )) { +dev_err (&pdev->dev,"Can't find PCI device's base address\n" ); + goto err_disable; + } + +if (pci_request_regions (pdev,DRIVER_NAME )) { +dev_err (&pdev->dev,"Can't get PCI resources\n" ); + goto err_disable; + } + +pci_set_master (pdev); + +/* Check the DMA addressing support of this device */ +if (!dma_set_mask (&pdev->dev,DMA_BIT_MASK (64 ))) { + result =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 )); +if (result) { +dev_err (&pdev->dev, +"Unable to obtain 64 bit DMA for consistent allocations\n" ); + goto err_release_res; + } + }else if (!dma_set_mask (&pdev->dev,DMA_BIT_MASK (32 ))) { + result =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (32 )); +if (result) { +dev_err (&pdev->dev, +"Unable to obtain 32 bit DMA for consistent allocations\n" ); + goto err_release_res; + } + }else { +dev_err (&pdev->dev,"No usable DMA addressing method\n" ); + result = -EIO ; + goto err_release_res; + } + +/* Allocate netdev and private adapter structs */ + netdev =et131x_device_alloc (); +if (!netdev) { +dev_err (&pdev->dev,"Couldn't alloc netdev struct\n" ); + result = -ENOMEM ; + goto err_release_res; + } + +SET_NETDEV_DEV (netdev, &pdev->dev); +et131x_set_ethtool_ops (netdev); + + adapter =et131x_adapter_init (netdev, pdev); + +/* Initialise the PCI setup for the device */ +et131x_pci_init (adapter, pdev); + +/* Map the bus-relative registers to system virtual memory */ + adapter->regs =pci_ioremap_bar (pdev,0 ); +if (!adapter->regs) { +dev_err (&pdev->dev,"Cannot map device registers\n" ); + result = -ENOMEM ; + goto err_free_dev; + } + +/* If Phy COMA mode was enabled when we went down, disable it here. */ +writel (ET_PMCSR_INIT , &adapter->regs->global.pm_csr); + +/* Issue a global reset to the et1310 */ +et131x_soft_reset (adapter); + +/* Disable all interrupts (paranoid) */ +et131x_disable_interrupts (adapter); + +/* Allocate DMA memory */ + result =et131x_adapter_memory_alloc (adapter); +if (result) { +dev_err (&pdev->dev,"Could not alloc adapater memory (DMA)\n" ); + goto err_iounmap; + } + +/* Init send data structures */ +et131x_init_send (adapter); + +/* Set up the task structure for the ISR's deferred handler */ +INIT_WORK (&adapter->task, et131x_isr_handler); + +/* Copy address into the net_device struct */ +memcpy (netdev->dev_addr, adapter->addr,ETH_ALEN ); + +/* Init variable for counting how long we do not have link status */ + adapter->boot_coma =0 ; +et1310_disable_phy_coma (adapter); + +/* Setup the mii_bus struct */ + adapter->mii_bus =mdiobus_alloc (); +if (!adapter->mii_bus) { +dev_err (&pdev->dev,"Alloc of mii_bus struct failed\n" ); + goto err_mem_free; + } + + adapter->mii_bus->name ="et131x_eth_mii" ; +snprintf (adapter->mii_bus->id,MII_BUS_ID_SIZE ,"%x" , + (adapter->pdev->bus->number <<8 ) | adapter->pdev->devfn); + adapter->mii_bus->priv = netdev; + adapter->mii_bus->read = et131x_mdio_read; + adapter->mii_bus->write = et131x_mdio_write; + adapter->mii_bus->reset = et131x_mdio_reset; + adapter->mii_bus->irq =kmalloc (sizeof (int )*PHY_MAX_ADDR ,GFP_KERNEL ); +if (!adapter->mii_bus->irq) { +dev_err (&pdev->dev,"mii_bus irq allocation failed\n" ); + goto err_mdio_free; + } + +for (ii =0 ; ii <PHY_MAX_ADDR ; ii++) + adapter->mii_bus->irq[ii] =PHY_POLL ; + +if (mdiobus_register (adapter->mii_bus)) { +dev_err (&pdev->dev,"failed to register MII bus\n" ); +mdiobus_free (adapter->mii_bus); + goto err_mdio_free_irq; + } + +if (et131x_mii_probe (netdev)) { +dev_err (&pdev->dev,"failed to probe MII bus\n" ); + goto err_mdio_unregister; + } + +/* Setup et1310 as per the documentation */ +et131x_adapter_setup (adapter); + +/* We can enable interrupts now +* +* NOTE - Because registration of interrupt handler is done in the +* device's open(), defer enabling device interrupts to that +* point +*/ + +/* Register the net_device struct with the Linux network layer */ + result =register_netdev (netdev); +if (result !=0 ) { +dev_err (&pdev->dev,"register_netdev() failed\n" ); + goto err_mdio_unregister; + } + +/* Register the net_device struct with the PCI subsystem. Save a copy +* of the PCI config space for this device now that the device has +* been initialized, just in case it needs to be quickly restored. +*/ +pci_set_drvdata (pdev, netdev); +pci_save_state (adapter->pdev); + +return result; + +err_mdio_unregister: +mdiobus_unregister (adapter->mii_bus); +err_mdio_free_irq: +kfree (adapter->mii_bus->irq); +err_mdio_free: +mdiobus_free (adapter->mii_bus); +err_mem_free: +et131x_adapter_memory_free (adapter); +err_iounmap: +iounmap (adapter->regs); +err_free_dev: +pci_dev_put (pdev); +free_netdev (netdev); +err_release_res: +pci_release_regions (pdev); +err_disable: +pci_disable_device (pdev); +err_out: +return result; +} + +static SIMPLE_DEV_PM_OPS(et131x_pm_ops, et131x_suspend, et131x_resume); +#define ET131X_PM_OPS (&et131x_pm_ops) +#else +#define ET131X_PM_OPS NULL +#endif + +static DEFINE_PCI_DEVICE_TABLE (et131x_pci_table) = { + {PCI_VDEVICE (ATT ,ET131X_PCI_DEVICE_ID_GIG ),0UL }, + {PCI_VDEVICE (ATT ,ET131X_PCI_DEVICE_ID_FAST ),0UL }, + {0 ,} +}; +MODULE_DEVICE_TABLE (pci, et131x_pci_table); + +static struct pci_driver et131x_driver = { + .name =DRIVER_NAME , + .id_table = et131x_pci_table, + .probe = et131x_pci_setup, + .remove =__devexit_p (et131x_pci_remove), + .driver.pm =ET131X_PM_OPS , +}; + +/** +* et131x_init_module - The "main" entry point called on driver initialization +* +* Returns 0 on success, errno on failure (as defined in errno.h) +*/ +static int __init et131x_init_module (void ) +{ +return pci_register_driver (&et131x_driver); +} + +/** +* et131x_cleanup_module - The entry point called on driver cleanup +*/ +static void __exit et131x_cleanup_module(void) +{ +pci_unregister_driver (&et131x_driver); +} + +module_init (et131x_init_module); +module_exit (et131x_cleanup_module); +
Signature · 1 line
1.7.6.4
PATCH 8/12 staging: et131x: Remove yet more forward declarations
In reply to Mark EinonMoved functions in et131x.c file to remove the forward declarations of:
et1310_setup_device_for_multicastet1310_setup_device_for_unicastet131x_upet131x_downet131x_enable_txrxet131x_disable_txrx
--- drivers/staging/et131x/et131x.c | 434 +++++++++++++++++++-------------------- 1 files changed, 214 insertions(+), 220 deletions(-)
drivers/staging/et131x/et131x.c +214 -220
@@ -576,12 +576,6 @@ struct et131x_adapter {struct net_device_stats net_stats; }; -void et1310_setup_device_for_multicast (struct et131x_adapter *adapter); -void et1310_setup_device_for_unicast (struct et131x_adapter *adapter); -void et131x_up (struct net_device *netdev); -void et131x_down (struct net_device *netdev); -void et131x_enable_txrx (struct net_device *netdev); -void et131x_disable_txrx (struct net_device *netdev);int et1310_in_phy_coma (struct et131x_adapter *adapter); void et1310_phy_access_mii_bit(struct et131x_adapter *adapter, u16 action,
@@ -1025,6 +1019,95 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter) } } +void et1310_setup_device_for_multicast (struct et131x_adapter *adapter) +{ +struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac; +uint32_t nIndex; +uint32_t result; +uint32_t hash1 =0 ; +uint32_t hash2 =0 ; +uint32_t hash3 =0 ; +uint32_t hash4 =0 ; +u32 pm_csr; + +/* If ET131X_PACKET_TYPE_MULTICAST is specified, then we provision +* the multi-cast LIST. If it is NOT specified, (and "ALL" is not +* specified) then we should pass NO multi-cast addresses to the +* driver. +*/ +if (adapter->packet_filter &ET131X_PACKET_TYPE_MULTICAST ) { +/* Loop through our multicast array and set up the device */ +for (nIndex =0 ; nIndex < adapter->multicast_addr_count; + nIndex++) { + result =ether_crc (6 , adapter->multicast_list[nIndex]); + + result = (result &0x3F800000 ) >>23 ; + +if (result <32 ) { + hash1 |= (1 << result); + }else if ((31 < result) && (result <64 )) { + result -=32 ; + hash2 |= (1 << result); + }else if ((63 < result) && (result <96 )) { + result -=64 ; + hash3 |= (1 << result); + }else { + result -=96 ; + hash4 |= (1 << result); + } + } + } + +/* Write out the new hash to the device */ + pm_csr =readl (&adapter->regs->global.pm_csr); +if (!et1310_in_phy_coma (adapter)) { +writel (hash1, &rxmac->multi_hash1); +writel (hash2, &rxmac->multi_hash2); +writel (hash3, &rxmac->multi_hash3); +writel (hash4, &rxmac->multi_hash4); + } +} + +void et1310_setup_device_for_unicast (struct et131x_adapter *adapter) +{ +struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac; +u32 uni_pf1; +u32 uni_pf2; +u32 uni_pf3; +u32 pm_csr; + +/* Set up unicast packet filter reg 3 to be the first two octets of +* the MAC address for both address +* +* Set up unicast packet filter reg 2 to be the octets 2 - 5 of the +* MAC address for second address +* +* Set up unicast packet filter reg 3 to be the octets 2 - 5 of the +* MAC address for first address +*/ + uni_pf3 = (adapter->addr[0 ] <<ET_UNI_PF_ADDR2_1_SHIFT ) | + (adapter->addr[1 ] <<ET_UNI_PF_ADDR2_2_SHIFT ) | + (adapter->addr[0 ] <<ET_UNI_PF_ADDR1_1_SHIFT ) | + adapter->addr[1 ]; + + uni_pf2 = (adapter->addr[2 ] <<ET_UNI_PF_ADDR2_3_SHIFT ) | + (adapter->addr[3 ] <<ET_UNI_PF_ADDR2_4_SHIFT ) | + (adapter->addr[4 ] <<ET_UNI_PF_ADDR2_5_SHIFT ) | + adapter->addr[5 ]; + + uni_pf1 = (adapter->addr[2 ] <<ET_UNI_PF_ADDR1_3_SHIFT ) | + (adapter->addr[3 ] <<ET_UNI_PF_ADDR1_4_SHIFT ) | + (adapter->addr[4 ] <<ET_UNI_PF_ADDR1_5_SHIFT ) | + adapter->addr[5 ]; + + pm_csr =readl (&adapter->regs->global.pm_csr); +if (!et1310_in_phy_coma (adapter)) { +writel (uni_pf1, &rxmac->uni_pf_addr1); +writel (uni_pf2, &rxmac->uni_pf_addr2); +writel (uni_pf3, &rxmac->uni_pf_addr3); + } +} +void et1310_config_rxmac_regs (struct et131x_adapter *adapter) {struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac;
@@ -1358,95 +1441,6 @@ void et1310_handle_macstat_interrupt(struct et131x_adapter *adapter) adapter->stats.tx_collisions +=COUNTER_WRAP_12_BIT ; } -void et1310_setup_device_for_multicast (struct et131x_adapter *adapter) -{ -struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac; -uint32_t nIndex; -uint32_t result; -uint32_t hash1 =0 ; -uint32_t hash2 =0 ; -uint32_t hash3 =0 ; -uint32_t hash4 =0 ; -u32 pm_csr; - -/* If ET131X_PACKET_TYPE_MULTICAST is specified, then we provision -* the multi-cast LIST. If it is NOT specified, (and "ALL" is not -* specified) then we should pass NO multi-cast addresses to the -* driver. -*/ -if (adapter->packet_filter &ET131X_PACKET_TYPE_MULTICAST ) { -/* Loop through our multicast array and set up the device */ -for (nIndex =0 ; nIndex < adapter->multicast_addr_count; - nIndex++) { - result =ether_crc (6 , adapter->multicast_list[nIndex]); - - result = (result &0x3F800000 ) >>23 ; - -if (result <32 ) { - hash1 |= (1 << result); - }else if ((31 < result) && (result <64 )) { - result -=32 ; - hash2 |= (1 << result); - }else if ((63 < result) && (result <96 )) { - result -=64 ; - hash3 |= (1 << result); - }else { - result -=96 ; - hash4 |= (1 << result); - } - } - } - -/* Write out the new hash to the device */ - pm_csr =readl (&adapter->regs->global.pm_csr); -if (!et1310_in_phy_coma (adapter)) { -writel (hash1, &rxmac->multi_hash1); -writel (hash2, &rxmac->multi_hash2); -writel (hash3, &rxmac->multi_hash3); -writel (hash4, &rxmac->multi_hash4); - } -} - -void et1310_setup_device_for_unicast (struct et131x_adapter *adapter) -{ -struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac; -u32 uni_pf1; -u32 uni_pf2; -u32 uni_pf3; -u32 pm_csr; - -/* Set up unicast packet filter reg 3 to be the first two octets of -* the MAC address for both address -* -* Set up unicast packet filter reg 2 to be the octets 2 - 5 of the -* MAC address for second address -* -* Set up unicast packet filter reg 3 to be the octets 2 - 5 of the -* MAC address for first address -*/ - uni_pf3 = (adapter->addr[0 ] <<ET_UNI_PF_ADDR2_1_SHIFT ) | - (adapter->addr[1 ] <<ET_UNI_PF_ADDR2_2_SHIFT ) | - (adapter->addr[0 ] <<ET_UNI_PF_ADDR1_1_SHIFT ) | - adapter->addr[1 ]; - - uni_pf2 = (adapter->addr[2 ] <<ET_UNI_PF_ADDR2_3_SHIFT ) | - (adapter->addr[3 ] <<ET_UNI_PF_ADDR2_4_SHIFT ) | - (adapter->addr[4 ] <<ET_UNI_PF_ADDR2_5_SHIFT ) | - adapter->addr[5 ]; - - uni_pf1 = (adapter->addr[2 ] <<ET_UNI_PF_ADDR1_3_SHIFT ) | - (adapter->addr[3 ] <<ET_UNI_PF_ADDR1_4_SHIFT ) | - (adapter->addr[4 ] <<ET_UNI_PF_ADDR1_5_SHIFT ) | - adapter->addr[5 ]; - - pm_csr =readl (&adapter->regs->global.pm_csr); -if (!et1310_in_phy_coma (adapter)) { -writel (uni_pf1, &rxmac->uni_pf_addr1); -writel (uni_pf2, &rxmac->uni_pf_addr2); -writel (uni_pf3, &rxmac->uni_pf_addr3); - } -} -/* PHY functions */ int et131x_mdio_read (struct mii_bus *bus,int phy_addr,int reg)
@@ -1982,6 +1976,104 @@ void et131x_soft_reset(struct et131x_adapter *adapter) }/** +* et131x_enable_interrupts - enable interrupt +* @adapter: et131x device +* +* Enable the appropriate interrupts on the ET131x according to our +* configuration +*/ +void et131x_enable_interrupts (struct et131x_adapter *adapter) +{ +u32 mask; + +/* Enable all global interrupts */ +if (adapter->flowcontrol ==FLOW_TXONLY || + adapter->flowcontrol ==FLOW_BOTH ) + mask =INT_MASK_ENABLE ; +else + mask =INT_MASK_ENABLE_NO_FLOW ; + +writel (mask, &adapter->regs->global.int_mask); +} + +/** +* et131x_disable_interrupts - interrupt disable +* @adapter: et131x device +* +* Block all interrupts from the et131x device at the device itself +*/ +void et131x_disable_interrupts (struct et131x_adapter *adapter) +{ +/* Disable all global interrupts */ +writel (INT_MASK_DISABLE , &adapter->regs->global.int_mask); +} + +/** +* et131x_tx_dma_disable - Stop of Tx_DMA on the ET1310 +* @adapter: pointer to our adapter structure +*/ +void et131x_tx_dma_disable (struct et131x_adapter *adapter) +{ +/* Setup the tramsmit dma configuration register */ +writel (ET_TXDMA_CSR_HALT |ET_TXDMA_SNGL_EPKT , + &adapter->regs->txdma.csr); +} + +/** +* et131x_tx_dma_enable - re-start of Tx_DMA on the ET1310. +* @adapter: pointer to our adapter structure +* +* Mainly used after a return to the D0 (full-power) state from a lower state. +*/ +void et131x_tx_dma_enable (struct et131x_adapter *adapter) +{ +/* Setup the transmit dma configuration register for normal +* operation +*/ +writel (ET_TXDMA_SNGL_EPKT |(PARM_DMA_CACHE_DEF <<ET_TXDMA_CACHE_SHIFT ), + &adapter->regs->txdma.csr); +} + +/** +* et131x_enable_txrx - Enable tx/rx queues +* @netdev: device to be enabled +*/ +void et131x_enable_txrx (struct net_device *netdev) +{ +struct et131x_adapter *adapter =netdev_priv (netdev); + +/* Enable the Tx and Rx DMA engines (if not already enabled) */ +et131x_rx_dma_enable (adapter); +et131x_tx_dma_enable (adapter); + +/* Enable device interrupts */ +if (adapter->flags & fMP_ADAPTER_INTERRUPT_IN_USE) +et131x_enable_interrupts (adapter); + +/* We're ready to move some data, so start the queue */ +netif_start_queue (netdev); +} + +/** +* et131x_disable_txrx - Disable tx/rx queues +* @netdev: device to be disabled +*/ +void et131x_disable_txrx (struct net_device *netdev) +{ +struct et131x_adapter *adapter =netdev_priv (netdev); + +/* First thing is to stop the queue */ +netif_stop_queue (netdev); + +/* Stop the Tx and Rx DMA engines */ +et131x_rx_dma_disable (adapter); +et131x_tx_dma_disable (adapter); + +/* Disable device interrupts */ +et131x_disable_interrupts (adapter); +} + +/** * et1310_enable_phy_coma - called when network cable is unplugged * @adapter: pointer to our adapter structure *
@@ -3164,32 +3256,6 @@ void et131x_tx_dma_memory_free(struct et131x_adapter *adapter) }/** -* et131x_tx_dma_disable - Stop of Tx_DMA on the ET1310 -* @adapter: pointer to our adapter structure -*/ -void et131x_tx_dma_disable (struct et131x_adapter *adapter) -{ -/* Setup the tramsmit dma configuration register */ -writel (ET_TXDMA_CSR_HALT |ET_TXDMA_SNGL_EPKT , - &adapter->regs->txdma.csr); -} - -/** -* et131x_tx_dma_enable - re-start of Tx_DMA on the ET1310. -* @adapter: pointer to our adapter structure -* -* Mainly used after a return to the D0 (full-power) state from a lower state. -*/ -void et131x_tx_dma_enable (struct et131x_adapter *adapter) -{ -/* Setup the transmit dma configuration register for normal -* operation -*/ -writel (ET_TXDMA_SNGL_EPKT |(PARM_DMA_CACHE_DEF <<ET_TXDMA_CACHE_SHIFT ), - &adapter->regs->txdma.csr); -} - -/** * et131x_init_send - Initialize send data structures * @adapter: pointer to our private adapter structure */
@@ -4046,27 +4112,6 @@ static int et131x_pci_init(struct et131x_adapter *adapter, }/** -* et131x_enable_interrupts - enable interrupt -* @adapter: et131x device -* -* Enable the appropriate interrupts on the ET131x according to our -* configuration -*/ -void et131x_enable_interrupts (struct et131x_adapter *adapter) -{ -u32 mask; - -/* Enable all global interrupts */ -if (adapter->flowcontrol ==FLOW_TXONLY || - adapter->flowcontrol ==FLOW_BOTH ) - mask =INT_MASK_ENABLE ; -else - mask =INT_MASK_ENABLE_NO_FLOW ; - -writel (mask, &adapter->regs->global.int_mask); -} - -/** * et131x_error_timer_handler * @data: timer-specific variable; here a pointer to our adapter structure *
@@ -4350,18 +4395,6 @@ static struct et131x_adapter *et131x_adapter_init(struct net_device *netdev, }/** -* et131x_disable_interrupts - interrupt disable -* @adapter: et131x device -* -* Block all interrupts from the et131x device at the device itself -*/ -void et131x_disable_interrupts (struct et131x_adapter *adapter) -{ -/* Disable all global interrupts */ -writel (INT_MASK_DISABLE , &adapter->regs->global.int_mask); -} - -/** * et131x_pci_remove * @pdev: a pointer to the device's pci_dev structure *
@@ -4388,6 +4421,33 @@ static void __devexit et131x_pci_remove(struct pci_dev *pdev)pci_disable_device (pdev); } +/** +* et131x_up - Bring up a device for use. +* @netdev: device to be opened +*/ +void et131x_up (struct net_device *netdev) +{ +struct et131x_adapter *adapter =netdev_priv (netdev); + +et131x_enable_txrx (netdev); +phy_start (adapter->phydev); +} + +/** +* et131x_down - Bring down the device +* @netdev: device to be broght down +*/ +void et131x_down (struct net_device *netdev) +{ +struct et131x_adapter *adapter =netdev_priv (netdev); + +/* Save the timestamp for the TX watchdog, prevent a timeout */ + netdev->trans_start = jiffies; + +phy_stop (adapter->phydev); +et131x_disable_txrx (netdev); +} +#ifdef CONFIG_PM_SLEEP static int et131x_suspend (struct device *dev) {
@@ -4766,57 +4826,6 @@ static struct net_device_stats *et131x_stats(struct net_device *netdev) }/** -* et131x_enable_txrx - Enable tx/rx queues -* @netdev: device to be enabled -*/ -void et131x_enable_txrx (struct net_device *netdev) -{ -struct et131x_adapter *adapter =netdev_priv (netdev); - -/* Enable the Tx and Rx DMA engines (if not already enabled) */ -et131x_rx_dma_enable (adapter); -et131x_tx_dma_enable (adapter); - -/* Enable device interrupts */ -if (adapter->flags & fMP_ADAPTER_INTERRUPT_IN_USE) -et131x_enable_interrupts (adapter); - -/* We're ready to move some data, so start the queue */ -netif_start_queue (netdev); -} - -/** -* et131x_disable_txrx - Disable tx/rx queues -* @netdev: device to be disabled -*/ -void et131x_disable_txrx (struct net_device *netdev) -{ -struct et131x_adapter *adapter =netdev_priv (netdev); - -/* First thing is to stop the queue */ -netif_stop_queue (netdev); - -/* Stop the Tx and Rx DMA engines */ -et131x_rx_dma_disable (adapter); -et131x_tx_dma_disable (adapter); - -/* Disable device interrupts */ -et131x_disable_interrupts (adapter); -} - -/** -* et131x_up - Bring up a device for use. -* @netdev: device to be opened -*/ -void et131x_up (struct net_device *netdev) -{ -struct et131x_adapter *adapter =netdev_priv (netdev); - -et131x_enable_txrx (netdev); -phy_start (adapter->phydev); -} - -/** * et131x_open - Open the device for use. * @netdev: device to be opened *
@@ -4851,21 +4860,6 @@ int et131x_open(struct net_device *netdev) }/** -* et131x_down - Bring down the device -* @netdev: device to be broght down -*/ -void et131x_down (struct net_device *netdev) -{ -struct et131x_adapter *adapter =netdev_priv (netdev); - -/* Save the timestamp for the TX watchdog, prevent a timeout */ - netdev->trans_start = jiffies; - -phy_stop (adapter->phydev); -et131x_disable_txrx (netdev); -} - -/** * et131x_close - Close the device * @netdev: device to be closed *
Signature · 1 line
1.7.6.4
PATCH 9/12 staging: et131x: Remove even more forward declarations
In reply to Mark EinonMoved functions in et131x.c file to remove the forward declarations of:
et1310_in_phy_comaet1310_phy_access_mii_bitet131x_phy_mii_readet131x_mii_writeet131x_rx_dma_memory_free
--- drivers/staging/et131x/et131x.c | 395 +++++++++++++++++++-------------------- 1 files changed, 193 insertions(+), 202 deletions(-)
drivers/staging/et131x/et131x.c +193 -202
@@ -576,15 +576,6 @@ struct et131x_adapter {struct net_device_stats net_stats; }; -int et1310_in_phy_coma (struct et131x_adapter *adapter); -void et1310_phy_access_mii_bit (struct et131x_adapter *adapter, -u16 action, -u16 regnum,u16 bitnum,u8 *value); -int et131x_phy_mii_read (struct et131x_adapter *adapter,u8 addr, -u8 reg,u16 *value); -int32_t et131x_mii_write (struct et131x_adapter *adapter, -u8 reg,u16 value); -void et131x_rx_dma_memory_free (struct et131x_adapter *adapter);void et131x_rx_dma_disable (struct et131x_adapter *adapter);void et131x_rx_dma_enable (struct et131x_adapter *adapter);void et131x_init_send (struct et131x_adapter *adapter);
@@ -1019,6 +1010,21 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter) } } +/** +* et1310_in_phy_coma - check if the device is in phy coma +* @adapter: pointer to our adapter structure +* +* Returns 0 if the device is not in phy coma, 1 if it is in phy coma +*/ +int et1310_in_phy_coma (struct et131x_adapter *adapter) +{ +u32 pmcsr; + + pmcsr =readl (&adapter->regs->global.pm_csr); + +return ET_PM_PHY_SW_COMA & pmcsr ?1 :0 ; +} +void et1310_setup_device_for_multicast (struct et131x_adapter *adapter) {struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac;
@@ -1318,6 +1324,184 @@ void et1310_config_macstat_regs(struct et131x_adapter *adapter)writel (0xFFFE7E8B , &macstat->carry_reg2_mask); } +/** +* et131x_phy_mii_read - Read from the PHY through the MII Interface on the MAC +* @adapter: pointer to our private adapter structure +* @addr: the address of the transceiver +* @reg: the register to read +* @value: pointer to a 16-bit value in which the value will be stored +* +* Returns 0 on success, errno on failure (as defined in errno.h) +*/ +int et131x_phy_mii_read (struct et131x_adapter *adapter,u8 addr, +u8 reg,u16 *value) +{ +struct mac_regs __iomem *mac = &adapter->regs->mac; +int status =0 ; +u32 delay =0 ; +u32 mii_addr; +u32 mii_cmd; +u32 mii_indicator; + +/* Save a local copy of the registers we are dealing with so we can +* set them back +*/ + mii_addr =readl (&mac->mii_mgmt_addr); + mii_cmd =readl (&mac->mii_mgmt_cmd); + +/* Stop the current operation */ +writel (0 , &mac->mii_mgmt_cmd); + +/* Set up the register we need to read from on the correct PHY */ +writel (MII_ADDR (addr, reg), &mac->mii_mgmt_addr); + +writel (0x1 , &mac->mii_mgmt_cmd); + +do { +udelay (50 ); + delay++; + mii_indicator =readl (&mac->mii_mgmt_indicator); + }while ((mii_indicator &MGMT_WAIT ) && delay <50 ); + +/* If we hit the max delay, we could not read the register */ +if (delay ==50 ) { +dev_warn (&adapter->pdev->dev, +"reg 0x%08x could not be read\n" , reg); +dev_warn (&adapter->pdev->dev,"status is 0x%08x\n" , + mii_indicator); + + status = -EIO ; + } + +/* If we hit here we were able to read the register and we need to +* return the value to the caller */ + *value =readl (&mac->mii_mgmt_stat) &0xFFFF ; + +/* Stop the read operation */ +writel (0 , &mac->mii_mgmt_cmd); + +/* set the registers we touched back to the state at which we entered +* this function +*/ +writel (mii_addr, &mac->mii_mgmt_addr); +writel (mii_cmd, &mac->mii_mgmt_cmd); + +return status; +} + +int et131x_mii_read (struct et131x_adapter *adapter,u8 reg,u16 *value) +{ +struct phy_device *phydev = adapter->phydev; + +if (!phydev) +return -EIO ; + +return et131x_phy_mii_read (adapter, phydev->addr, reg, value); +} + +/** +* et131x_mii_write - Write to a PHY register through the MII interface of the MAC +* @adapter: pointer to our private adapter structure +* @reg: the register to read +* @value: 16-bit value to write +* +* FIXME: one caller in netdev still +* +* Return 0 on success, errno on failure (as defined in errno.h) +*/ +int et131x_mii_write (struct et131x_adapter *adapter,u8 reg,u16 value) +{ +struct mac_regs __iomem *mac = &adapter->regs->mac; +struct phy_device *phydev = adapter->phydev; +int status =0 ; +u8 addr; +u32 delay =0 ; +u32 mii_addr; +u32 mii_cmd; +u32 mii_indicator; + +if (!phydev) +return -EIO ; + + addr = phydev->addr; + +/* Save a local copy of the registers we are dealing with so we can +* set them back +*/ + mii_addr =readl (&mac->mii_mgmt_addr); + mii_cmd =readl (&mac->mii_mgmt_cmd); + +/* Stop the current operation */ +writel (0 , &mac->mii_mgmt_cmd); + +/* Set up the register we need to write to on the correct PHY */ +writel (MII_ADDR (addr, reg), &mac->mii_mgmt_addr); + +/* Add the value to write to the registers to the mac */ +writel (value, &mac->mii_mgmt_ctrl); + +do { +udelay (50 ); + delay++; + mii_indicator =readl (&mac->mii_mgmt_indicator); + }while ((mii_indicator &MGMT_BUSY ) && delay <100 ); + +/* If we hit the max delay, we could not write the register */ +if (delay ==100 ) { +u16 tmp; + +dev_warn (&adapter->pdev->dev, +"reg 0x%08x could not be written" , reg); +dev_warn (&adapter->pdev->dev,"status is 0x%08x\n" , + mii_indicator); +dev_warn (&adapter->pdev->dev,"command is 0x%08x\n" , +readl (&mac->mii_mgmt_cmd)); + +et131x_mii_read (adapter, reg, &tmp); + + status = -EIO ; + } +/* Stop the write operation */ +writel (0 , &mac->mii_mgmt_cmd); + +/* +* set the registers we touched back to the state at which we entered +* this function +*/ +writel (mii_addr, &mac->mii_mgmt_addr); +writel (mii_cmd, &mac->mii_mgmt_cmd); + +return status; +} + +/* Still used from _mac for BIT_READ */ +void et1310_phy_access_mii_bit (struct et131x_adapter *adapter,u16 action, +u16 regnum,u16 bitnum,u8 *value) +{ +u16 reg; +u16 mask =0x0001 << bitnum; + +/* Read the requested register */ +et131x_mii_read (adapter, regnum, ®); + +switch (action) { +case TRUEPHY_BIT_READ : + *value = (reg & mask) >> bitnum; +break ; + +case TRUEPHY_BIT_SET : +et131x_mii_write (adapter, regnum, reg | mask); +break ; + +case TRUEPHY_BIT_CLEAR : +et131x_mii_write (adapter, regnum, reg & ~mask); +break ; + +default : +break ; + } +} +void et1310_config_flow_control (struct et131x_adapter *adapter) {struct phy_device *phydev = adapter->phydev;
@@ -1476,156 +1660,6 @@ int et131x_mdio_reset(struct mii_bus *bus)return 0 ; } -int et131x_mii_read (struct et131x_adapter *adapter,u8 reg,u16 *value) -{ -struct phy_device *phydev = adapter->phydev; - -if (!phydev) -return -EIO ; - -return et131x_phy_mii_read (adapter, phydev->addr, reg, value); -} - -/** -* et131x_phy_mii_read - Read from the PHY through the MII Interface on the MAC -* @adapter: pointer to our private adapter structure -* @addr: the address of the transceiver -* @reg: the register to read -* @value: pointer to a 16-bit value in which the value will be stored -* -* Returns 0 on success, errno on failure (as defined in errno.h) -*/ -int et131x_phy_mii_read (struct et131x_adapter *adapter,u8 addr, -u8 reg,u16 *value) -{ -struct mac_regs __iomem *mac = &adapter->regs->mac; -int status =0 ; -u32 delay =0 ; -u32 mii_addr; -u32 mii_cmd; -u32 mii_indicator; - -/* Save a local copy of the registers we are dealing with so we can -* set them back -*/ - mii_addr =readl (&mac->mii_mgmt_addr); - mii_cmd =readl (&mac->mii_mgmt_cmd); - -/* Stop the current operation */ -writel (0 , &mac->mii_mgmt_cmd); - -/* Set up the register we need to read from on the correct PHY */ -writel (MII_ADDR (addr, reg), &mac->mii_mgmt_addr); - -writel (0x1 , &mac->mii_mgmt_cmd); - -do { -udelay (50 ); - delay++; - mii_indicator =readl (&mac->mii_mgmt_indicator); - }while ((mii_indicator &MGMT_WAIT ) && delay <50 ); - -/* If we hit the max delay, we could not read the register */ -if (delay ==50 ) { -dev_warn (&adapter->pdev->dev, -"reg 0x%08x could not be read\n" , reg); -dev_warn (&adapter->pdev->dev,"status is 0x%08x\n" , - mii_indicator); - - status = -EIO ; - } - -/* If we hit here we were able to read the register and we need to -* return the value to the caller */ - *value =readl (&mac->mii_mgmt_stat) &0xFFFF ; - -/* Stop the read operation */ -writel (0 , &mac->mii_mgmt_cmd); - -/* set the registers we touched back to the state at which we entered -* this function -*/ -writel (mii_addr, &mac->mii_mgmt_addr); -writel (mii_cmd, &mac->mii_mgmt_cmd); - -return status; -} - -/** -* et131x_mii_write - Write to a PHY register through the MII interface of the MAC -* @adapter: pointer to our private adapter structure -* @reg: the register to read -* @value: 16-bit value to write -* -* FIXME: one caller in netdev still -* -* Return 0 on success, errno on failure (as defined in errno.h) -*/ -int et131x_mii_write (struct et131x_adapter *adapter,u8 reg,u16 value) -{ -struct mac_regs __iomem *mac = &adapter->regs->mac; -struct phy_device *phydev = adapter->phydev; -int status =0 ; -u8 addr; -u32 delay =0 ; -u32 mii_addr; -u32 mii_cmd; -u32 mii_indicator; - -if (!phydev) -return -EIO ; - - addr = phydev->addr; - -/* Save a local copy of the registers we are dealing with so we can -* set them back -*/ - mii_addr =readl (&mac->mii_mgmt_addr); - mii_cmd =readl (&mac->mii_mgmt_cmd); - -/* Stop the current operation */ -writel (0 , &mac->mii_mgmt_cmd); - -/* Set up the register we need to write to on the correct PHY */ -writel (MII_ADDR (addr, reg), &mac->mii_mgmt_addr); - -/* Add the value to write to the registers to the mac */ -writel (value, &mac->mii_mgmt_ctrl); - -do { -udelay (50 ); - delay++; - mii_indicator =readl (&mac->mii_mgmt_indicator); - }while ((mii_indicator &MGMT_BUSY ) && delay <100 ); - -/* If we hit the max delay, we could not write the register */ -if (delay ==100 ) { -u16 tmp; - -dev_warn (&adapter->pdev->dev, -"reg 0x%08x could not be written" , reg); -dev_warn (&adapter->pdev->dev,"status is 0x%08x\n" , - mii_indicator); -dev_warn (&adapter->pdev->dev,"command is 0x%08x\n" , -readl (&mac->mii_mgmt_cmd)); - -et131x_mii_read (adapter, reg, &tmp); - - status = -EIO ; - } -/* Stop the write operation */ -writel (0 , &mac->mii_mgmt_cmd); - -/* -* set the registers we touched back to the state at which we entered -* this function -*/ -writel (mii_addr, &mac->mii_mgmt_addr); -writel (mii_cmd, &mac->mii_mgmt_cmd); - -return status; -} -/** * et1310_phy_power_down - PHY power control * @adapter: device to control
@@ -1647,34 +1681,6 @@ void et1310_phy_power_down(struct et131x_adapter *adapter, bool down)et131x_mii_write (adapter,MII_BMCR , data); } -/* Still used from _mac for BIT_READ */ -void et1310_phy_access_mii_bit (struct et131x_adapter *adapter,u16 action, -u16 regnum,u16 bitnum,u8 *value) -{ -u16 reg; -u16 mask =0x0001 << bitnum; - -/* Read the requested register */ -et131x_mii_read (adapter, regnum, ®); - -switch (action) { -case TRUEPHY_BIT_READ : - *value = (reg & mask) >> bitnum; -break ; - -case TRUEPHY_BIT_SET : -et131x_mii_write (adapter, regnum, reg | mask); -break ; - -case TRUEPHY_BIT_CLEAR : -et131x_mii_write (adapter, regnum, reg & ~mask); -break ; - -default : -break ; - } -} -/** * et131x_xcvr_init - Init the phy if we are setting it into force mode * @adapter: pointer to our private adapter structure
@@ -1771,21 +1777,6 @@ void et131x_configure_global_regs(struct et131x_adapter *adapter)/* PM functions */ /** -* et1310_in_phy_coma - check if the device is in phy coma -* @adapter: pointer to our adapter structure -* -* Returns 0 if the device is not in phy coma, 1 if it is in phy coma -*/ -int et1310_in_phy_coma (struct et131x_adapter *adapter) -{ -u32 pmcsr; - - pmcsr =readl (&adapter->regs->global.pm_csr); - -return ET_PM_PHY_SW_COMA & pmcsr ?1 :0 ; -} - -/** * et131x_config_rx_dma_regs - Start of Rx_DMA init sequence * @adapter: pointer to our adapter structure */
Signature · 1 line
1.7.6.4
PATCH 10/12 staging: et131x: Remove last of the forward declarations
In reply to Mark EinonMoved functions in et131x.c file to remove the forward declarations of:
et131x_rx_dma_disableet131x_rx_dma_enableet131x_init_sendet131x_tx_dma_enable
--- drivers/staging/et131x/et131x.c | 262 +++++++++++++++++++-------------------- 1 files changed, 128 insertions(+), 134 deletions(-)
drivers/staging/et131x/et131x.c +128 -134
@@ -576,11 +576,6 @@ struct et131x_adapter {struct net_device_stats net_stats; }; -void et131x_rx_dma_disable (struct et131x_adapter *adapter); -void et131x_rx_dma_enable (struct et131x_adapter *adapter); -void et131x_init_send (struct et131x_adapter *adapter); -void et131x_tx_dma_enable (struct et131x_adapter *adapter); -/* EEPROM functions */ static int eeprom_wait_ready (struct pci_dev *pdev,u32 *status)
@@ -869,6 +864,100 @@ int et131x_init_eeprom(struct et131x_adapter *adapter)return 0 ; } +/** +* et131x_rx_dma_enable - re-start of Rx_DMA on the ET1310. +* @adapter: pointer to our adapter structure +*/ +void et131x_rx_dma_enable (struct et131x_adapter *adapter) +{ +/* Setup the receive dma configuration register for normal operation */ +u32 csr =0x2000 ;/* FBR1 enable */ + +if (adapter->rx_ring.fbr[0 ]->buffsize ==4096 ) + csr |=0x0800 ; +else if (adapter->rx_ring.fbr[0 ]->buffsize ==8192 ) + csr |=0x1000 ; +else if (adapter->rx_ring.fbr[0 ]->buffsize ==16384 ) + csr |=0x1800 ; +#ifdef USE_FBR0 + csr |=0x0400 ;/* FBR0 enable */ +if (adapter->rx_ring.fbr[1 ]->buffsize ==256 ) + csr |=0x0100 ; +else if (adapter->rx_ring.fbr[1 ]->buffsize ==512 ) + csr |=0x0200 ; +else if (adapter->rx_ring.fbr[1 ]->buffsize ==1024 ) + csr |=0x0300 ; +#endif +writel (csr, &adapter->regs->rxdma.csr); + + csr =readl (&adapter->regs->rxdma.csr); +if ((csr &0x00020000 ) !=0 ) { +udelay (5 ); + csr =readl (&adapter->regs->rxdma.csr); +if ((csr &0x00020000 ) !=0 ) { +dev_err (&adapter->pdev->dev, +"RX Dma failed to exit halt state. CSR 0x%08x\n" , + csr); + } + } +} + +/** +* et131x_rx_dma_disable - Stop of Rx_DMA on the ET1310 +* @adapter: pointer to our adapter structure +*/ +void et131x_rx_dma_disable (struct et131x_adapter *adapter) +{ +u32 csr; +/* Setup the receive dma configuration register */ +writel (0x00002001 , &adapter->regs->rxdma.csr); + csr =readl (&adapter->regs->rxdma.csr); +if ((csr &0x00020000 ) ==0 ) {/* Check halt status (bit 17) */ +udelay (5 ); + csr =readl (&adapter->regs->rxdma.csr); +if ((csr &0x00020000 ) ==0 ) +dev_err (&adapter->pdev->dev, +"RX Dma failed to enter halt state. CSR 0x%08x\n" , + csr); + } +} + +/** +* et131x_tx_dma_enable - re-start of Tx_DMA on the ET1310. +* @adapter: pointer to our adapter structure +* +* Mainly used after a return to the D0 (full-power) state from a lower state. +*/ +void et131x_tx_dma_enable (struct et131x_adapter *adapter) +{ +/* Setup the transmit dma configuration register for normal +* operation +*/ +writel (ET_TXDMA_SNGL_EPKT |(PARM_DMA_CACHE_DEF <<ET_TXDMA_CACHE_SHIFT ), + &adapter->regs->txdma.csr); +} + +static inline void add_10bit (u32 *v,int n) +{ + *v =INDEX10 (*v + n) | (*v &ET_DMA10_WRAP ); +} + +static inline void add_12bit (u32 *v,int n) +{ + *v =INDEX12 (*v + n) | (*v &ET_DMA12_WRAP ); +} + +/** +* nic_rx_pkts - Checks the hardware for available packets +* @adapter: pointer to our adapter +* +* Returns rfd, a pointer to our MPRFD. +* +* Checks the hardware for available packets, using completion ring +* If packets are available, it gets an RFD from the recv_list, attaches +* the packet to it, puts the RFD in the RecvPendList, and also returns +* the pointer to the RFD. +*/ /* MAC functions */ /**
@@ -2011,21 +2100,6 @@ void et131x_tx_dma_disable(struct et131x_adapter *adapter) }/** -* et131x_tx_dma_enable - re-start of Tx_DMA on the ET1310. -* @adapter: pointer to our adapter structure -* -* Mainly used after a return to the D0 (full-power) state from a lower state. -*/ -void et131x_tx_dma_enable (struct et131x_adapter *adapter) -{ -/* Setup the transmit dma configuration register for normal -* operation -*/ -writel (ET_TXDMA_SNGL_EPKT |(PARM_DMA_CACHE_DEF <<ET_TXDMA_CACHE_SHIFT ), - &adapter->regs->txdma.csr); -} - -/** * et131x_enable_txrx - Enable tx/rx queues * @netdev: device to be enabled */
@@ -2065,6 +2139,40 @@ void et131x_disable_txrx(struct net_device *netdev) }/** +* et131x_init_send - Initialize send data structures +* @adapter: pointer to our private adapter structure +*/ +void et131x_init_send (struct et131x_adapter *adapter) +{ +struct tcb *tcb; +u32 ct; +struct tx_ring *tx_ring; + +/* Setup some convenience pointers */ + tx_ring = &adapter->tx_ring; + tcb = adapter->tx_ring.tcb_ring; + + tx_ring->tcb_qhead = tcb; + +memset (tcb,0 ,sizeof (struct tcb ) *NUM_TCB ); + +/* Go through and set up each TCB */ +for (ct =0 ; ct++ <NUM_TCB ; tcb++) +/* Set the link pointer in HW TCB to the next TCB in the +* chain +*/ + tcb->next = tcb +1 ; + +/* Set the tail pointer */ + tcb--; + tx_ring->tcb_qtail = tcb; + tcb->next =NULL ; +/* Curr send queue should now be empty */ + tx_ring->send_head =NULL ; + tx_ring->send_tail =NULL ; +} + +/** * et1310_enable_phy_coma - called when network cable is unplugged * @adapter: pointer to our adapter structure *
@@ -2802,86 +2910,6 @@ static void nic_return_rfd(struct et131x_adapter *adapter, struct rfd *rfd)WARN_ON (rx_local->num_ready_recv > rx_local->num_rfd); } -/** -* et131x_rx_dma_disable - Stop of Rx_DMA on the ET1310 -* @adapter: pointer to our adapter structure -*/ -void et131x_rx_dma_disable (struct et131x_adapter *adapter) -{ -u32 csr; -/* Setup the receive dma configuration register */ -writel (0x00002001 , &adapter->regs->rxdma.csr); - csr =readl (&adapter->regs->rxdma.csr); -if ((csr &0x00020000 ) ==0 ) {/* Check halt status (bit 17) */ -udelay (5 ); - csr =readl (&adapter->regs->rxdma.csr); -if ((csr &0x00020000 ) ==0 ) -dev_err (&adapter->pdev->dev, -"RX Dma failed to enter halt state. CSR 0x%08x\n" , - csr); - } -} - -/** -* et131x_rx_dma_enable - re-start of Rx_DMA on the ET1310. -* @adapter: pointer to our adapter structure -*/ -void et131x_rx_dma_enable (struct et131x_adapter *adapter) -{ -/* Setup the receive dma configuration register for normal operation */ -u32 csr =0x2000 ;/* FBR1 enable */ - -if (adapter->rx_ring.fbr[0 ]->buffsize ==4096 ) - csr |=0x0800 ; -else if (adapter->rx_ring.fbr[0 ]->buffsize ==8192 ) - csr |=0x1000 ; -else if (adapter->rx_ring.fbr[0 ]->buffsize ==16384 ) - csr |=0x1800 ; -#ifdef USE_FBR0 - csr |=0x0400 ;/* FBR0 enable */ -if (adapter->rx_ring.fbr[1 ]->buffsize ==256 ) - csr |=0x0100 ; -else if (adapter->rx_ring.fbr[1 ]->buffsize ==512 ) - csr |=0x0200 ; -else if (adapter->rx_ring.fbr[1 ]->buffsize ==1024 ) - csr |=0x0300 ; -#endif -writel (csr, &adapter->regs->rxdma.csr); - - csr =readl (&adapter->regs->rxdma.csr); -if ((csr &0x00020000 ) !=0 ) { -udelay (5 ); - csr =readl (&adapter->regs->rxdma.csr); -if ((csr &0x00020000 ) !=0 ) { -dev_err (&adapter->pdev->dev, -"RX Dma failed to exit halt state. CSR 0x%08x\n" , - csr); - } - } -} - - -static inline void add_10bit (u32 *v,int n) -{ - *v =INDEX10 (*v + n) | (*v &ET_DMA10_WRAP ); -} - -static inline void add_12bit (u32 *v,int n) -{ - *v =INDEX12 (*v + n) | (*v &ET_DMA12_WRAP ); -} - -/** -* nic_rx_pkts - Checks the hardware for available packets -* @adapter: pointer to our adapter -* -* Returns rfd, a pointer to our MPRFD. -* -* Checks the hardware for available packets, using completion ring -* If packets are available, it gets an RFD from the recv_list, attaches -* the packet to it, puts the RFD in the RecvPendList, and also returns -* the pointer to the RFD. -*/ static struct rfd *nic_rx_pkts (struct et131x_adapter *adapter) {struct rx_ring *rx_local = &adapter->rx_ring;
@@ -3247,40 +3275,6 @@ void et131x_tx_dma_memory_free(struct et131x_adapter *adapter) }/** -* et131x_init_send - Initialize send data structures -* @adapter: pointer to our private adapter structure -*/ -void et131x_init_send (struct et131x_adapter *adapter) -{ -struct tcb *tcb; -u32 ct; -struct tx_ring *tx_ring; - -/* Setup some convenience pointers */ - tx_ring = &adapter->tx_ring; - tcb = adapter->tx_ring.tcb_ring; - - tx_ring->tcb_qhead = tcb; - -memset (tcb,0 ,sizeof (struct tcb ) *NUM_TCB ); - -/* Go through and set up each TCB */ -for (ct =0 ; ct++ <NUM_TCB ; tcb++) -/* Set the link pointer in HW TCB to the next TCB in the -* chain -*/ - tcb->next = tcb +1 ; - -/* Set the tail pointer */ - tcb--; - tx_ring->tcb_qtail = tcb; - tcb->next =NULL ; -/* Curr send queue should now be empty */ - tx_ring->send_head =NULL ; - tx_ring->send_tail =NULL ; -} - -/** * nic_send_packet - NIC specific send handler for version B silicon. * @adapter: pointer to our adapter * @tcb: pointer to struct tcb
Signature · 1 line
1.7.6.4
PATCH 11/12 staging: et131x: Mainly whitespace changes to appease checkpatch
In reply to Mark Einon- Whitespace changes to appease checkpatch warnings
- Removed unneeded braces around single line if/else
--- drivers/staging/et131x/et131x.c | 81 ++++++++++++++++++++++----------------- 1 files changed, 46 insertions(+), 35 deletions(-)
drivers/staging/et131x/et131x.c +46 -35
@@ -1935,8 +1935,8 @@ void et131x_config_rx_dma_regs(struct et131x_adapter *adapter)*/ rx_local->fbr[0 ]->local_full =ET_DMA10_WRAP ;writel ( - ((rx_local->fbr[0 ]->num_entries *LO_MARK_PERCENT_FOR_RX ) /100 ) -1 , - &rx_dma->fbr1_min_des); + ((rx_local->fbr[0 ]->num_entries *LO_MARK_PERCENT_FOR_RX ) /100 ) -1 , + &rx_dma->fbr1_min_des);#ifdef USE_FBR0 /* Now's the best time to initialize FBR0 contents */
@@ -1959,8 +1959,8 @@ void et131x_config_rx_dma_regs(struct et131x_adapter *adapter)*/ rx_local->fbr[1 ]->local_full =ET_DMA10_WRAP ;writel ( - ((rx_local->fbr[1 ]->num_entries *LO_MARK_PERCENT_FOR_RX ) /100 ) -1 , - &rx_dma->fbr0_min_des); + ((rx_local->fbr[1 ]->num_entries *LO_MARK_PERCENT_FOR_RX ) /100 ) -1 , + &rx_dma->fbr0_min_des);#endif /* Program the number of packets we will receive before generating an
@@ -2383,14 +2383,16 @@ int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter) }#ifdef USE_FBR0 - adapter->rx_ring.psr_num_entries = adapter->rx_ring.fbr[1 ]->num_entries + - adapter->rx_ring.fbr[0 ]->num_entries; + adapter->rx_ring.psr_num_entries = + adapter->rx_ring.fbr[1 ]->num_entries + + adapter->rx_ring.fbr[0 ]->num_entries;#else adapter->rx_ring.psr_num_entries = adapter->rx_ring.fbr[0 ]->num_entries;#endif /* Allocate an area of memory for Free Buffer Ring 1 */ - bufsize = (sizeof (struct fbr_desc ) * rx_ring->fbr[0 ]->num_entries) +0xfff ; + bufsize = (sizeof (struct fbr_desc ) * rx_ring->fbr[0 ]->num_entries) + +0xfff ; rx_ring->fbr[0]->ring_virtaddr = dma_alloc_coherent(&adapter->pdev->dev, bufsize, &rx_ring->fbr[0]->ring_physaddr,
@@ -2421,7 +2423,8 @@ int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter)#ifdef USE_FBR0 /* Allocate an area of memory for Free Buffer Ring 0 */ - bufsize = (sizeof (struct fbr_desc ) * rx_ring->fbr[1 ]->num_entries) +0xfff ; + bufsize = (sizeof (struct fbr_desc ) * rx_ring->fbr[1 ]->num_entries) + +0xfff ; rx_ring->fbr[1]->ring_virtaddr = dma_alloc_coherent(&adapter->pdev->dev, bufsize, &rx_ring->fbr[1]->ring_physaddr,
@@ -2471,7 +2474,8 @@ int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter) (FBR_CHUNKS * rx_ring->fbr[0 ]->buffsize) + fbr1_align -1 ; rx_ring->fbr[0 ]->mem_virtaddrs[i] =dma_alloc_coherent (&adapter->pdev->dev, fbr_chunksize, - &rx_ring->fbr[0 ]->mem_physaddrs[i],GFP_KERNEL ); + &rx_ring->fbr[0 ]->mem_physaddrs[i], +GFP_KERNEL );if (!rx_ring->fbr[0 ]->mem_virtaddrs[i]) { dev_err(&adapter->pdev->dev,
@@ -2523,7 +2527,8 @@ int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter) ((FBR_CHUNKS +1 ) * rx_ring->fbr[1 ]->buffsize) -1 ; rx_ring->fbr[1 ]->mem_virtaddrs[i] =dma_alloc_coherent (&adapter->pdev->dev, fbr_chunksize, - &rx_ring->fbr[1 ]->mem_physaddrs[i],GFP_KERNEL ); + &rx_ring->fbr[1 ]->mem_physaddrs[i], +GFP_KERNEL );if (!rx_ring->fbr[1 ]->mem_virtaddrs[i]) { dev_err(&adapter->pdev->dev,
@@ -2675,10 +2680,11 @@ void et131x_rx_dma_memory_free(struct et131x_adapter *adapter)/* Now the FIFO itself */ rx_ring->fbr[0 ]->ring_virtaddr = (void *)((u8 *) - rx_ring->fbr[0 ]->ring_virtaddr - rx_ring->fbr[0 ]->offset); + rx_ring->fbr[0 ]->ring_virtaddr - rx_ring->fbr[0 ]->offset); - bufsize = (sizeof (struct fbr_desc ) * rx_ring->fbr[0 ]->num_entries) - +0xfff ; + bufsize = + (sizeof (struct fbr_desc ) * rx_ring->fbr[0 ]->num_entries) + +0xfff ; dma_free_coherent(&adapter->pdev->dev, bufsize, rx_ring->fbr[0]->ring_virtaddr,
@@ -2709,15 +2715,16 @@ void et131x_rx_dma_memory_free(struct et131x_adapter *adapter)/* Now the FIFO itself */ rx_ring->fbr[1 ]->ring_virtaddr = (void *)((u8 *) - rx_ring->fbr[1 ]->ring_virtaddr - rx_ring->fbr[1 ]->offset); + rx_ring->fbr[1 ]->ring_virtaddr - rx_ring->fbr[1 ]->offset); - bufsize = (sizeof (struct fbr_desc ) * rx_ring->fbr[1 ]->num_entries) - +0xfff ; + bufsize = + (sizeof (struct fbr_desc ) * rx_ring->fbr[1 ]->num_entries) + +0xfff ;dma_free_coherent (&adapter->pdev->dev, - bufsize, - rx_ring->fbr[1 ]->ring_virtaddr, - rx_ring->fbr[1 ]->ring_physaddr); + bufsize, + rx_ring->fbr[1 ]->ring_virtaddr, + rx_ring->fbr[1 ]->ring_physaddr); rx_ring->fbr[1 ]->ring_virtaddr =NULL ; }
@@ -2857,9 +2864,9 @@ static void nic_return_rfd(struct et131x_adapter *adapter, struct rfd *rfd)spin_lock_irqsave (&adapter->fbr_lock, flags);if (ring_index ==1 ) { -struct fbr_desc *next = - (struct fbr_desc *) (rx_local->fbr[0 ]->ring_virtaddr) + -INDEX10 (rx_local->fbr[0 ]->local_full); +struct fbr_desc *next = (struct fbr_desc *) + (rx_local->fbr[0 ]->ring_virtaddr) + +INDEX10 (rx_local->fbr[0 ]->local_full);/* Handle the Free Buffer Ring advancement here. Write * the PA / Buffer Index for the returned buffer into
@@ -2869,9 +2876,10 @@ static void nic_return_rfd(struct et131x_adapter *adapter, struct rfd *rfd) next->addr_lo = rx_local->fbr[0 ]->bus_low[buff_index]; next->word2 = buff_index; -writel (bump_free_buff_ring (&rx_local->fbr[0 ]->local_full, - rx_local->fbr[0 ]->num_entries -1 ), - &rx_dma->fbr1_full_offset); +writel (bump_free_buff_ring ( + &rx_local->fbr[0 ]->local_full, + rx_local->fbr[0 ]->num_entries -1 ), + &rx_dma->fbr1_full_offset); }#ifdef USE_FBR0 else {
@@ -3109,8 +3117,8 @@ static struct rfd *nic_rx_pkts(struct et131x_adapter *adapter)* 1 for FBR0 etc */ memcpy (skb_put (skb, rfd->len), - rx_local->fbr[(ring_index ==0 ?1 :0 )]->virt[buff_index], - rfd->len); + rx_local->fbr[(ring_index ==0 ?1 :0 )]->virt[buff_index], + rfd->len); skb->dev = adapter->netdev; skb->protocol =eth_type_trans (skb, adapter->netdev);
@@ -3212,11 +3220,13 @@ int et131x_tx_dma_memory_alloc(struct et131x_adapter *adapter)*/ desc_size = (sizeof (struct tx_desc ) *NUM_DESC_PER_RING_TX ) +4096 -1 ; tx_ring->tx_desc_ring = - (struct tx_desc *)dma_alloc_coherent (&adapter->pdev->dev, desc_size, - &tx_ring->tx_desc_ring_pa,GFP_KERNEL ); + (struct tx_desc *)dma_alloc_coherent (&adapter->pdev->dev, + desc_size, + &tx_ring->tx_desc_ring_pa, +GFP_KERNEL );if (!adapter->tx_ring.tx_desc_ring) {dev_err (&adapter->pdev->dev, -"Cannot alloc memory for Tx Ring\n" ); +"Cannot alloc memory for Tx Ring\n" );return -ENOMEM ; }
@@ -4871,7 +4881,8 @@ int et131x_close(struct net_device *netdev)* * Returns 0 on success, errno on failure (as defined in errno.h) */ -static int et131x_ioctl (struct net_device *netdev,struct ifreq *reqbuf,int cmd) +static int et131x_ioctl (struct net_device *netdev,struct ifreq *reqbuf, +int cmd) {struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -5030,7 +5041,8 @@ static int et131x_tx(struct sk_buff *skb, struct net_device *netdev)struct et131x_adapter *adapter =netdev_priv (netdev);/* stop the queue if it's getting full */ -if (adapter->tx_ring.used >=NUM_TCB -1 && !netif_queue_stopped (netdev)) +if (adapter->tx_ring.used >=NUM_TCB -1 && + !netif_queue_stopped (netdev))netif_stop_queue (netdev);/* Save the timestamp for the TX timeout watchdog */
@@ -5041,11 +5053,10 @@ static int et131x_tx(struct sk_buff *skb, struct net_device *netdev)/* Check status and manage the netif queue if necessary */ if (status !=0 ) { -if (status == -ENOMEM ) { +if (status == -ENOMEM ) status =NETDEV_TX_BUSY ; - }else { +else status =NETDEV_TX_OK ; - } }return status; }
Signature · 1 line
1.7.6.4
PATCH 12/12 staging: et131x: Remove redundant check and return statement
In reply to Mark EinonIn nic_send_packet(), by the time 'frag' is checked to be zero, it never is - the for loop has been entered (as nr_frags is always > 0) and frag has been incremented at least once. Remove the check and associated error return.
--- drivers/staging/et131x/et131x.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-)
drivers/staging/et131x/et131x.c +0 -3
@@ -3412,9 +3412,6 @@ static int nic_send_packet(struct et131x_adapter *adapter, struct tcb *tcb) } } -if (frag ==0 ) -return -EIO ; -if (phydev && phydev->speed ==SPEED_1000 ) {if (++adapter->tx_ring.since_irq ==PARM_TX_NUM_BUFS_DEF ) {/* Last element & Interrupt flag */
Signature · 1 line
1.7.6.4
Quoted 4 lines · Mark Einon
Resending patches. Reduces the number of checkpatch warnings, removing forward declarations and whitespace changes.
Last patch removes some redundant code.
Thanks, now applied, so we should be all synced up now, right?
greg k-h
Quoted 7 lines · Greg KH
Quoted 4 lines · Mark Einon
Resending patches. Reduces the number of checkpatch warnings, removing forward declarations and whitespace changes.
Last patch removes some redundant code.
Thanks, now applied, so we should be all synced up now, right?
Yes, fantastic. Thanks very much Greg.
Cheers,
Mark
PATCH 1/6 et131x: add static qualifiers.
--- drivers/staging/et131x/et131x.c | 119 ++++++++++++++++++++------------------- 1 files changed, 60 insertions(+), 59 deletions(-)
drivers/staging/et131x/et131x.c +60 -59
@@ -795,7 +795,7 @@ static int eeprom_read(struct et131x_adapter *adapter, u32 addr, u8 *pdata)return (status &LBCIF_STATUS_ACK_ERROR ) ? -EIO :0 ; } -int et131x_init_eeprom (struct et131x_adapter *adapter) +static int et131x_init_eeprom (struct et131x_adapter *adapter) {struct pci_dev *pdev = adapter->pdev;u8 eestatus;
@@ -868,7 +868,7 @@ int et131x_init_eeprom(struct et131x_adapter *adapter)* et131x_rx_dma_enable - re-start of Rx_DMA on the ET1310. * @adapter: pointer to our adapter structure */ -void et131x_rx_dma_enable (struct et131x_adapter *adapter) +static void et131x_rx_dma_enable (struct et131x_adapter *adapter) {/* Setup the receive dma configuration register for normal operation */ u32 csr =0x2000 ;/* FBR1 enable */
@@ -906,7 +906,7 @@ void et131x_rx_dma_enable(struct et131x_adapter *adapter)* et131x_rx_dma_disable - Stop of Rx_DMA on the ET1310 * @adapter: pointer to our adapter structure */ -void et131x_rx_dma_disable (struct et131x_adapter *adapter) +static void et131x_rx_dma_disable (struct et131x_adapter *adapter) {u32 csr;/* Setup the receive dma configuration register */
@@ -928,7 +928,7 @@ void et131x_rx_dma_disable(struct et131x_adapter *adapter)* * Mainly used after a return to the D0 (full-power) state from a lower state. */ -void et131x_tx_dma_enable (struct et131x_adapter *adapter) +static void et131x_tx_dma_enable (struct et131x_adapter *adapter) {/* Setup the transmit dma configuration register for normal * operation
@@ -964,7 +964,7 @@ static inline void add_12bit(u32 *v, int n)* et1310_config_mac_regs1 - Initialize the first part of MAC regs * @adapter: pointer to our adapter structure */ -void et1310_config_mac_regs1 (struct et131x_adapter *adapter) +static void et1310_config_mac_regs1 (struct et131x_adapter *adapter) {struct mac_regs __iomem *macregs = &adapter->regs->mac;u32 station1;
@@ -1024,7 +1024,7 @@ void et1310_config_mac_regs1(struct et131x_adapter *adapter)* et1310_config_mac_regs2 - Initialize the second part of MAC regs * @adapter: pointer to our adapter structure */ -void et1310_config_mac_regs2 (struct et131x_adapter *adapter) +static void et1310_config_mac_regs2 (struct et131x_adapter *adapter) {int32_t delay =0 ;struct mac_regs __iomem *mac = &adapter->regs->mac;
@@ -1105,7 +1105,7 @@ void et1310_config_mac_regs2(struct et131x_adapter *adapter)* * Returns 0 if the device is not in phy coma, 1 if it is in phy coma */ -int et1310_in_phy_coma (struct et131x_adapter *adapter) +static int et1310_in_phy_coma (struct et131x_adapter *adapter) {u32 pmcsr;
@@ -1114,7 +1114,7 @@ int et1310_in_phy_coma(struct et131x_adapter *adapter)return ET_PM_PHY_SW_COMA & pmcsr ?1 :0 ; } -void et1310_setup_device_for_multicast (struct et131x_adapter *adapter) +static void et1310_setup_device_for_multicast (struct et131x_adapter *adapter) {struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac;uint32_t nIndex;
@@ -1163,7 +1163,7 @@ void et1310_setup_device_for_multicast(struct et131x_adapter *adapter) } } -void et1310_setup_device_for_unicast (struct et131x_adapter *adapter) +static void et1310_setup_device_for_unicast (struct et131x_adapter *adapter) {struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac;u32 uni_pf1;
@@ -1203,7 +1203,7 @@ void et1310_setup_device_for_unicast(struct et131x_adapter *adapter) } } -void et1310_config_rxmac_regs (struct et131x_adapter *adapter) +static void et1310_config_rxmac_regs (struct et131x_adapter *adapter) {struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac;struct phy_device *phydev = adapter->phydev;
@@ -1334,7 +1334,7 @@ void et1310_config_rxmac_regs(struct et131x_adapter *adapter)writel (0x9 , &rxmac->ctrl); } -void et1310_config_txmac_regs (struct et131x_adapter *adapter) +static void et1310_config_txmac_regs (struct et131x_adapter *adapter) {struct txmac_regs __iomem *txmac = &adapter->regs->txmac;
@@ -1348,7 +1348,7 @@ void et1310_config_txmac_regs(struct et131x_adapter *adapter)writel (0x40 , &txmac->cf_param); } -void et1310_config_macstat_regs (struct et131x_adapter *adapter) +static void et1310_config_macstat_regs (struct et131x_adapter *adapter) {struct macstat_regs __iomem *macstat = &adapter->regs->macstat;
@@ -1422,7 +1422,7 @@ void et1310_config_macstat_regs(struct et131x_adapter *adapter)* * Returns 0 on success, errno on failure (as defined in errno.h) */ -int et131x_phy_mii_read (struct et131x_adapter *adapter,u8 addr, +static int et131x_phy_mii_read (struct et131x_adapter *adapter,u8 addr,u8 reg,u16 *value) {struct mac_regs __iomem *mac = &adapter->regs->mac;
@@ -1478,7 +1478,7 @@ int et131x_phy_mii_read(struct et131x_adapter *adapter, u8 addr,return status; } -int et131x_mii_read (struct et131x_adapter *adapter,u8 reg,u16 *value) +static int et131x_mii_read (struct et131x_adapter *adapter,u8 reg,u16 *value) {struct phy_device *phydev = adapter->phydev;
@@ -1498,7 +1498,7 @@ int et131x_mii_read(struct et131x_adapter *adapter, u8 reg, u16 *value)* * Return 0 on success, errno on failure (as defined in errno.h) */ -int et131x_mii_write (struct et131x_adapter *adapter,u8 reg,u16 value) +static int et131x_mii_write (struct et131x_adapter *adapter,u8 reg,u16 value) {struct mac_regs __iomem *mac = &adapter->regs->mac;struct phy_device *phydev = adapter->phydev;
@@ -1564,8 +1564,9 @@ int et131x_mii_write(struct et131x_adapter *adapter, u8 reg, u16 value) }/* Still used from _mac for BIT_READ */ -void et1310_phy_access_mii_bit (struct et131x_adapter *adapter,u16 action, -u16 regnum,u16 bitnum,u8 *value) +static void et1310_phy_access_mii_bit (struct et131x_adapter *adapter, +u16 action,u16 regnum,u16 bitnum, +u8 *value) {u16 reg;u16 mask =0x0001 << bitnum;
@@ -1591,7 +1592,7 @@ void et1310_phy_access_mii_bit(struct et131x_adapter *adapter, u16 action, } } -void et1310_config_flow_control (struct et131x_adapter *adapter) +static void et1310_config_flow_control (struct et131x_adapter *adapter) {struct phy_device *phydev = adapter->phydev;
@@ -1632,7 +1633,7 @@ void et1310_config_flow_control(struct et131x_adapter *adapter)* et1310_update_macstat_host_counters - Update the local copy of the statistics * @adapter: pointer to the adapter structure */ -void et1310_update_macstat_host_counters (struct et131x_adapter *adapter) +static void et1310_update_macstat_host_counters (struct et131x_adapter *adapter) {struct ce_stats *stats = &adapter->stats; struct macstat_regs __iomem *macstat =
@@ -1664,7 +1665,7 @@ void et1310_update_macstat_host_counters(struct et131x_adapter *adapter)* the statistics held in the adapter structure, checking the "wrap" * bit for each counter. */ -void et1310_handle_macstat_interrupt (struct et131x_adapter *adapter) +static void et1310_handle_macstat_interrupt (struct et131x_adapter *adapter) {u32 carry_reg1;u32 carry_reg2;
@@ -1716,7 +1717,7 @@ void et1310_handle_macstat_interrupt(struct et131x_adapter *adapter)/* PHY functions */ -int et131x_mdio_read (struct mii_bus *bus,int phy_addr,int reg) +static int et131x_mdio_read (struct mii_bus *bus,int phy_addr,int reg) {struct net_device *netdev = bus->priv;struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -1731,7 +1732,7 @@ int et131x_mdio_read(struct mii_bus *bus, int phy_addr, int reg)return value; } -int et131x_mdio_write (struct mii_bus *bus,int phy_addr,int reg,u16 value) +static int et131x_mdio_write (struct mii_bus *bus,int phy_addr,int reg,u16 value) {struct net_device *netdev = bus->priv;struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -1739,7 +1740,7 @@ int et131x_mdio_write(struct mii_bus *bus, int phy_addr, int reg, u16 value)return et131x_mii_write (adapter, reg, value); } -int et131x_mdio_reset (struct mii_bus *bus) +static int et131x_mdio_reset (struct mii_bus *bus) {struct net_device *netdev = bus->priv;struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -1759,7 +1760,7 @@ int et131x_mdio_reset(struct mii_bus *bus)* Can't you see that this code processed * Phy power, phy power.. */ -void et1310_phy_power_down (struct et131x_adapter *adapter,bool down) +static void et1310_phy_power_down (struct et131x_adapter *adapter,bool down) {u16 data;
@@ -1775,7 +1776,7 @@ void et1310_phy_power_down(struct et131x_adapter *adapter, bool down)* @adapter: pointer to our private adapter structure * */ -void et131x_xcvr_init (struct et131x_adapter *adapter) +static void et131x_xcvr_init (struct et131x_adapter *adapter) {u16 imr;u16 isr;
@@ -1822,7 +1823,7 @@ void et131x_xcvr_init(struct et131x_adapter *adapter)* * Used to configure the global registers on the JAGCore */ -void et131x_configure_global_regs (struct et131x_adapter *adapter) +static void et131x_configure_global_regs (struct et131x_adapter *adapter) {struct global_regs __iomem *regs = &adapter->regs->global;
@@ -1869,7 +1870,7 @@ void et131x_configure_global_regs(struct et131x_adapter *adapter)* et131x_config_rx_dma_regs - Start of Rx_DMA init sequence * @adapter: pointer to our adapter structure */ -void et131x_config_rx_dma_regs (struct et131x_adapter *adapter) +static void et131x_config_rx_dma_regs (struct et131x_adapter *adapter) {struct rxdma_regs __iomem *rx_dma = &adapter->regs->rxdma;struct rx_ring *rx_local = &adapter->rx_ring;
@@ -1987,7 +1988,7 @@ void et131x_config_rx_dma_regs(struct et131x_adapter *adapter)* Configure the transmit engine with the ring buffers we have created * and prepare it for use. */ -void et131x_config_tx_dma_regs (struct et131x_adapter *adapter) +static void et131x_config_tx_dma_regs (struct et131x_adapter *adapter) {struct txdma_regs __iomem *txdma = &adapter->regs->txdma;
@@ -2017,7 +2018,7 @@ void et131x_config_tx_dma_regs(struct et131x_adapter *adapter)* * Returns 0 on success, errno on failure (as defined in errno.h) */ -void et131x_adapter_setup (struct et131x_adapter *adapter) +static void et131x_adapter_setup (struct et131x_adapter *adapter) {/* Configure the JAGCore */ et131x_configure_global_regs (adapter);
@@ -2044,7 +2045,7 @@ void et131x_adapter_setup(struct et131x_adapter *adapter)* et131x_soft_reset - Issue a soft reset to the hardware, complete for ET1310 * @adapter: pointer to our private adapter structure */ -void et131x_soft_reset (struct et131x_adapter *adapter) +static void et131x_soft_reset (struct et131x_adapter *adapter) {/* Disable MAC Core */ writel (0xc00f0000 , &adapter->regs->mac.cfg1);
@@ -2062,7 +2063,7 @@ void et131x_soft_reset(struct et131x_adapter *adapter)* Enable the appropriate interrupts on the ET131x according to our * configuration */ -void et131x_enable_interrupts (struct et131x_adapter *adapter) +static void et131x_enable_interrupts (struct et131x_adapter *adapter) {u32 mask;
@@ -2082,7 +2083,7 @@ void et131x_enable_interrupts(struct et131x_adapter *adapter)* * Block all interrupts from the et131x device at the device itself */ -void et131x_disable_interrupts (struct et131x_adapter *adapter) +static void et131x_disable_interrupts (struct et131x_adapter *adapter) {/* Disable all global interrupts */ writel (INT_MASK_DISABLE , &adapter->regs->global.int_mask);
@@ -2092,7 +2093,7 @@ void et131x_disable_interrupts(struct et131x_adapter *adapter)* et131x_tx_dma_disable - Stop of Tx_DMA on the ET1310 * @adapter: pointer to our adapter structure */ -void et131x_tx_dma_disable (struct et131x_adapter *adapter) +static void et131x_tx_dma_disable (struct et131x_adapter *adapter) {/* Setup the tramsmit dma configuration register */ writel(ET_TXDMA_CSR_HALT|ET_TXDMA_SNGL_EPKT,
@@ -2103,7 +2104,7 @@ void et131x_tx_dma_disable(struct et131x_adapter *adapter)* et131x_enable_txrx - Enable tx/rx queues * @netdev: device to be enabled */ -void et131x_enable_txrx (struct net_device *netdev) +static void et131x_enable_txrx (struct net_device *netdev) {struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -2123,7 +2124,7 @@ void et131x_enable_txrx(struct net_device *netdev)* et131x_disable_txrx - Disable tx/rx queues * @netdev: device to be disabled */ -void et131x_disable_txrx (struct net_device *netdev) +static void et131x_disable_txrx (struct net_device *netdev) {struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -2142,7 +2143,7 @@ void et131x_disable_txrx(struct net_device *netdev)* et131x_init_send - Initialize send data structures * @adapter: pointer to our private adapter structure */ -void et131x_init_send (struct et131x_adapter *adapter) +static void et131x_init_send (struct et131x_adapter *adapter) {struct tcb *tcb;u32 ct;
@@ -2192,7 +2193,7 @@ void et131x_init_send(struct et131x_adapter *adapter)* indicating linkup status, call the MPDisablePhyComa routine to * restore JAGCore and gigE PHY */ -void et1310_enable_phy_coma (struct et131x_adapter *adapter) +static void et1310_enable_phy_coma (struct et131x_adapter *adapter) {unsigned long flags;u32 pmcsr;
@@ -2231,7 +2232,7 @@ void et1310_enable_phy_coma(struct et131x_adapter *adapter)* et1310_disable_phy_coma - Disable the Phy Coma Mode * @adapter: pointer to our adapter structure */ -void et1310_disable_phy_coma (struct et131x_adapter *adapter) +static void et1310_disable_phy_coma (struct et131x_adapter *adapter) {u32 pmcsr;
@@ -2296,7 +2297,7 @@ static inline u32 bump_free_buff_ring(u32 *free_buff_ring, u32 limit)* @offset: pointer to the offset variable * @mask: correct mask */ -void et131x_align_allocated_memory (struct et131x_adapter *adapter, +static void et131x_align_allocated_memory (struct et131x_adapter *adapter,uint64_t *phys_addr,uint64_t *offset,uint64_t mask) {
@@ -2325,7 +2326,7 @@ void et131x_align_allocated_memory(struct et131x_adapter *adapter,* Allocates Free buffer ring 1 for sure, free buffer ring 0 if required, * and the Packet Status Ring. */ -int et131x_rx_dma_memory_alloc (struct et131x_adapter *adapter) +static int et131x_rx_dma_memory_alloc (struct et131x_adapter *adapter) {u32 i, j;u32 bufsize;
@@ -2629,7 +2630,7 @@ int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter)* et131x_rx_dma_memory_free - Free all memory allocated within this module. * @adapter: pointer to our private adapter structure */ -void et131x_rx_dma_memory_free (struct et131x_adapter *adapter) +static void et131x_rx_dma_memory_free (struct et131x_adapter *adapter) {u32 index;u32 bufsize;
@@ -2774,7 +2775,7 @@ void et131x_rx_dma_memory_free(struct et131x_adapter *adapter)* * Returns 0 on success and errno on failure (as defined in errno.h) */ -int et131x_init_recv (struct et131x_adapter *adapter) +static int et131x_init_recv (struct et131x_adapter *adapter) {int status = -ENOMEM ;struct rfd *rfd =NULL ;
@@ -2824,7 +2825,7 @@ int et131x_init_recv(struct et131x_adapter *adapter)* et131x_set_rx_dma_timer - Set the heartbeat timer according to line rate. * @adapter: pointer to our adapter structure */ -void et131x_set_rx_dma_timer (struct et131x_adapter *adapter) +static void et131x_set_rx_dma_timer (struct et131x_adapter *adapter) {struct phy_device *phydev = adapter->phydev;
@@ -3139,7 +3140,7 @@ static struct rfd *nic_rx_pkts(struct et131x_adapter *adapter)* * Assumption, Rcv spinlock has been acquired. */ -void et131x_handle_recv_interrupt (struct et131x_adapter *adapter) +static void et131x_handle_recv_interrupt (struct et131x_adapter *adapter) {struct rfd *rfd =NULL ;u32 count =0 ;
@@ -3202,7 +3203,7 @@ void et131x_handle_recv_interrupt(struct et131x_adapter *adapter)* memory. The device will update the "status" in memory each time it xmits a * packet. */ -int et131x_tx_dma_memory_alloc (struct et131x_adapter *adapter) +static int et131x_tx_dma_memory_alloc (struct et131x_adapter *adapter) {int desc_size =0 ;struct tx_ring *tx_ring = &adapter->tx_ring;
@@ -3256,7 +3257,7 @@ int et131x_tx_dma_memory_alloc(struct et131x_adapter *adapter)* * Returns 0 on success and errno on failure (as defined in errno.h). */ -void et131x_tx_dma_memory_free (struct et131x_adapter *adapter) +static void et131x_tx_dma_memory_free (struct et131x_adapter *adapter) {int desc_size =0 ;
@@ -3578,7 +3579,7 @@ static int send_packet(struct sk_buff *skb, struct et131x_adapter *adapter)* * Return 0 in almost all cases; non-zero value in extreme hard failure only */ -int et131x_send_packets (struct sk_buff *skb,struct net_device *netdev) +static int et131x_send_packets (struct sk_buff *skb,struct net_device *netdev) {int status =0 ;struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -3696,7 +3697,7 @@ static inline void free_send_packet(struct et131x_adapter *adapter,* * Assumption - Send spinlock has been acquired */ -void et131x_free_busy_send_packets (struct et131x_adapter *adapter) +static void et131x_free_busy_send_packets (struct et131x_adapter *adapter) {struct tcb *tcb;unsigned long flags;
@@ -3743,7 +3744,7 @@ void et131x_free_busy_send_packets(struct et131x_adapter *adapter)* * Assumption - Send spinlock has been acquired */ -void et131x_handle_send_interrupt (struct et131x_adapter *adapter) +static void et131x_handle_send_interrupt (struct et131x_adapter *adapter) {unsigned long flags;u32 serviced;
@@ -3965,7 +3966,7 @@ static struct ethtool_ops et131x_ethtool_ops = { .get_link = ethtool_op_get_link, }; -void et131x_set_ethtool_ops (struct net_device *netdev) +static void et131x_set_ethtool_ops (struct net_device *netdev) {SET_ETHTOOL_OPS (netdev, &et131x_ethtool_ops); }
@@ -3976,7 +3977,7 @@ void et131x_set_ethtool_ops(struct net_device *netdev)* et131x_hwaddr_init - set up the MAC Address on the ET1310 * @adapter: pointer to our private adapter structure */ -void et131x_hwaddr_init (struct et131x_adapter *adapter) +static void et131x_hwaddr_init (struct et131x_adapter *adapter) {/* If have our default mac from init and no mac address from * EEPROM then we need to generate the last octet and set it on the
@@ -4110,7 +4111,7 @@ static int et131x_pci_init(struct et131x_adapter *adapter,* The routine called when the error timer expires, to track the number of * recurring errors. */ -void et131x_error_timer_handler (unsigned long data) +static void et131x_error_timer_handler (unsigned long data) {struct et131x_adapter *adapter = (struct et131x_adapter *) data;struct phy_device *phydev = adapter->phydev;
@@ -4153,7 +4154,7 @@ void et131x_error_timer_handler(unsigned long data)* * Allocate all the memory blocks for send, receive and others. */ -int et131x_adapter_memory_alloc (struct et131x_adapter *adapter) +static int et131x_adapter_memory_alloc (struct et131x_adapter *adapter) {int status;
@@ -4188,7 +4189,7 @@ int et131x_adapter_memory_alloc(struct et131x_adapter *adapter)* et131x_adapter_memory_free - Free all memory allocated for use by Tx & Rx * @adapter: pointer to our private adapter structure */ -void et131x_adapter_memory_free (struct et131x_adapter *adapter) +static void et131x_adapter_memory_free (struct et131x_adapter *adapter) {/* Free DMA memory */ et131x_tx_dma_memory_free (adapter);
@@ -4417,7 +4418,7 @@ static void __devexit et131x_pci_remove(struct pci_dev *pdev)* et131x_up - Bring up a device for use. * @netdev: device to be opened */ -void et131x_up (struct net_device *netdev) +static void et131x_up (struct net_device *netdev) {struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -4429,7 +4430,7 @@ void et131x_up(struct net_device *netdev)* et131x_down - Bring down the device * @netdev: device to be broght down */ -void et131x_down (struct net_device *netdev) +static void et131x_down (struct net_device *netdev) {struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -4567,7 +4568,7 @@ out:* scheduled to run in a deferred context by the ISR. This is where the ISR's * work actually gets done. */ -void et131x_isr_handler (struct work_struct *work) +static void et131x_isr_handler (struct work_struct *work) {struct et131x_adapter *adapter = container_of(work, struct et131x_adapter, task);
@@ -4823,7 +4824,7 @@ static struct net_device_stats *et131x_stats(struct net_device *netdev)* * Returns 0 on success, errno on failure (as defined in errno.h) */ -int et131x_open (struct net_device *netdev) +static int et131x_open (struct net_device *netdev) {int result =0 ;struct et131x_adapter *adapter =netdev_priv (netdev);
@@ -4857,7 +4858,7 @@ int et131x_open(struct net_device *netdev)* * Returns 0 on success, errno on failure (as defined in errno.h) */ -int et131x_close (struct net_device *netdev) +static int et131x_close (struct net_device *netdev) {struct et131x_adapter *adapter =netdev_priv (netdev);
Signature · 1 line
1.7.6.4
Re: [PATCH staging 1/6] et131x: add static qualifiers.
Quoted 1 line · Francois Romieu
Signed-off-by Francois Romieu <[email protected]>
Great, thanks.
PATCH 2/6 et131x: uintxy_t removal.
In reply to Mark Einon--- drivers/staging/et131x/et131x.c | 53 ++++++++++++++++++++------------------- 1 files changed, 27 insertions(+), 26 deletions(-)
drivers/staging/et131x/et131x.c +27 -26
@@ -303,8 +303,8 @@ struct fbr_lookup {dma_addr_t ring_physaddr;void *mem_virtaddrs[MAX_DESC_PER_RING_RX /FBR_CHUNKS ];dma_addr_t mem_physaddrs[MAX_DESC_PER_RING_RX /FBR_CHUNKS ]; -uint64_t real_physaddr; -uint64_t offset; +dma_addr_t real_physaddr; +u32 offset;u32 local_full;u32 num_entries;u32 buffsize;
@@ -1117,12 +1117,10 @@ static int et1310_in_phy_coma(struct et131x_adapter *adapter)static void et1310_setup_device_for_multicast (struct et131x_adapter *adapter) {struct rxmac_regs __iomem *rxmac = &adapter->regs->rxmac; -uint32_t nIndex; -uint32_t result; -uint32_t hash1 =0 ; -uint32_t hash2 =0 ; -uint32_t hash3 =0 ; -uint32_t hash4 =0 ; +u32 hash1 =0 ; +u32 hash2 =0 ; +u32 hash3 =0 ; +u32 hash4 =0 ;u32 pm_csr;/* If ET131X_PACKET_TYPE_MULTICAST is specified, then we provision
@@ -1131,10 +1129,13 @@ static void et1310_setup_device_for_multicast(struct et131x_adapter *adapter)* driver. */ if (adapter->packet_filter &ET131X_PACKET_TYPE_MULTICAST ) { +int i; +/* Loop through our multicast array and set up the device */ -for (nIndex =0 ; nIndex < adapter->multicast_addr_count; - nIndex++) { - result =ether_crc (6 , adapter->multicast_list[nIndex]); +for (i =0 ; i < adapter->multicast_addr_count; i++) { +u32 result; + + result =ether_crc (6 , adapter->multicast_list[i]); result = (result &0x3F800000 ) >>23 ;
@@ -1925,9 +1926,10 @@ static void et131x_config_rx_dma_regs(struct et131x_adapter *adapter)/* Set the address and parameters of Free buffer ring 1 (and 0 if * required) into the 1310's registers */ -writel ((u32) (rx_local->fbr[0 ]->real_physaddr >>32 ), +writel (((u64 ) rx_local->fbr[0 ]->real_physaddr) >>32 , &rx_dma->fbr1_base_hi); -writel ((u32 ) rx_local->fbr[0 ]->real_physaddr, &rx_dma->fbr1_base_lo); +writel (((u64 ) rx_local->fbr[0 ]->real_physaddr) &DMA_BIT_MASK (32 ), + &rx_dma->fbr1_base_lo);writel (rx_local->fbr[0 ]->num_entries -1 , &rx_dma->fbr1_num_des);writel (ET_DMA10_WRAP , &rx_dma->fbr1_full_offset);
@@ -1949,9 +1951,10 @@ static void et131x_config_rx_dma_regs(struct et131x_adapter *adapter) fbr_entry++; } -writel ((u32) (rx_local->fbr[1 ]->real_physaddr >>32 ), +writel (((u64 ) rx_local->fbr[1 ]->real_physaddr) >>32 , &rx_dma->fbr0_base_hi); -writel ((u32 ) rx_local->fbr[1 ]->real_physaddr, &rx_dma->fbr0_base_lo); +writel (((u64 ) rx_local->fbr[1 ]->real_physaddr) &DMA_BIT_MASK (32 ), + &rx_dma->fbr0_base_lo);writel (rx_local->fbr[1 ]->num_entries -1 , &rx_dma->fbr0_num_des);writel (ET_DMA10_WRAP , &rx_dma->fbr0_full_offset);
@@ -2298,15 +2301,13 @@ static inline u32 bump_free_buff_ring(u32 *free_buff_ring, u32 limit)* @mask: correct mask */ static void et131x_align_allocated_memory (struct et131x_adapter *adapter, -uint64_t *phys_addr, -uint64_t *offset,uint64_t mask) +dma_addr_t *phys_addr,u32 *offset, +u32 mask) { -uint64_t new_addr; +dma_addr_t new_addr = *phys_addr & ~mask; *offset =0 ; - new_addr = *phys_addr & ~mask; -if (new_addr != *phys_addr) {/* Move to next aligned block */ new_addr += mask +1 ;
@@ -2455,8 +2456,8 @@ static int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter) rx_ring->fbr[1]->offset);#endif for (i =0 ; i < (rx_ring->fbr[0 ]->num_entries /FBR_CHUNKS ); i++) { -u64 fbr1_offset; -u64 fbr1_tmp_physaddr; +dma_addr_t fbr1_tmp_physaddr; +u32 fbr1_offset;u32 fbr1_align;/* This code allocates an area of memory big enough for N
@@ -2521,8 +2522,8 @@ static int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter)#ifdef USE_FBR0 /* Same for FBR0 (if in use) */ for (i =0 ; i < (rx_ring->fbr[1 ]->num_entries /FBR_CHUNKS ); i++) { -u64 fbr0_offset; -u64 fbr0_tmp_physaddr; +dma_addr_t fbr0_tmp_physaddr; +u32 fbr0_offset; fbr_chunksize = ((FBR_CHUNKS +1 ) * rx_ring->fbr[1 ]->buffsize) -1 ;
@@ -4900,8 +4901,8 @@ static int et131x_ioctl(struct net_device *netdev, struct ifreq *reqbuf,*/ static int et131x_set_packet_filter (struct et131x_adapter *adapter) { +int filter = adapter->packet_filter;int status =0 ; -uint32_t filter = adapter->packet_filter;u32 ctrl;u32 pf_ctrl;
@@ -4963,7 +4964,7 @@ static int et131x_set_packet_filter(struct et131x_adapter *adapter)static void et131x_multicast (struct net_device *netdev) {struct et131x_adapter *adapter =netdev_priv (netdev); -uint32_t packet_filter =0 ; +int packet_filter;unsigned long flags;struct netdev_hw_addr *ha;int i;
Signature · 1 line
1.7.6.4
Re: [PATCH staging 2/6] et131x: uintxy_t removal.
Quoted 1 line · Francois Romieu
Signed-off-by Francois Romieu <[email protected]>
I don't believe this is strictly necessary, as uintxy_ts are allowed, but ok - at least it makes the file homogeneous.
Re: [PATCH staging 2/6] et131x: uintxy_t removal.
Mark Einon <[email protected]> :
[...]
Quoted 2 lines
I don't believe this is strictly necessary, as
uintxy_tsare allowed, but ok - at least it makes the file homogeneous.
It's exactly the point : avoid mixing both types.
Signature · 1 line
Ueimor
PATCH 3/6 et131x: fix error paths in et131x_pci_setup.
In reply to Mark EinonWrong status code and unbalanced phy_connect.
--- drivers/staging/et131x/et131x.c | 99 +++++++++++++++------------------------ 1 files changed, 38 insertions(+), 61 deletions(-)
drivers/staging/et131x/et131x.c +38 -61
@@ -4402,6 +4402,7 @@ static void __devexit et131x_pci_remove(struct pci_dev *pdev)struct et131x_adapter *adapter =netdev_priv (netdev);unregister_netdev (netdev); +phy_disconnect (adapter->phydev);mdiobus_unregister (adapter->mii_bus);kfree (adapter->mii_bus->irq);mdiobus_free (adapter->mii_bus);
@@ -5245,40 +5246,6 @@ static const struct net_device_ops et131x_netdev_ops = { };/** -* et131x_device_alloc -* -* Returns pointer to the allocated and initialized net_device struct for -* this device. -* -* Create instances of net_device and wl_private for the new adapter and -* register the device's entry points in the net_device structure. -*/ -struct net_device *et131x_device_alloc (void ) -{ -struct net_device *netdev; - -/* Alloc net_device and adapter structs */ - netdev =alloc_etherdev (sizeof (struct et131x_adapter )); - -if (!netdev) { -printk (KERN_ERR "et131x: Alloc of net_device struct failed\n" ); -return NULL ; - } - -/* -* Setup the function registration table (and other data) for a -* net_device -*/ - netdev->watchdog_timeo =ET131X_TX_TIMEOUT ; - netdev->netdev_ops = &et131x_netdev_ops; - -/* Poll? */ -/* netdev->poll = &et131x_poll; */ -/* netdev->poll_controller = &et131x_poll_controller; */ -return netdev; -} - -/** * et131x_pci_setup - Perform device initialization * @pdev: a pointer to the device's pci_dev structure * @ent: this device's entry in the pci_device_id table
@@ -5293,24 +5260,26 @@ struct net_device *et131x_device_alloc(void)static int __devinit et131x_pci_setup (struct pci_dev *pdev,const struct pci_device_id *ent) { -int result;struct net_device *netdev;struct et131x_adapter *adapter; +int rc;int ii; - result =pci_enable_device (pdev); -if (result) { + rc =pci_enable_device (pdev); +if (rc <0 ) {dev_err (&pdev->dev,"pci_enable_device() failed\n" ); - goto err_out; + goto out; }/* Perform some basic PCI checks */ if (!(pci_resource_flags (pdev,0 ) &IORESOURCE_MEM )) {dev_err (&pdev->dev,"Can't find PCI device's base address\n" ); + rc = -ENODEV ; goto err_disable; } -if (pci_request_regions (pdev,DRIVER_NAME )) { + rc =pci_request_regions (pdev,DRIVER_NAME ); +if (rc <0 ) {dev_err (&pdev->dev,"Can't get PCI resources\n" ); goto err_disable; }
@@ -5319,46 +5288,50 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,/* Check the DMA addressing support of this device */ if (!dma_set_mask (&pdev->dev,DMA_BIT_MASK (64 ))) { - result =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 )); -if (result) { + rc =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (64 )); +if (rc <0 ) {dev_err (&pdev->dev,"Unable to obtain 64 bit DMA for consistent allocations\n" ); goto err_release_res; } }else if (!dma_set_mask (&pdev->dev,DMA_BIT_MASK (32 ))) { - result =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (32 )); -if (result) { + rc =dma_set_coherent_mask (&pdev->dev,DMA_BIT_MASK (32 )); +if (rc <0 ) {dev_err (&pdev->dev,"Unable to obtain 32 bit DMA for consistent allocations\n" ); goto err_release_res; } }else {dev_err (&pdev->dev,"No usable DMA addressing method\n" ); - result = -EIO ; + rc = -EIO ; goto err_release_res; }/* Allocate netdev and private adapter structs */ - netdev =et131x_device_alloc (); + netdev =alloc_etherdev (sizeof (struct et131x_adapter ));if (!netdev) {dev_err (&pdev->dev,"Couldn't alloc netdev struct\n" ); - result = -ENOMEM ; + rc = -ENOMEM ; goto err_release_res; } + netdev->watchdog_timeo =ET131X_TX_TIMEOUT ; + netdev->netdev_ops = &et131x_netdev_ops; +SET_NETDEV_DEV (netdev, &pdev->dev);et131x_set_ethtool_ops (netdev); adapter =et131x_adapter_init (netdev, pdev); -/* Initialise the PCI setup for the device */ -et131x_pci_init (adapter, pdev); + rc =et131x_pci_init (adapter, pdev); +if (rc <0 ) + goto err_free_dev;/* Map the bus-relative registers to system virtual memory */ adapter->regs =pci_ioremap_bar (pdev,0 );if (!adapter->regs) {dev_err (&pdev->dev,"Cannot map device registers\n" ); - result = -ENOMEM ; + rc = -ENOMEM ; goto err_free_dev; }
@@ -5372,8 +5345,8 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,et131x_disable_interrupts (adapter);/* Allocate DMA memory */ - result =et131x_adapter_memory_alloc (adapter); -if (result) { + rc =et131x_adapter_memory_alloc (adapter); +if (rc <0 ) {dev_err (&pdev->dev,"Could not alloc adapater memory (DMA)\n" ); goto err_iounmap; }
@@ -5391,6 +5364,8 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev, adapter->boot_coma =0 ;et1310_disable_phy_coma (adapter); + rc = -ENOMEM ; +/* Setup the mii_bus struct */ adapter->mii_bus =mdiobus_alloc ();if (!adapter->mii_bus) {
@@ -5414,13 +5389,14 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,for (ii =0 ; ii <PHY_MAX_ADDR ; ii++) adapter->mii_bus->irq[ii] =PHY_POLL ; -if (mdiobus_register (adapter->mii_bus)) { + rc =mdiobus_register (adapter->mii_bus); +if (rc <0 ) {dev_err (&pdev->dev,"failed to register MII bus\n" ); -mdiobus_free (adapter->mii_bus); goto err_mdio_free_irq; } -if (et131x_mii_probe (netdev)) { + rc =et131x_mii_probe (netdev); +if (rc <0 ) {dev_err (&pdev->dev,"failed to probe MII bus\n" ); goto err_mdio_unregister; }
@@ -5436,10 +5412,10 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,*/ /* Register the net_device struct with the Linux network layer */ - result =register_netdev (netdev); -if (result !=0 ) { + rc =register_netdev (netdev); +if (rc <0 ) {dev_err (&pdev->dev,"register_netdev() failed\n" ); - goto err_mdio_unregister; + goto err_phy_disconnect; }/* Register the net_device struct with the PCI subsystem. Save a copy
@@ -5448,9 +5424,11 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,*/ pci_set_drvdata (pdev, netdev);pci_save_state (adapter->pdev); +out: +return rc; -return result; - +err_phy_disconnect: +phy_disconnect (adapter->phydev); err_mdio_unregister:mdiobus_unregister (adapter->mii_bus); err_mdio_free_irq:
@@ -5468,8 +5446,7 @@ err_release_res:pci_release_regions (pdev); err_disable:pci_disable_device (pdev); -err_out: -return result; + goto out; } static SIMPLE_DEV_PM_OPS(et131x_pm_ops, et131x_suspend, et131x_resume);
Signature · 1 line
1.7.6.4
Re: [PATCH staging 3/6] et131x: fix error paths in et131x_pci_setup.
Quoted 4 lines · Francois Romieu
Wrong status code and unbalanced
phy_connect.Signed-off-by Francois Romieu <[email protected]>---
[...]
Quoted 15 lines
drivers/staging/et131x/et131x.c +4
-2@@ -5448,9 +5424,11 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,*/ pci_set_drvdata (pdev, netdev);pci_save_state (adapter->pdev); +out: +return rc; -return result; - +err_phy_disconnect: +phy_disconnect (adapter->phydev); err_mdio_unregister:mdiobus_unregister (adapter->mii_bus); err_mdio_free_irq:
drivers/staging/et131x/et131x.c err_release_res: · line 5452
Quoted 9 lines
drivers/staging/et131x/et131x.c +1
-2@@ -5468,8 +5446,7 @@ err_release_res:pci_release_regions (pdev); err_disable:pci_disable_device (pdev); -err_out: -return result; + goto out; } static SIMPLE_DEV_PM_OPS(et131x_pm_ops, et131x_suspend, et131x_resume);
Patch looks good, but again, could you remove the backwards jumping goto.
Re: [PATCH staging 3/6] et131x: fix error paths in et131x_pci_setup.
Mark Einon <[email protected]> :
[...]
Quoted 1 line
Patch looks good, but again, could you remove the backwards jumping goto.
It's rather low priority. I originally thought I would simply send a list of bugs / problems / debatable points.
I won't mind at all if you change it and take the credit, really.
Signature · 1 line
Ueimor
Re: [PATCH staging 3/6] et131x: fix error paths in et131x_pci_setup.
In reply to Francois RomieuQuoted 3 lines · Francois Romieu
Wrong status code and unbalanced
phy_connect.Signed-off-by Francois Romieu <[email protected]>
PATCH 4/6 et131x: remove extraneous pci_save_state.
In reply to Mark Einonpci_{save, restore}_state are balanced in .suspend and .resume. They are not used anywhere else in the driver.
--- drivers/staging/et131x/et131x.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
drivers/staging/et131x/et131x.c +0 -1
@@ -5423,7 +5423,6 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,* been initialized, just in case it needs to be quickly restored. */ pci_set_drvdata (pdev, netdev); -pci_save_state (adapter->pdev); out:return rc;
Signature · 1 line
1.7.6.4
Re: [PATCH staging 4/6] et131x: remove extraneous pci_save_state.
Quoted 4 lines · Francois Romieu
pci_{save, restore}_state are balanced in .suspend and .resume. They are not used anywhere else in the driver.
Signed-off-by Francois Romieu <[email protected]>
Looks good.
PATCH 5/6 et131x: kiss netdev.{base_addr, irq} goodbye.
In reply to Mark Einon--- drivers/staging/et131x/et131x.c | 17 ++++++----------- 1 files changed, 6 insertions(+), 11 deletions(-)
drivers/staging/et131x/et131x.c +6 -11
@@ -4366,10 +4366,6 @@ static struct et131x_adapter *et131x_adapter_init(struct net_device *netdev, adapter->pdev =pci_dev_get (pdev); adapter->netdev = netdev; -/* Do the same for the netdev struct */ - netdev->irq = pdev->irq; - netdev->base_addr =pci_resource_start (pdev,0 ); -/* Initialize spinlocks here */ spin_lock_init (&adapter->lock);spin_lock_init (&adapter->tcb_send_qlock);
@@ -4828,8 +4824,10 @@ static struct net_device_stats *et131x_stats(struct net_device *netdev)*/ static int et131x_open (struct net_device *netdev) { -int result =0 ;struct et131x_adapter *adapter =netdev_priv (netdev); +struct pci_dev *pdev = adapter->pdev; +unsigned int irq = pdev->irq; +int result;/* Start the timer to track NIC errors */ init_timer (&adapter->error_timer);
@@ -4838,12 +4836,9 @@ static int et131x_open(struct net_device *netdev) adapter->error_timer.data = (unsigned long )adapter;add_timer (&adapter->error_timer); -/* Register our IRQ */ - result =request_irq (netdev->irq, et131x_isr,IRQF_SHARED , - netdev->name, netdev); + result =request_irq (irq, et131x_isr,IRQF_SHARED , netdev->name, netdev);if (result) { -dev_err (&adapter->pdev->dev,"could not register IRQ %d\n" , - netdev->irq); +dev_err (&pdev->dev,"could not register IRQ %d\n" , irq);return result; }
@@ -4867,7 +4862,7 @@ static int et131x_close(struct net_device *netdev)et131x_down (netdev); adapter->flags &= ~fMP_ADAPTER_INTERRUPT_IN_USE; -free_irq (netdev->irq, netdev); +free_irq (adapter->pdev->irq, netdev);/* Stop the error timer */ return del_timer_sync (&adapter->error_timer);
Signature · 1 line
1.7.6.4
Re: [PATCH staging 5/6] et131x: kiss netdev.{base_addr, irq} goodbye.
Quoted 1 line · Francois Romieu
Signed-off-by Francois Romieu <[email protected]>
Looks good.
PATCH 6/6 et131x: uncloak PCIe capabilities.
In reply to Mark EinonFIXME: it should be possible to get rid of ET1310_PCI_L0L1LATENCY as well.
--- drivers/staging/et131x/et131x.c | 53 ++++++++++++++++++++++---------------- 1 files changed, 31 insertions(+), 22 deletions(-)
drivers/staging/et131x/et131x.c +29 -20
@@ -155,7 +155,6 @@ MODULE_DESCRIPTION("10/100/1000 Base-T Ethernet Driver "#define fMP_ADAPTER_FAIL_SEND_MASK 0x3ff00000/* Some offsets in PCI config space that are actually used. */ -#define ET1310_PCI_MAX_PYLD 0x4C#define ET1310_PCI_MAC_ADDRESS 0xA4#define ET1310_PCI_EEPROM_STATUS 0xB2#define ET1310_PCI_ACK_NACK 0xC0
@@ -4024,24 +4023,31 @@ static void et131x_hwaddr_init(struct et131x_adapter *adapter)static int et131x_pci_init (struct et131x_adapter *adapter,struct pci_dev *pdev) { -int i; -u8 max_payload; -u8 read_size_reg; +int cap =pci_pcie_cap (pdev); +u16 max_payload; +u16 ctl; +int i, rc; -if (et131x_init_eeprom (adapter) <0 ) -return -EIO ; + rc =et131x_init_eeprom (adapter); +if (rc <0 ) + goto out; +if (!cap) { +dev_err (&pdev->dev,"Missing PCIe capabilities\n" ); + goto err_out; + } +/* Let's set up the PORT LOGIC Register. First we need to know what * the max_payload_size is */ -if (pci_read_config_byte (pdev,ET1310_PCI_MAX_PYLD , &max_payload)) { +if (pci_read_config_word (pdev, cap +PCI_EXP_DEVCAP , &max_payload)) {dev_err (&pdev->dev,"Could not read PCI config space for Max Payload Size\n" ); -return -EIO ; + goto err_out; }/* Program the Ack/Nak latency and replay timers */ - max_payload &=0x07 ;/* Only the lower 3 bits are valid */ + max_payload &=0x07 ;if (max_payload <2 ) {static const u16 acknak[2 ] = {0x76 ,0xD0 };
@@ -4051,13 +4057,13 @@ static int et131x_pci_init(struct et131x_adapter *adapter, acknak[max_payload])) {dev_err (&pdev->dev,"Could not write PCI config space for ACK/NAK\n" ); -return -EIO ; + goto err_out; }if (pci_write_config_word (pdev,ET1310_PCI_REPLAY , replay[max_payload])) {dev_err (&pdev->dev,"Could not write PCI config space for Replay Timer\n" ); -return -EIO ; + goto err_out; } }
@@ -4067,23 +4073,22 @@ static int et131x_pci_init(struct et131x_adapter *adapter,if (pci_write_config_byte (pdev,ET1310_PCI_L0L1LATENCY ,0x11 )) {dev_err (&pdev->dev,"Could not write PCI config space for Latency Timers\n" ); -return -EIO ; + goto err_out; }/* Change the max read size to 2k */ -if (pci_read_config_byte (pdev,0x51 , &read_size_reg)) { +if (pci_read_config_word (pdev, cap +PCI_EXP_DEVCTL , &ctl)) {dev_err (&pdev->dev,"Could not read PCI config space for Max read size\n" ); -return -EIO ; + goto err_out; } - read_size_reg &=0x8f ; - read_size_reg |=0x40 ; + ctl = (ctl & ~PCI_EXP_DEVCTL_READRQ ) | (0x04 <<12 ); -if (pci_write_config_byte (pdev,0x51 , read_size_reg)) { +if (pci_write_config_word (pdev, cap +PCI_EXP_DEVCTL , ctl)) {dev_err (&pdev->dev,"Could not write PCI config space for Max read size\n" ); -return -EIO ; + goto err_out; }/* Get MAC address from config space if an eeprom exists, otherwise
@@ -4098,11 +4103,15 @@ static int et131x_pci_init(struct et131x_adapter *adapter,if (pci_read_config_byte (pdev,ET1310_PCI_MAC_ADDRESS + i, adapter->rom_addr + i)) {dev_err (&pdev->dev,"Could not read PCI config space for MAC address\n" ); -return -EIO ; + goto err_out; } }memcpy (adapter->addr, adapter->rom_addr,ETH_ALEN ); -return 0 ; +out: +return rc; +err_out: + rc = -EIO ; + goto out; }/**
Signature · 1 line
1.7.6.4
Re: [PATCH staging 6/6] et131x: uncloak PCIe capabilities.
Quoted 11 lines · Francois Romieu
FIXME: it should be possible to get rid of
ET1310_PCI_L0L1LATENCYas well.Signed-off-by Francois Romieu <[email protected]>--- drivers/staging/et131x/et131x.c | 53 ++++++++++++++++++++++---------------- 1 files changed, 31 insertions(+), 22 deletions(-)drivers/staging/et131x/et131x.c +0
-0
[...]
Quoted 6 lines
drivers/staging/et131x/et131x.c +3
-2-if (et131x_init_eeprom (adapter) <0 ) -return -EIO ; + rc =et131x_init_eeprom (adapter); +if (rc <0 ) + goto out;
[...]
drivers/staging/et131x/et131x.c static int et131x_pci_init(struct et131x_adapter *adapter, · line 4115
Quoted 9 lines
drivers/staging/et131x/et131x.c +5
-1}memcpy (adapter->addr, adapter->rom_addr,ETH_ALEN ); -return 0 ; +out: +return rc; +err_out: + rc = -EIO ; + goto out; }
Hi Francois,
The PCIe changes are good, however I think using gotos here doesn't add anything as there's no difficult locking to navigate and makes the code harder to read. both out: and err_out: are used to return an error, and the backwards jumping goto makes me a bit uncomfortable. Could you respin with just the PCIe changes?
Cheers,
Mark
Re: [PATCH staging 6/6] et131x: uncloak PCIe capabilities.
Mark Einon <[email protected]> :
[...]
Quoted 6 lines
The PCIe changes are good, however I think using gotos here doesn't add anything as there's no difficult locking to navigate and makes the code harder to read.
both out: anderr_out: are used to return an error, and the backwards jumping goto makes me a bit uncomfortable. Could you respin with just the PCIe changes?
I confess I use a 55 lines vi split terminal when reviewing these blocks.
As there is no documentation to check the remaining PCIe candidate bits, it's probably not worth it anyway.
Signature · 1 line
Ueimor
Re: [PATCH staging 6/6] et131x: uncloak PCIe capabilities.
Quoted 9 lines · Francois Romieu
Mark Einon <[email protected]> :
[...]Quoted 6 lines
The PCIe changes are good, however I think using gotos here doesn't add anything as there's no difficult locking to navigate and makes the code harder to read.
both out: anderr_out: are used to return an error, and the backwards jumping goto makes me a bit uncomfortable. Could you respin with just the PCIe changes?
Quoted 4 lines
I confess I use a 55 lines vi split terminal when reviewing these blocks.
As there is no documentation to check the remaining PCIe candidate bits, it's probably not worth it anyway.
Ok, I'll fixup the changes I highlighted and Ack your original patches, it's not much work to do so.
I do have some documentation for the PCI part of the registers (et1310_datasheet.pdf), which you can find online or I can send you a copy if you're interested (I managed to get it from LSI, who bought Agere). I've also been using a datasheet for the truephy ET1011 (also found online) as reference for some of the other registers, which although not exactly the same, is almost identical. You're welcome to a copy of that too.
Cheers,
Mark
Re: [PATCH staging 6/6] et131x: uncloak PCIe capabilities.
In reply to Francois RomieuQuoted 3 lines · Francois Romieu
FIXME: it should be possible to get rid of
ET1310_PCI_L0L1LATENCYas well.Signed-off-by Francois Romieu <[email protected]>