]> err.no Git - linux-2.6/blobdiff - drivers/net/s2io.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
[linux-2.6] / drivers / net / s2io.c
index 6d8e5c4cf8580e31c4d62c3d2a2f71d4b79cf3c3..dcbe01b0ca0de05d3c21d75f5661858d88157232 100644 (file)
@@ -86,7 +86,7 @@
 #include "s2io.h"
 #include "s2io-regs.h"
 
-#define DRV_VERSION "2.0.26.19"
+#define DRV_VERSION "2.0.26.20"
 
 /* S2io Driver name & version. */
 static char s2io_driver_name[] = "Neterion";
@@ -4267,11 +4267,12 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
                txdp->Control_1 |= TXD_UFO_MSS(ufo_size);
                txdp->Control_1 |= TXD_BUFFER0_SIZE(8);
 #ifdef __BIG_ENDIAN
+               /* both variants do cpu_to_be64(be32_to_cpu(...)) */
                fifo->ufo_in_band_v[put_off] =
-                               (u64)skb_shinfo(skb)->ip6_frag_id;
+                               (__force u64)skb_shinfo(skb)->ip6_frag_id;
 #else
                fifo->ufo_in_band_v[put_off] =
-                               (u64)skb_shinfo(skb)->ip6_frag_id << 32;
+                               (__force u64)skb_shinfo(skb)->ip6_frag_id << 32;
 #endif
                txdp->Host_Control = (unsigned long)fifo->ufo_in_band_v;
                txdp->Buffer_Pointer = pci_map_single(sp->pdev,
@@ -4344,6 +4345,9 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
        dev->trans_start = jiffies;
        spin_unlock_irqrestore(&fifo->tx_lock, flags);
 
+       if (sp->config.intr_type == MSI_X)
+               tx_intr_handler(fifo);
+
        return 0;
 pci_map_failed:
        stats->pci_map_fail_cnt++;
@@ -7089,11 +7093,11 @@ static int s2io_add_isr(struct s2io_nic * sp)
                                if(!(sp->msix_info[i].addr &&
                                        sp->msix_info[i].data)) {
                                        DBG_PRINT(ERR_DBG, "%s @ Addr:0x%llx "
-                                               "Data:0x%lx\n",sp->desc[i],
+                                               "Data:0x%llx\n",sp->desc[i],
                                                (unsigned long long)
                                                sp->msix_info[i].addr,
-                                               (unsigned long)
-                                               ntohl(sp->msix_info[i].data));
+                                               (unsigned long long)
+                                               sp->msix_info[i].data);
                                } else {
                                        msix_tx_cnt++;
                                }
@@ -7107,11 +7111,11 @@ static int s2io_add_isr(struct s2io_nic * sp)
                                if(!(sp->msix_info[i].addr &&
                                        sp->msix_info[i].data)) {
                                        DBG_PRINT(ERR_DBG, "%s @ Addr:0x%llx "
-                                               "Data:0x%lx\n",sp->desc[i],
+                                               "Data:0x%llx\n",sp->desc[i],
                                                (unsigned long long)
                                                sp->msix_info[i].addr,
-                                               (unsigned long)
-                                               ntohl(sp->msix_info[i].data));
+                                               (unsigned long long)
+                                               sp->msix_info[i].data);
                                } else {
                                        msix_rx_cnt++;
                                }