aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRobert Olsson <robert.olsson@its.uu.se>2008-11-25 19:41:57 -0500
committerDavid S. Miller <davem@davemloft.net>2008-11-25 19:44:38 -0500
commit70340d728f4f4cb49da00a11b10ded492260caa5 (patch)
tree045335bc57c4b1c2b79ef35518f7bd18f3eee948 /drivers
parent9f782db3f5ceee9aa8de6f853969fbec1b8c6e65 (diff)
niu: Naming interrupt vectors.
A patch to put names on the niu interrupt vectors according the syntax below. This is needed to assign correct affinity. > So on a multiqueue card with 2 RX queues and 2 TX queues we'd > have names like: > > eth0-rx-0 > eth0-rx-1 > eth0-tx-0 > eth0-tx-1 Signed-off-by: Robert Olsson <robert.olsson@its.uu.se> Tested-by: Jesper Dangaard Brouer <jdb@comx.dk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/niu.c27
-rw-r--r--drivers/net/niu.h1
2 files changed, 27 insertions, 1 deletions
diff --git a/drivers/net/niu.c b/drivers/net/niu.c
index a8d10630f804..f368e7472133 100644
--- a/drivers/net/niu.c
+++ b/drivers/net/niu.c
@@ -5847,17 +5847,42 @@ static void niu_stop_hw(struct niu *np)
5847 niu_reset_rx_channels(np); 5847 niu_reset_rx_channels(np);
5848} 5848}
5849 5849
5850static void niu_set_irq_name(struct niu *np)
5851{
5852 int port = np->port;
5853 int i, j = 1;
5854
5855 sprintf(np->irq_name[0], "%s:MAC", np->dev->name);
5856
5857 if (port == 0) {
5858 sprintf(np->irq_name[1], "%s:MIF", np->dev->name);
5859 sprintf(np->irq_name[2], "%s:SYSERR", np->dev->name);
5860 j = 3;
5861 }
5862
5863 for (i = 0; i < np->num_ldg - j; i++) {
5864 if (i < np->num_rx_rings)
5865 sprintf(np->irq_name[i+j], "%s-rx-%d",
5866 np->dev->name, i);
5867 else if (i < np->num_tx_rings + np->num_rx_rings)
5868 sprintf(np->irq_name[i+j], "%s-tx-%d", np->dev->name,
5869 i - np->num_rx_rings);
5870 }
5871}
5872
5850static int niu_request_irq(struct niu *np) 5873static int niu_request_irq(struct niu *np)
5851{ 5874{
5852 int i, j, err; 5875 int i, j, err;
5853 5876
5877 niu_set_irq_name(np);
5878
5854 err = 0; 5879 err = 0;
5855 for (i = 0; i < np->num_ldg; i++) { 5880 for (i = 0; i < np->num_ldg; i++) {
5856 struct niu_ldg *lp = &np->ldg[i]; 5881 struct niu_ldg *lp = &np->ldg[i];
5857 5882
5858 err = request_irq(lp->irq, niu_interrupt, 5883 err = request_irq(lp->irq, niu_interrupt,
5859 IRQF_SHARED | IRQF_SAMPLE_RANDOM, 5884 IRQF_SHARED | IRQF_SAMPLE_RANDOM,
5860 np->dev->name, lp); 5885 np->irq_name[i], lp);
5861 if (err) 5886 if (err)
5862 goto out_free_irqs; 5887 goto out_free_irqs;
5863 5888
diff --git a/drivers/net/niu.h b/drivers/net/niu.h
index 180ca8ae93de..cf449aad7f15 100644
--- a/drivers/net/niu.h
+++ b/drivers/net/niu.h
@@ -3243,6 +3243,7 @@ struct niu {
3243#define NIU_FLAGS_XMAC 0x00010000 /* 0=BMAC 1=XMAC */ 3243#define NIU_FLAGS_XMAC 0x00010000 /* 0=BMAC 1=XMAC */
3244 3244
3245 u32 msg_enable; 3245 u32 msg_enable;
3246 char irq_name[NIU_NUM_RXCHAN+NIU_NUM_TXCHAN+3][IFNAMSIZ + 6];
3246 3247
3247 /* Protects hw programming, and ring state. */ 3248 /* Protects hw programming, and ring state. */
3248 spinlock_t lock; 3249 spinlock_t lock;