diff options
author | Robert Olsson <robert.olsson@its.uu.se> | 2008-11-25 19:41:57 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-25 19:44:38 -0500 |
commit | 70340d728f4f4cb49da00a11b10ded492260caa5 (patch) | |
tree | 045335bc57c4b1c2b79ef35518f7bd18f3eee948 /drivers/net | |
parent | 9f782db3f5ceee9aa8de6f853969fbec1b8c6e65 (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/net')
-rw-r--r-- | drivers/net/niu.c | 27 | ||||
-rw-r--r-- | drivers/net/niu.h | 1 |
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 | ||
5850 | static 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 | |||
5850 | static int niu_request_irq(struct niu *np) | 5873 | static 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; |