Skip to content

Commit

Permalink
e1000e: pass pointer to ring struct instead of adapter struct
Browse files Browse the repository at this point in the history
For ring-specific functions, pass a pointer to the ring struct instead of a
pointer to the adapter struct.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  • Loading branch information
Bruce Allan authored and Jeff Kirsher committed Jan 26, 2012
1 parent c5083cf commit 55aa698
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 127 deletions.
21 changes: 12 additions & 9 deletions drivers/net/ethernet/intel/e1000e/e1000.h
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ struct e1000_buffer {
};

struct e1000_ring {
struct e1000_adapter *adapter; /* back pointer to adapter */
void *desc; /* pointer to ring memory */
dma_addr_t dma; /* phys address of ring */
unsigned int size; /* length of ring in bytes */
Expand Down Expand Up @@ -334,11 +335,10 @@ struct e1000_adapter {
/*
* Rx
*/
bool (*clean_rx) (struct e1000_adapter *adapter,
int *work_done, int work_to_do)
____cacheline_aligned_in_smp;
void (*alloc_rx_buf) (struct e1000_adapter *adapter,
int cleaned_count, gfp_t gfp);
bool (*clean_rx) (struct e1000_ring *ring, int *work_done,
int work_to_do) ____cacheline_aligned_in_smp;
void (*alloc_rx_buf) (struct e1000_ring *ring, int cleaned_count,
gfp_t gfp);
struct e1000_ring *rx_ring;

u32 rx_int_delay;
Expand Down Expand Up @@ -398,6 +398,9 @@ struct e1000_adapter {

bool idle_check;
int phy_hang_count;

u16 tx_ring_count;
u16 rx_ring_count;
};

struct e1000_info {
Expand Down Expand Up @@ -492,10 +495,10 @@ extern void e1000e_down(struct e1000_adapter *adapter);
extern void e1000e_reinit_locked(struct e1000_adapter *adapter);
extern void e1000e_reset(struct e1000_adapter *adapter);
extern void e1000e_power_up_phy(struct e1000_adapter *adapter);
extern int e1000e_setup_rx_resources(struct e1000_adapter *adapter);
extern int e1000e_setup_tx_resources(struct e1000_adapter *adapter);
extern void e1000e_free_rx_resources(struct e1000_adapter *adapter);
extern void e1000e_free_tx_resources(struct e1000_adapter *adapter);
extern int e1000e_setup_rx_resources(struct e1000_ring *ring);
extern int e1000e_setup_tx_resources(struct e1000_ring *ring);
extern void e1000e_free_rx_resources(struct e1000_ring *ring);
extern void e1000e_free_tx_resources(struct e1000_ring *ring);
extern struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev,
struct rtnl_link_stats64
*stats);
Expand Down
10 changes: 5 additions & 5 deletions drivers/net/ethernet/intel/e1000e/ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -656,10 +656,10 @@ static int e1000_set_ringparam(struct net_device *netdev,

if (netif_running(adapter->netdev)) {
/* Try to get new resources before deleting old */
err = e1000e_setup_rx_resources(adapter);
err = e1000e_setup_rx_resources(rx_ring);
if (err)
goto err_setup_rx;
err = e1000e_setup_tx_resources(adapter);
err = e1000e_setup_tx_resources(tx_ring);
if (err)
goto err_setup_tx;

Expand All @@ -669,8 +669,8 @@ static int e1000_set_ringparam(struct net_device *netdev,
*/
adapter->rx_ring = rx_old;
adapter->tx_ring = tx_old;
e1000e_free_rx_resources(adapter);
e1000e_free_tx_resources(adapter);
e1000e_free_rx_resources(adapter->rx_ring);
e1000e_free_tx_resources(adapter->tx_ring);
kfree(tx_old);
kfree(rx_old);
adapter->rx_ring = rx_ring;
Expand All @@ -683,7 +683,7 @@ static int e1000_set_ringparam(struct net_device *netdev,
clear_bit(__E1000_RESETTING, &adapter->state);
return 0;
err_setup_tx:
e1000e_free_rx_resources(adapter);
e1000e_free_rx_resources(rx_ring);
err_setup_rx:
adapter->rx_ring = rx_old;
adapter->tx_ring = tx_old;
Expand Down
Loading

0 comments on commit 55aa698

Please sign in to comment.