diff options
author | Sony Chacko <sony.chacko@qlogic.com> | 2012-11-27 23:34:26 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-11-28 11:07:43 -0500 |
commit | c70001a952e561775222d28a9e2f2a0075af51f3 (patch) | |
tree | 8698785c3426bc26eeb98af21f06a19d6d687e1c /drivers/net/ethernet/qlogic/qlcnic/qlcnic.h | |
parent | 3a858a86922f3aeb85a352f3d1ce44c2a99b69a6 (diff) |
qlcnic: create file qlcnic_io.c for datapath routines
Physical refactoring of 82xx adapter data path routines.
Move data path code to new file qlcnic_io.c
Existing data path code has coding stye issues, the code is
moved to the new file without fixing the style issues.
There is a seperate patch to fix the style issues in qlcnic_io.c
Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic/qlcnic/qlcnic.h')
-rw-r--r-- | drivers/net/ethernet/qlogic/qlcnic/qlcnic.h | 115 |
1 files changed, 24 insertions, 91 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h index ec29f7988d42..db4508fa5c93 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h | |||
@@ -89,16 +89,6 @@ | |||
89 | #define QLCNIC_CT_DEFAULT_RX_BUF_LEN 2048 | 89 | #define QLCNIC_CT_DEFAULT_RX_BUF_LEN 2048 |
90 | #define QLCNIC_LRO_BUFFER_EXTRA 2048 | 90 | #define QLCNIC_LRO_BUFFER_EXTRA 2048 |
91 | 91 | ||
92 | /* Opcodes to be used with the commands */ | ||
93 | #define TX_ETHER_PKT 0x01 | ||
94 | #define TX_TCP_PKT 0x02 | ||
95 | #define TX_UDP_PKT 0x03 | ||
96 | #define TX_IP_PKT 0x04 | ||
97 | #define TX_TCP_LSO 0x05 | ||
98 | #define TX_TCP_LSO6 0x06 | ||
99 | #define TX_TCPV6_PKT 0x0b | ||
100 | #define TX_UDPV6_PKT 0x0c | ||
101 | |||
102 | /* Tx defines */ | 92 | /* Tx defines */ |
103 | #define QLCNIC_MAX_FRAGS_PER_TX 14 | 93 | #define QLCNIC_MAX_FRAGS_PER_TX 14 |
104 | #define MAX_TSO_HEADER_DESC 2 | 94 | #define MAX_TSO_HEADER_DESC 2 |
@@ -147,28 +137,6 @@ | |||
147 | * Added fileds of tcpHdrSize and ipHdrSize, The driver needs to do it only when | 137 | * Added fileds of tcpHdrSize and ipHdrSize, The driver needs to do it only when |
148 | * we are doing LSO (above the 1500 size packet) only. | 138 | * we are doing LSO (above the 1500 size packet) only. |
149 | */ | 139 | */ |
150 | |||
151 | #define FLAGS_VLAN_TAGGED 0x10 | ||
152 | #define FLAGS_VLAN_OOB 0x40 | ||
153 | |||
154 | #define qlcnic_set_tx_vlan_tci(cmd_desc, v) \ | ||
155 | (cmd_desc)->vlan_TCI = cpu_to_le16(v); | ||
156 | #define qlcnic_set_cmd_desc_port(cmd_desc, var) \ | ||
157 | ((cmd_desc)->port_ctxid |= ((var) & 0x0F)) | ||
158 | #define qlcnic_set_cmd_desc_ctxid(cmd_desc, var) \ | ||
159 | ((cmd_desc)->port_ctxid |= ((var) << 4 & 0xF0)) | ||
160 | |||
161 | #define qlcnic_set_tx_port(_desc, _port) \ | ||
162 | ((_desc)->port_ctxid = ((_port) & 0xf) | (((_port) << 4) & 0xf0)) | ||
163 | |||
164 | #define qlcnic_set_tx_flags_opcode(_desc, _flags, _opcode) \ | ||
165 | ((_desc)->flags_opcode |= \ | ||
166 | cpu_to_le16(((_flags) & 0x7f) | (((_opcode) & 0x3f) << 7))) | ||
167 | |||
168 | #define qlcnic_set_tx_frags_len(_desc, _frags, _len) \ | ||
169 | ((_desc)->nfrags__length = \ | ||
170 | cpu_to_le32(((_frags) & 0xff) | (((_len) & 0xffffff) << 8))) | ||
171 | |||
172 | struct cmd_desc_type0 { | 140 | struct cmd_desc_type0 { |
173 | u8 tcp_hdr_offset; /* For LSO only */ | 141 | u8 tcp_hdr_offset; /* For LSO only */ |
174 | u8 ip_hdr_offset; /* For LSO only */ | 142 | u8 ip_hdr_offset; /* For LSO only */ |
@@ -203,65 +171,6 @@ struct rcv_desc { | |||
203 | __le64 addr_buffer; | 171 | __le64 addr_buffer; |
204 | } __packed; | 172 | } __packed; |
205 | 173 | ||
206 | /* opcode field in status_desc */ | ||
207 | #define QLCNIC_SYN_OFFLOAD 0x03 | ||
208 | #define QLCNIC_RXPKT_DESC 0x04 | ||
209 | #define QLCNIC_OLD_RXPKT_DESC 0x3f | ||
210 | #define QLCNIC_RESPONSE_DESC 0x05 | ||
211 | #define QLCNIC_LRO_DESC 0x12 | ||
212 | |||
213 | /* for status field in status_desc */ | ||
214 | #define STATUS_CKSUM_LOOP 0 | ||
215 | #define STATUS_CKSUM_OK 2 | ||
216 | |||
217 | /* owner bits of status_desc */ | ||
218 | #define STATUS_OWNER_HOST (0x1ULL << 56) | ||
219 | #define STATUS_OWNER_PHANTOM (0x2ULL << 56) | ||
220 | |||
221 | /* Status descriptor: | ||
222 | 0-3 port, 4-7 status, 8-11 type, 12-27 total_length | ||
223 | 28-43 reference_handle, 44-47 protocol, 48-52 pkt_offset | ||
224 | 53-55 desc_cnt, 56-57 owner, 58-63 opcode | ||
225 | */ | ||
226 | #define qlcnic_get_sts_port(sts_data) \ | ||
227 | ((sts_data) & 0x0F) | ||
228 | #define qlcnic_get_sts_status(sts_data) \ | ||
229 | (((sts_data) >> 4) & 0x0F) | ||
230 | #define qlcnic_get_sts_type(sts_data) \ | ||
231 | (((sts_data) >> 8) & 0x0F) | ||
232 | #define qlcnic_get_sts_totallength(sts_data) \ | ||
233 | (((sts_data) >> 12) & 0xFFFF) | ||
234 | #define qlcnic_get_sts_refhandle(sts_data) \ | ||
235 | (((sts_data) >> 28) & 0xFFFF) | ||
236 | #define qlcnic_get_sts_prot(sts_data) \ | ||
237 | (((sts_data) >> 44) & 0x0F) | ||
238 | #define qlcnic_get_sts_pkt_offset(sts_data) \ | ||
239 | (((sts_data) >> 48) & 0x1F) | ||
240 | #define qlcnic_get_sts_desc_cnt(sts_data) \ | ||
241 | (((sts_data) >> 53) & 0x7) | ||
242 | #define qlcnic_get_sts_opcode(sts_data) \ | ||
243 | (((sts_data) >> 58) & 0x03F) | ||
244 | |||
245 | #define qlcnic_get_lro_sts_refhandle(sts_data) \ | ||
246 | ((sts_data) & 0x0FFFF) | ||
247 | #define qlcnic_get_lro_sts_length(sts_data) \ | ||
248 | (((sts_data) >> 16) & 0x0FFFF) | ||
249 | #define qlcnic_get_lro_sts_l2_hdr_offset(sts_data) \ | ||
250 | (((sts_data) >> 32) & 0x0FF) | ||
251 | #define qlcnic_get_lro_sts_l4_hdr_offset(sts_data) \ | ||
252 | (((sts_data) >> 40) & 0x0FF) | ||
253 | #define qlcnic_get_lro_sts_timestamp(sts_data) \ | ||
254 | (((sts_data) >> 48) & 0x1) | ||
255 | #define qlcnic_get_lro_sts_type(sts_data) \ | ||
256 | (((sts_data) >> 49) & 0x7) | ||
257 | #define qlcnic_get_lro_sts_push_flag(sts_data) \ | ||
258 | (((sts_data) >> 52) & 0x1) | ||
259 | #define qlcnic_get_lro_sts_seq_number(sts_data) \ | ||
260 | ((sts_data) & 0x0FFFFFFFF) | ||
261 | #define qlcnic_get_lro_sts_mss(sts_data1) \ | ||
262 | ((sts_data1 >> 32) & 0x0FFFF) | ||
263 | |||
264 | |||
265 | struct status_desc { | 174 | struct status_desc { |
266 | __le64 status_desc_data[2]; | 175 | __le64 status_desc_data[2]; |
267 | } __attribute__ ((aligned(16))); | 176 | } __attribute__ ((aligned(16))); |
@@ -1648,6 +1557,15 @@ int qlcnic_clear_esw_stats(struct qlcnic_adapter *adapter, u8, u8, u8); | |||
1648 | int qlcnic_get_mac_stats(struct qlcnic_adapter *, struct qlcnic_mac_statistics *); | 1557 | int qlcnic_get_mac_stats(struct qlcnic_adapter *, struct qlcnic_mac_statistics *); |
1649 | extern int qlcnic_config_tso; | 1558 | extern int qlcnic_config_tso; |
1650 | 1559 | ||
1560 | int qlcnic_napi_add(struct qlcnic_adapter *, struct net_device *); | ||
1561 | void qlcnic_napi_del(struct qlcnic_adapter *adapter); | ||
1562 | void qlcnic_napi_enable(struct qlcnic_adapter *adapter); | ||
1563 | void qlcnic_napi_disable(struct qlcnic_adapter *adapter); | ||
1564 | int qlcnic_alloc_sds_rings(struct qlcnic_recv_context *, int); | ||
1565 | void qlcnic_free_sds_rings(struct qlcnic_recv_context *); | ||
1566 | void qlcnic_free_tx_rings(struct qlcnic_adapter *); | ||
1567 | int qlcnic_alloc_tx_rings(struct qlcnic_adapter *, struct net_device *); | ||
1568 | |||
1651 | /* | 1569 | /* |
1652 | * QLOGIC Board information | 1570 | * QLOGIC Board information |
1653 | */ | 1571 | */ |
@@ -1694,6 +1612,21 @@ static inline u32 qlcnic_tx_avail(struct qlcnic_host_tx_ring *tx_ring) | |||
1694 | tx_ring->producer; | 1612 | tx_ring->producer; |
1695 | } | 1613 | } |
1696 | 1614 | ||
1615 | static inline void qlcnic_disable_int(struct qlcnic_host_sds_ring *sds_ring) | ||
1616 | { | ||
1617 | writel(0, sds_ring->crb_intr_mask); | ||
1618 | } | ||
1619 | |||
1620 | static inline void qlcnic_enable_int(struct qlcnic_host_sds_ring *sds_ring) | ||
1621 | { | ||
1622 | struct qlcnic_adapter *adapter = sds_ring->adapter; | ||
1623 | |||
1624 | writel(0x1, sds_ring->crb_intr_mask); | ||
1625 | |||
1626 | if (!QLCNIC_IS_MSI_FAMILY(adapter)) | ||
1627 | writel(0xfbff, adapter->tgt_mask_reg); | ||
1628 | } | ||
1629 | |||
1697 | extern const struct ethtool_ops qlcnic_ethtool_ops; | 1630 | extern const struct ethtool_ops qlcnic_ethtool_ops; |
1698 | extern const struct ethtool_ops qlcnic_ethtool_failed_ops; | 1631 | extern const struct ethtool_ops qlcnic_ethtool_failed_ops; |
1699 | 1632 | ||