diff options
author | Sathya Perla <sathya.perla@emulex.com> | 2010-10-04 01:12:27 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-04 01:12:27 -0400 |
commit | 3abcdeda59c1d4cf2bf83311ed2d544355ec7c2d (patch) | |
tree | c259d095b583f7fd2183e3eec43f1a5668468248 /drivers/net/benet/be_cmds.h | |
parent | 72829071269b19381173a13ea1b2ca2f4f9d4cec (diff) |
be2net: add multiple RX queue support
This patch adds multiple RX queue support to be2net. There are
upto 4 extra rx-queues per port into which TCP/UDP traffic can be hashed into.
Some of the ethtool stats are now displayed on a per queue basis.
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/benet/be_cmds.h')
-rw-r--r-- | drivers/net/benet/be_cmds.h | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/drivers/net/benet/be_cmds.h b/drivers/net/benet/be_cmds.h index ad1e6fac60c5..b7a40b172d1a 100644 --- a/drivers/net/benet/be_cmds.h +++ b/drivers/net/benet/be_cmds.h | |||
@@ -147,6 +147,7 @@ struct be_mcc_mailbox { | |||
147 | #define OPCODE_COMMON_READ_TRANSRECV_DATA 73 | 147 | #define OPCODE_COMMON_READ_TRANSRECV_DATA 73 |
148 | #define OPCODE_COMMON_GET_PHY_DETAILS 102 | 148 | #define OPCODE_COMMON_GET_PHY_DETAILS 102 |
149 | 149 | ||
150 | #define OPCODE_ETH_RSS_CONFIG 1 | ||
150 | #define OPCODE_ETH_ACPI_CONFIG 2 | 151 | #define OPCODE_ETH_ACPI_CONFIG 2 |
151 | #define OPCODE_ETH_PROMISCUOUS 3 | 152 | #define OPCODE_ETH_PROMISCUOUS 3 |
152 | #define OPCODE_ETH_GET_STATISTICS 4 | 153 | #define OPCODE_ETH_GET_STATISTICS 4 |
@@ -409,7 +410,7 @@ struct be_cmd_req_eth_rx_create { | |||
409 | struct be_cmd_resp_eth_rx_create { | 410 | struct be_cmd_resp_eth_rx_create { |
410 | struct be_cmd_resp_hdr hdr; | 411 | struct be_cmd_resp_hdr hdr; |
411 | u16 id; | 412 | u16 id; |
412 | u8 cpu_id; | 413 | u8 rss_id; |
413 | u8 rsvd0; | 414 | u8 rsvd0; |
414 | } __packed; | 415 | } __packed; |
415 | 416 | ||
@@ -739,9 +740,10 @@ struct be_cmd_resp_modify_eq_delay { | |||
739 | } __packed; | 740 | } __packed; |
740 | 741 | ||
741 | /******************** Get FW Config *******************/ | 742 | /******************** Get FW Config *******************/ |
743 | #define BE_FUNCTION_CAPS_RSS 0x2 | ||
742 | struct be_cmd_req_query_fw_cfg { | 744 | struct be_cmd_req_query_fw_cfg { |
743 | struct be_cmd_req_hdr hdr; | 745 | struct be_cmd_req_hdr hdr; |
744 | u32 rsvd[30]; | 746 | u32 rsvd[31]; |
745 | }; | 747 | }; |
746 | 748 | ||
747 | struct be_cmd_resp_query_fw_cfg { | 749 | struct be_cmd_resp_query_fw_cfg { |
@@ -751,6 +753,26 @@ struct be_cmd_resp_query_fw_cfg { | |||
751 | u32 phys_port; | 753 | u32 phys_port; |
752 | u32 function_mode; | 754 | u32 function_mode; |
753 | u32 rsvd[26]; | 755 | u32 rsvd[26]; |
756 | u32 function_caps; | ||
757 | }; | ||
758 | |||
759 | /******************** RSS Config *******************/ | ||
760 | /* RSS types */ | ||
761 | #define RSS_ENABLE_NONE 0x0 | ||
762 | #define RSS_ENABLE_IPV4 0x1 | ||
763 | #define RSS_ENABLE_TCP_IPV4 0x2 | ||
764 | #define RSS_ENABLE_IPV6 0x4 | ||
765 | #define RSS_ENABLE_TCP_IPV6 0x8 | ||
766 | |||
767 | struct be_cmd_req_rss_config { | ||
768 | struct be_cmd_req_hdr hdr; | ||
769 | u32 if_id; | ||
770 | u16 enable_rss; | ||
771 | u16 cpu_table_size_log2; | ||
772 | u32 hash[10]; | ||
773 | u8 cpu_table[128]; | ||
774 | u8 flush; | ||
775 | u8 rsvd0[3]; | ||
754 | }; | 776 | }; |
755 | 777 | ||
756 | /******************** Port Beacon ***************************/ | 778 | /******************** Port Beacon ***************************/ |
@@ -937,7 +959,7 @@ extern int be_cmd_txq_create(struct be_adapter *adapter, | |||
937 | extern int be_cmd_rxq_create(struct be_adapter *adapter, | 959 | extern int be_cmd_rxq_create(struct be_adapter *adapter, |
938 | struct be_queue_info *rxq, u16 cq_id, | 960 | struct be_queue_info *rxq, u16 cq_id, |
939 | u16 frag_size, u16 max_frame_size, u32 if_id, | 961 | u16 frag_size, u16 max_frame_size, u32 if_id, |
940 | u32 rss); | 962 | u32 rss, u8 *rss_id); |
941 | extern int be_cmd_q_destroy(struct be_adapter *adapter, struct be_queue_info *q, | 963 | extern int be_cmd_q_destroy(struct be_adapter *adapter, struct be_queue_info *q, |
942 | int type); | 964 | int type); |
943 | extern int be_cmd_link_status_query(struct be_adapter *adapter, | 965 | extern int be_cmd_link_status_query(struct be_adapter *adapter, |
@@ -960,8 +982,10 @@ extern int be_cmd_set_flow_control(struct be_adapter *adapter, | |||
960 | extern int be_cmd_get_flow_control(struct be_adapter *adapter, | 982 | extern int be_cmd_get_flow_control(struct be_adapter *adapter, |
961 | u32 *tx_fc, u32 *rx_fc); | 983 | u32 *tx_fc, u32 *rx_fc); |
962 | extern int be_cmd_query_fw_cfg(struct be_adapter *adapter, | 984 | extern int be_cmd_query_fw_cfg(struct be_adapter *adapter, |
963 | u32 *port_num, u32 *cap); | 985 | u32 *port_num, u32 *function_mode, u32 *function_caps); |
964 | extern int be_cmd_reset_function(struct be_adapter *adapter); | 986 | extern int be_cmd_reset_function(struct be_adapter *adapter); |
987 | extern int be_cmd_rss_config(struct be_adapter *adapter, u8 *rsstable, | ||
988 | u16 table_size); | ||
965 | extern int be_process_mcc(struct be_adapter *adapter, int *status); | 989 | extern int be_process_mcc(struct be_adapter *adapter, int *status); |
966 | extern int be_cmd_set_beacon_state(struct be_adapter *adapter, | 990 | extern int be_cmd_set_beacon_state(struct be_adapter *adapter, |
967 | u8 port_num, u8 beacon, u8 status, u8 state); | 991 | u8 port_num, u8 beacon, u8 status, u8 state); |