aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/cxgbi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-25 07:25:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-25 07:25:22 -0400
commit8a9ea3237e7eb5c25f09e429ad242ae5a3d5ea22 (patch)
treea0a63398a9983667d52cbbbf4e2405b4f22b1d83 /drivers/scsi/cxgbi
parent1be025d3cb40cd295123af2c394f7229ef9b30ca (diff)
parent8b3408f8ee994973869d8ba32c5bf482bc4ddca4 (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/Kbuild2
-rw-r--r--drivers/scsi/cxgbi/cxgb3i/Kconfig3
-rw-r--r--drivers/scsi/cxgbi/cxgb4i/Kbuild2
-rw-r--r--drivers/scsi/cxgbi/cxgb4i/Kconfig3
-rw-r--r--drivers/scsi/cxgbi/libcxgbi.c22
-rw-r--r--drivers/scsi/cxgbi/libcxgbi.h2
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 @@
1EXTRA_CFLAGS += -I$(srctree)/drivers/net/cxgb3 1EXTRA_CFLAGS += -I$(srctree)/drivers/net/ethernet/chelsio/cxgb3
2 2
3obj-$(CONFIG_SCSI_CXGB3_ISCSI) += cxgb3i.o 3obj-$(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 @@
1EXTRA_CFLAGS += -I$(srctree)/drivers/net/cxgb4 1EXTRA_CFLAGS += -I$(srctree)/drivers/net/ethernet/chelsio/cxgb4
2 2
3obj-$(CONFIG_SCSI_CXGB4_ISCSI) += cxgb4i.o 3obj-$(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
1789static int sgl_read_to_frags(struct scatterlist *sg, unsigned int sgoffset, 1789static 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)
575struct cxgbi_task_data { 575struct 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;