Commit 7145074b authored by David S. Miller's avatar David S. Miller

Merge branch 'bcmgenet-next'

Petri Gynther says:

====================
net: bcmgenet: multiple Rx queues support

Final patch set to add support for multiple Rx queues:
1. remove priv->int0_mask and priv->int1_mask
2. modify Tx ring int_enable and int_disable vectors
3. simplify bcmgenet_init_dma()
4. tweak init_umac()
5. rework Tx NAPI code
6. rework Rx NAPI code
7. add support for multiple Rx queues
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 19cc2dec 4055eaef
...@@ -310,6 +310,11 @@ struct bcmgenet_mib_counters { ...@@ -310,6 +310,11 @@ struct bcmgenet_mib_counters {
#define UMAC_IRQ_MDIO_DONE (1 << 23) #define UMAC_IRQ_MDIO_DONE (1 << 23)
#define UMAC_IRQ_MDIO_ERROR (1 << 24) #define UMAC_IRQ_MDIO_ERROR (1 << 24)
/* INTRL2 instance 1 definitions */
#define UMAC_IRQ1_TX_INTR_MASK 0xFFFF
#define UMAC_IRQ1_RX_INTR_MASK 0xFFFF
#define UMAC_IRQ1_RX_INTR_SHIFT 16
/* Register block offsets */ /* Register block offsets */
#define GENET_SYS_OFF 0x0000 #define GENET_SYS_OFF 0x0000
#define GENET_GR_BRIDGE_OFF 0x0040 #define GENET_GR_BRIDGE_OFF 0x0040
...@@ -535,14 +540,13 @@ struct bcmgenet_tx_ring { ...@@ -535,14 +540,13 @@ struct bcmgenet_tx_ring {
unsigned int prod_index; /* Tx ring producer index SW copy */ unsigned int prod_index; /* Tx ring producer index SW copy */
unsigned int cb_ptr; /* Tx ring initial CB ptr */ unsigned int cb_ptr; /* Tx ring initial CB ptr */
unsigned int end_ptr; /* Tx ring end CB ptr */ unsigned int end_ptr; /* Tx ring end CB ptr */
void (*int_enable)(struct bcmgenet_priv *priv, void (*int_enable)(struct bcmgenet_tx_ring *);
struct bcmgenet_tx_ring *); void (*int_disable)(struct bcmgenet_tx_ring *);
void (*int_disable)(struct bcmgenet_priv *priv,
struct bcmgenet_tx_ring *);
struct bcmgenet_priv *priv; struct bcmgenet_priv *priv;
}; };
struct bcmgenet_rx_ring { struct bcmgenet_rx_ring {
struct napi_struct napi; /* Rx NAPI struct */
unsigned int index; /* Rx ring index */ unsigned int index; /* Rx ring index */
struct enet_cb *cbs; /* Rx ring buffer control block */ struct enet_cb *cbs; /* Rx ring buffer control block */
unsigned int size; /* Rx ring size */ unsigned int size; /* Rx ring size */
...@@ -551,6 +555,9 @@ struct bcmgenet_rx_ring { ...@@ -551,6 +555,9 @@ struct bcmgenet_rx_ring {
unsigned int cb_ptr; /* Rx ring initial CB ptr */ unsigned int cb_ptr; /* Rx ring initial CB ptr */
unsigned int end_ptr; /* Rx ring end CB ptr */ unsigned int end_ptr; /* Rx ring end CB ptr */
unsigned int old_discards; unsigned int old_discards;
void (*int_enable)(struct bcmgenet_rx_ring *);
void (*int_disable)(struct bcmgenet_rx_ring *);
struct bcmgenet_priv *priv;
}; };
/* device context */ /* device context */
...@@ -558,11 +565,6 @@ struct bcmgenet_priv { ...@@ -558,11 +565,6 @@ struct bcmgenet_priv {
void __iomem *base; void __iomem *base;
enum bcmgenet_version version; enum bcmgenet_version version;
struct net_device *dev; struct net_device *dev;
u32 int0_mask;
u32 int1_mask;
/* NAPI for descriptor based rx */
struct napi_struct napi ____cacheline_aligned;
/* transmit variables */ /* transmit variables */
void __iomem *tx_bds; void __iomem *tx_bds;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment