Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [IPV6]: Added GSO support for TCPv6 [NET]: Generalise TSO-specific bits from skb_setup_caps [IPV6]: Added GSO support for TCPv6 [IPV6]: Remove redundant length check on input [NETFILTER]: SCTP conntrack: fix crash triggered by packet without chunks [TG3]: Update version and reldate [TG3]: Add TSO workaround using GSO [TG3]: Turn on hw fix for ASF problems [TG3]: Add rx BD workaround [TG3]: Add tg3_netif_stop() in vlan functions [TCP]: Reset gso_segs if packet is dodgy
This commit is contained in:
@@ -3959,7 +3959,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
txdp->Control_2 = 0;
|
||||
#ifdef NETIF_F_TSO
|
||||
mss = skb_shinfo(skb)->gso_size;
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_TCPV4) {
|
||||
if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)) {
|
||||
txdp->Control_1 |= TXD_TCP_LSO_EN;
|
||||
txdp->Control_1 |= TXD_TCP_LSO_MSS(mss);
|
||||
}
|
||||
@@ -3979,7 +3979,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
}
|
||||
|
||||
frg_len = skb->len - skb->data_len;
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4) {
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP) {
|
||||
int ufo_size;
|
||||
|
||||
ufo_size = skb_shinfo(skb)->gso_size;
|
||||
@@ -4008,7 +4008,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
txdp->Host_Control = (unsigned long) skb;
|
||||
txdp->Control_1 |= TXD_BUFFER0_SIZE(frg_len);
|
||||
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4)
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP)
|
||||
txdp->Control_1 |= TXD_UFO_EN;
|
||||
|
||||
frg_cnt = skb_shinfo(skb)->nr_frags;
|
||||
@@ -4023,12 +4023,12 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
(sp->pdev, frag->page, frag->page_offset,
|
||||
frag->size, PCI_DMA_TODEVICE);
|
||||
txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size);
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4)
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP)
|
||||
txdp->Control_1 |= TXD_UFO_EN;
|
||||
}
|
||||
txdp->Control_1 |= TXD_GATHER_CODE_LAST;
|
||||
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4)
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP)
|
||||
frg_cnt++; /* as Txd0 was used for inband header */
|
||||
|
||||
tx_fifo = mac_control->tx_FIFO_start[queue];
|
||||
@@ -4042,7 +4042,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
if (mss)
|
||||
val64 |= TX_FIFO_SPECIAL_FUNC;
|
||||
#endif
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDPV4)
|
||||
if (skb_shinfo(skb)->gso_type == SKB_GSO_UDP)
|
||||
val64 |= TX_FIFO_SPECIAL_FUNC;
|
||||
writeq(val64, &tx_fifo->List_Control);
|
||||
|
||||
@@ -7019,6 +7019,9 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
|
||||
dev->features |= NETIF_F_HIGHDMA;
|
||||
#ifdef NETIF_F_TSO
|
||||
dev->features |= NETIF_F_TSO;
|
||||
#endif
|
||||
#ifdef NETIF_F_TSO6
|
||||
dev->features |= NETIF_F_TSO6;
|
||||
#endif
|
||||
if (sp->device_type & XFRAME_II_DEVICE) {
|
||||
dev->features |= NETIF_F_UFO;
|
||||
|
Reference in New Issue
Block a user