diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-21 13:34:25 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-21 13:34:25 -0400 |
| commit | 72a73693aac5ae82850cedc69fa5d264ca977c13 (patch) | |
| tree | 80ab4bad93a2204ff264c0b07b63449a91410585 /drivers/net/xen-netfront.c | |
| parent | b7e6f62fe259187f2578d00960ef1b0e6ff6afd5 (diff) | |
| parent | 2e2dcc7631e331cf2e8396ce452e7f01e35f1182 (diff) | |
Merge branch 'x86/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (160 commits)
x86: remove extra calling to get ext cpuid level
x86: use setup_clear_cpu_cap() when disabling the lapic
KVM: fix exception entry / build bug, on 64-bit
x86: add unknown_nmi_panic kernel parameter
x86, VisWS: turn into generic arch, eliminate leftover files
x86: add ->pre_time_init to x86_quirks
x86: extend and use x86_quirks to clean up NUMAQ code
x86: introduce x86_quirks
x86: improve debug printout: add target bootmem range in early_res_to_bootmem()
Subject: devmem, x86: fix rename of CONFIG_NONPROMISC_DEVMEM
x86: remove arch_get_ram_range
x86: Add a debugfs interface to dump PAT memtype
x86: Add a arch directory for x86 under debugfs
x86: i386: reduce boot fixmap space
i386/xen: add proper unwind annotations to xen_sysenter_target
x86: reduce force_mwait visibility
x86: reduce forbid_dac's visibility
x86: fix two modpost warnings
x86: check function status in EDD boot code
x86_64: ia32_signal.c: remove signal number conversion
...
Diffstat (limited to 'drivers/net/xen-netfront.c')
| -rw-r--r-- | drivers/net/xen-netfront.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index ef671d1a3bf0..902bbe788215 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c | |||
| @@ -92,7 +92,7 @@ struct netfront_info { | |||
| 92 | */ | 92 | */ |
| 93 | union skb_entry { | 93 | union skb_entry { |
| 94 | struct sk_buff *skb; | 94 | struct sk_buff *skb; |
| 95 | unsigned link; | 95 | unsigned long link; |
| 96 | } tx_skbs[NET_TX_RING_SIZE]; | 96 | } tx_skbs[NET_TX_RING_SIZE]; |
| 97 | grant_ref_t gref_tx_head; | 97 | grant_ref_t gref_tx_head; |
| 98 | grant_ref_t grant_tx_ref[NET_TX_RING_SIZE]; | 98 | grant_ref_t grant_tx_ref[NET_TX_RING_SIZE]; |
| @@ -125,6 +125,17 @@ struct netfront_rx_info { | |||
| 125 | struct xen_netif_extra_info extras[XEN_NETIF_EXTRA_TYPE_MAX - 1]; | 125 | struct xen_netif_extra_info extras[XEN_NETIF_EXTRA_TYPE_MAX - 1]; |
| 126 | }; | 126 | }; |
| 127 | 127 | ||
| 128 | static void skb_entry_set_link(union skb_entry *list, unsigned short id) | ||
| 129 | { | ||
| 130 | list->link = id; | ||
| 131 | } | ||
| 132 | |||
| 133 | static int skb_entry_is_link(const union skb_entry *list) | ||
| 134 | { | ||
| 135 | BUILD_BUG_ON(sizeof(list->skb) != sizeof(list->link)); | ||
| 136 | return ((unsigned long)list->skb < PAGE_OFFSET); | ||
| 137 | } | ||
| 138 | |||
| 128 | /* | 139 | /* |
| 129 | * Access macros for acquiring freeing slots in tx_skbs[]. | 140 | * Access macros for acquiring freeing slots in tx_skbs[]. |
| 130 | */ | 141 | */ |
| @@ -132,7 +143,7 @@ struct netfront_rx_info { | |||
| 132 | static void add_id_to_freelist(unsigned *head, union skb_entry *list, | 143 | static void add_id_to_freelist(unsigned *head, union skb_entry *list, |
| 133 | unsigned short id) | 144 | unsigned short id) |
| 134 | { | 145 | { |
| 135 | list[id].link = *head; | 146 | skb_entry_set_link(&list[id], *head); |
| 136 | *head = id; | 147 | *head = id; |
| 137 | } | 148 | } |
| 138 | 149 | ||
| @@ -993,7 +1004,7 @@ static void xennet_release_tx_bufs(struct netfront_info *np) | |||
| 993 | 1004 | ||
| 994 | for (i = 0; i < NET_TX_RING_SIZE; i++) { | 1005 | for (i = 0; i < NET_TX_RING_SIZE; i++) { |
| 995 | /* Skip over entries which are actually freelist references */ | 1006 | /* Skip over entries which are actually freelist references */ |
| 996 | if ((unsigned long)np->tx_skbs[i].skb < PAGE_OFFSET) | 1007 | if (skb_entry_is_link(&np->tx_skbs[i])) |
| 997 | continue; | 1008 | continue; |
| 998 | 1009 | ||
| 999 | skb = np->tx_skbs[i].skb; | 1010 | skb = np->tx_skbs[i].skb; |
| @@ -1123,7 +1134,7 @@ static struct net_device * __devinit xennet_create_dev(struct xenbus_device *dev | |||
| 1123 | /* Initialise tx_skbs as a free chain containing every entry. */ | 1134 | /* Initialise tx_skbs as a free chain containing every entry. */ |
| 1124 | np->tx_skb_freelist = 0; | 1135 | np->tx_skb_freelist = 0; |
| 1125 | for (i = 0; i < NET_TX_RING_SIZE; i++) { | 1136 | for (i = 0; i < NET_TX_RING_SIZE; i++) { |
| 1126 | np->tx_skbs[i].link = i+1; | 1137 | skb_entry_set_link(&np->tx_skbs[i], i+1); |
| 1127 | np->grant_tx_ref[i] = GRANT_INVALID_REF; | 1138 | np->grant_tx_ref[i] = GRANT_INVALID_REF; |
| 1128 | } | 1139 | } |
| 1129 | 1140 | ||
