diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-25 07:25:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-25 07:25:22 -0400 |
commit | 8a9ea3237e7eb5c25f09e429ad242ae5a3d5ea22 (patch) | |
tree | a0a63398a9983667d52cbbbf4e2405b4f22b1d83 /drivers/scsi/cxgbi | |
parent | 1be025d3cb40cd295123af2c394f7229ef9b30ca (diff) | |
parent | 8b3408f8ee994973869d8ba32c5bf482bc4ddca4 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1745 commits)
dp83640: free packet queues on remove
dp83640: use proper function to free transmit time stamping packets
ipv6: Do not use routes from locally generated RAs
|PATCH net-next] tg3: add tx_dropped counter
be2net: don't create multiple RX/TX rings in multi channel mode
be2net: don't create multiple TXQs in BE2
be2net: refactor VF setup/teardown code into be_vf_setup/clear()
be2net: add vlan/rx-mode/flow-control config to be_setup()
net_sched: cls_flow: use skb_header_pointer()
ipv4: avoid useless call of the function check_peer_pmtu
TCP: remove TCP_DEBUG
net: Fix driver name for mdio-gpio.c
ipv4: tcp: fix TOS value in ACK messages sent from TIME_WAIT
rtnetlink: Add missing manual netlink notification in dev_change_net_namespaces
ipv4: fix ipsec forward performance regression
jme: fix irq storm after suspend/resume
route: fix ICMP redirect validation
net: hold sock reference while processing tx timestamps
tcp: md5: add more const attributes
Add ethtool -g support to virtio_net
...
Fix up conflicts in:
- drivers/net/Kconfig:
The split-up generated a trivial conflict with removal of a
stale reference to Documentation/networking/net-modules.txt.
Remove it from the new location instead.
- fs/sysfs/dir.c:
Fairly nasty conflicts with the sysfs rb-tree usage, conflicting
with Eric Biederman's changes for tagged directories.
Diffstat (limited to 'drivers/scsi/cxgbi')
-rw-r--r-- | drivers/scsi/cxgbi/cxgb3i/Kbuild | 2 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/cxgb3i/Kconfig | 3 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/cxgb4i/Kbuild | 2 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/cxgb4i/Kconfig | 3 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/libcxgbi.c | 22 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/libcxgbi.h | 2 |
6 files changed, 19 insertions, 15 deletions
diff --git a/drivers/scsi/cxgbi/cxgb3i/Kbuild b/drivers/scsi/cxgbi/cxgb3i/Kbuild index 09dbf9efc8ea..6f095e28a974 100644 --- a/drivers/scsi/cxgbi/cxgb3i/Kbuild +++ b/drivers/scsi/cxgbi/cxgb3i/Kbuild | |||
@@ -1,3 +1,3 @@ | |||
1 | EXTRA_CFLAGS += -I$(srctree)/drivers/net/cxgb3 | 1 | EXTRA_CFLAGS += -I$(srctree)/drivers/net/ethernet/chelsio/cxgb3 |
2 | 2 | ||
3 | obj-$(CONFIG_SCSI_CXGB3_ISCSI) += cxgb3i.o | 3 | obj-$(CONFIG_SCSI_CXGB3_ISCSI) += cxgb3i.o |
diff --git a/drivers/scsi/cxgbi/cxgb3i/Kconfig b/drivers/scsi/cxgbi/cxgb3i/Kconfig index 11dff23f7838..6bbc36fbd6ec 100644 --- a/drivers/scsi/cxgbi/cxgb3i/Kconfig +++ b/drivers/scsi/cxgbi/cxgb3i/Kconfig | |||
@@ -2,7 +2,8 @@ config SCSI_CXGB3_ISCSI | |||
2 | tristate "Chelsio T3 iSCSI support" | 2 | tristate "Chelsio T3 iSCSI support" |
3 | depends on PCI && INET | 3 | depends on PCI && INET |
4 | select NETDEVICES | 4 | select NETDEVICES |
5 | select NETDEV_10000 | 5 | select ETHERNET |
6 | select NET_VENDOR_CHELSIO | ||
6 | select CHELSIO_T3 | 7 | select CHELSIO_T3 |
7 | select SCSI_ISCSI_ATTRS | 8 | select SCSI_ISCSI_ATTRS |
8 | ---help--- | 9 | ---help--- |
diff --git a/drivers/scsi/cxgbi/cxgb4i/Kbuild b/drivers/scsi/cxgbi/cxgb4i/Kbuild index b9f4af7454b7..8290cdaa4652 100644 --- a/drivers/scsi/cxgbi/cxgb4i/Kbuild +++ b/drivers/scsi/cxgbi/cxgb4i/Kbuild | |||
@@ -1,3 +1,3 @@ | |||
1 | EXTRA_CFLAGS += -I$(srctree)/drivers/net/cxgb4 | 1 | EXTRA_CFLAGS += -I$(srctree)/drivers/net/ethernet/chelsio/cxgb4 |
2 | 2 | ||
3 | obj-$(CONFIG_SCSI_CXGB4_ISCSI) += cxgb4i.o | 3 | obj-$(CONFIG_SCSI_CXGB4_ISCSI) += cxgb4i.o |
diff --git a/drivers/scsi/cxgbi/cxgb4i/Kconfig b/drivers/scsi/cxgbi/cxgb4i/Kconfig index d5302c27f377..16b2c7d26617 100644 --- a/drivers/scsi/cxgbi/cxgb4i/Kconfig +++ b/drivers/scsi/cxgbi/cxgb4i/Kconfig | |||
@@ -2,7 +2,8 @@ config SCSI_CXGB4_ISCSI | |||
2 | tristate "Chelsio T4 iSCSI support" | 2 | tristate "Chelsio T4 iSCSI support" |
3 | depends on PCI && INET | 3 | depends on PCI && INET |
4 | select NETDEVICES | 4 | select NETDEVICES |
5 | select NETDEV_10000 | 5 | select ETHERNET |
6 | select NET_VENDOR_CHELSIO | ||
6 | select CHELSIO_T4 | 7 | select CHELSIO_T4 |
7 | select SCSI_ISCSI_ATTRS | 8 | select SCSI_ISCSI_ATTRS |
8 | ---help--- | 9 | ---help--- |
diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c index 77ac217ad5ce..1c1329bc77c7 100644 --- a/drivers/scsi/cxgbi/libcxgbi.c +++ b/drivers/scsi/cxgbi/libcxgbi.c | |||
@@ -1787,7 +1787,7 @@ static int sgl_seek_offset(struct scatterlist *sgl, unsigned int sgcnt, | |||
1787 | } | 1787 | } |
1788 | 1788 | ||
1789 | static int sgl_read_to_frags(struct scatterlist *sg, unsigned int sgoffset, | 1789 | static int sgl_read_to_frags(struct scatterlist *sg, unsigned int sgoffset, |
1790 | unsigned int dlen, skb_frag_t *frags, | 1790 | unsigned int dlen, struct page_frag *frags, |
1791 | int frag_max) | 1791 | int frag_max) |
1792 | { | 1792 | { |
1793 | unsigned int datalen = dlen; | 1793 | unsigned int datalen = dlen; |
@@ -1814,7 +1814,7 @@ static int sgl_read_to_frags(struct scatterlist *sg, unsigned int sgoffset, | |||
1814 | copy = min(datalen, sglen); | 1814 | copy = min(datalen, sglen); |
1815 | if (i && page == frags[i - 1].page && | 1815 | if (i && page == frags[i - 1].page && |
1816 | sgoffset + sg->offset == | 1816 | sgoffset + sg->offset == |
1817 | frags[i - 1].page_offset + frags[i - 1].size) { | 1817 | frags[i - 1].offset + frags[i - 1].size) { |
1818 | frags[i - 1].size += copy; | 1818 | frags[i - 1].size += copy; |
1819 | } else { | 1819 | } else { |
1820 | if (i >= frag_max) { | 1820 | if (i >= frag_max) { |
@@ -1824,7 +1824,7 @@ static int sgl_read_to_frags(struct scatterlist *sg, unsigned int sgoffset, | |||
1824 | } | 1824 | } |
1825 | 1825 | ||
1826 | frags[i].page = page; | 1826 | frags[i].page = page; |
1827 | frags[i].page_offset = sg->offset + sgoffset; | 1827 | frags[i].offset = sg->offset + sgoffset; |
1828 | frags[i].size = copy; | 1828 | frags[i].size = copy; |
1829 | i++; | 1829 | i++; |
1830 | } | 1830 | } |
@@ -1944,14 +1944,14 @@ int cxgbi_conn_init_pdu(struct iscsi_task *task, unsigned int offset, | |||
1944 | if (tdata->nr_frags > MAX_SKB_FRAGS || | 1944 | if (tdata->nr_frags > MAX_SKB_FRAGS || |
1945 | (padlen && tdata->nr_frags == MAX_SKB_FRAGS)) { | 1945 | (padlen && tdata->nr_frags == MAX_SKB_FRAGS)) { |
1946 | char *dst = skb->data + task->hdr_len; | 1946 | char *dst = skb->data + task->hdr_len; |
1947 | skb_frag_t *frag = tdata->frags; | 1947 | struct page_frag *frag = tdata->frags; |
1948 | 1948 | ||
1949 | /* data fits in the skb's headroom */ | 1949 | /* data fits in the skb's headroom */ |
1950 | for (i = 0; i < tdata->nr_frags; i++, frag++) { | 1950 | for (i = 0; i < tdata->nr_frags; i++, frag++) { |
1951 | char *src = kmap_atomic(frag->page, | 1951 | char *src = kmap_atomic(frag->page, |
1952 | KM_SOFTIRQ0); | 1952 | KM_SOFTIRQ0); |
1953 | 1953 | ||
1954 | memcpy(dst, src+frag->page_offset, frag->size); | 1954 | memcpy(dst, src+frag->offset, frag->size); |
1955 | dst += frag->size; | 1955 | dst += frag->size; |
1956 | kunmap_atomic(src, KM_SOFTIRQ0); | 1956 | kunmap_atomic(src, KM_SOFTIRQ0); |
1957 | } | 1957 | } |
@@ -1962,11 +1962,13 @@ int cxgbi_conn_init_pdu(struct iscsi_task *task, unsigned int offset, | |||
1962 | skb_put(skb, count + padlen); | 1962 | skb_put(skb, count + padlen); |
1963 | } else { | 1963 | } else { |
1964 | /* data fit into frag_list */ | 1964 | /* data fit into frag_list */ |
1965 | for (i = 0; i < tdata->nr_frags; i++) | 1965 | for (i = 0; i < tdata->nr_frags; i++) { |
1966 | get_page(tdata->frags[i].page); | 1966 | __skb_fill_page_desc(skb, i, |
1967 | 1967 | tdata->frags[i].page, | |
1968 | memcpy(skb_shinfo(skb)->frags, tdata->frags, | 1968 | tdata->frags[i].offset, |
1969 | sizeof(skb_frag_t) * tdata->nr_frags); | 1969 | tdata->frags[i].size); |
1970 | skb_frag_ref(skb, i); | ||
1971 | } | ||
1970 | skb_shinfo(skb)->nr_frags = tdata->nr_frags; | 1972 | skb_shinfo(skb)->nr_frags = tdata->nr_frags; |
1971 | skb->len += count; | 1973 | skb->len += count; |
1972 | skb->data_len += count; | 1974 | skb->data_len += count; |
diff --git a/drivers/scsi/cxgbi/libcxgbi.h b/drivers/scsi/cxgbi/libcxgbi.h index 9267844519c9..3a25b1187c10 100644 --- a/drivers/scsi/cxgbi/libcxgbi.h +++ b/drivers/scsi/cxgbi/libcxgbi.h | |||
@@ -574,7 +574,7 @@ struct cxgbi_endpoint { | |||
574 | #define MAX_PDU_FRAGS ((ULP2_MAX_PDU_PAYLOAD + 512 - 1) / 512) | 574 | #define MAX_PDU_FRAGS ((ULP2_MAX_PDU_PAYLOAD + 512 - 1) / 512) |
575 | struct cxgbi_task_data { | 575 | struct cxgbi_task_data { |
576 | unsigned short nr_frags; | 576 | unsigned short nr_frags; |
577 | skb_frag_t frags[MAX_PDU_FRAGS]; | 577 | struct page_frag frags[MAX_PDU_FRAGS]; |
578 | struct sk_buff *skb; | 578 | struct sk_buff *skb; |
579 | unsigned int offset; | 579 | unsigned int offset; |
580 | unsigned int count; | 580 | unsigned int count; |