diff options
author | Anjali Singhai Jain <anjali.singhai@intel.com> | 2014-05-22 02:32:17 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2014-06-11 11:48:33 -0400 |
commit | 433c47de1368cf07a7cb8d9148a4d36d824b89f8 (patch) | |
tree | fb2b81368207d7e860f6a6776e4de9d6b588e196 /drivers/net | |
parent | 2c50ef80470ab29bc4a8b1adc706fe8773f99875 (diff) |
i40e/i40evf: Add Flow director stats to PF stats
Add members to stat struct to keep track of Flow director ATR and
SideBand filter packet matches.
Change-ID: Ibbb31a53c7adcc2bb96991dd80565442a2f2513c
Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e.h | 13 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 5 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 12 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_txrx.c | 7 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_type.h | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/i40evf/i40e_type.h | 3 |
6 files changed, 41 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h index 5a8bbaafe500..65985846345d 100644 --- a/drivers/net/ethernet/intel/i40e/i40e.h +++ b/drivers/net/ethernet/intel/i40e/i40e.h | |||
@@ -154,6 +154,17 @@ struct i40e_lump_tracking { | |||
154 | #define I40E_FDIR_BUFFER_FULL_MARGIN 10 | 154 | #define I40E_FDIR_BUFFER_FULL_MARGIN 10 |
155 | #define I40E_FDIR_BUFFER_HEAD_ROOM 200 | 155 | #define I40E_FDIR_BUFFER_HEAD_ROOM 200 |
156 | 156 | ||
157 | enum i40e_fd_stat_idx { | ||
158 | I40E_FD_STAT_ATR, | ||
159 | I40E_FD_STAT_SB, | ||
160 | I40E_FD_STAT_PF_COUNT | ||
161 | }; | ||
162 | #define I40E_FD_STAT_PF_IDX(pf_id) ((pf_id) * I40E_FD_STAT_PF_COUNT) | ||
163 | #define I40E_FD_ATR_STAT_IDX(pf_id) \ | ||
164 | (I40E_FD_STAT_PF_IDX(pf_id) + I40E_FD_STAT_ATR) | ||
165 | #define I40E_FD_SB_STAT_IDX(pf_id) \ | ||
166 | (I40E_FD_STAT_PF_IDX(pf_id) + I40E_FD_STAT_SB) | ||
167 | |||
157 | struct i40e_fdir_filter { | 168 | struct i40e_fdir_filter { |
158 | struct hlist_node fdir_node; | 169 | struct hlist_node fdir_node; |
159 | /* filter ipnut set */ | 170 | /* filter ipnut set */ |
@@ -223,6 +234,8 @@ struct i40e_pf { | |||
223 | 234 | ||
224 | struct hlist_head fdir_filter_list; | 235 | struct hlist_head fdir_filter_list; |
225 | u16 fdir_pf_active_filters; | 236 | u16 fdir_pf_active_filters; |
237 | u16 fd_sb_cnt_idx; | ||
238 | u16 fd_atr_cnt_idx; | ||
226 | 239 | ||
227 | #ifdef CONFIG_I40E_VXLAN | 240 | #ifdef CONFIG_I40E_VXLAN |
228 | __be16 vxlan_ports[I40E_MAX_PF_UDP_OFFLOAD_PORTS]; | 241 | __be16 vxlan_ports[I40E_MAX_PF_UDP_OFFLOAD_PORTS]; |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c index c7718631ed02..e33016620e28 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c | |||
@@ -145,6 +145,9 @@ static struct i40e_stats i40e_gstrings_stats[] = { | |||
145 | I40E_PF_STAT("rx_jabber", stats.rx_jabber), | 145 | I40E_PF_STAT("rx_jabber", stats.rx_jabber), |
146 | I40E_PF_STAT("VF_admin_queue_requests", vf_aq_requests), | 146 | I40E_PF_STAT("VF_admin_queue_requests", vf_aq_requests), |
147 | I40E_PF_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared), | 147 | I40E_PF_STAT("rx_hwtstamp_cleared", rx_hwtstamp_cleared), |
148 | I40E_PF_STAT("fdir_atr_match", stats.fd_atr_match), | ||
149 | I40E_PF_STAT("fdir_sb_match", stats.fd_sb_match), | ||
150 | |||
148 | /* LPI stats */ | 151 | /* LPI stats */ |
149 | I40E_PF_STAT("tx_lpi_status", stats.tx_lpi_status), | 152 | I40E_PF_STAT("tx_lpi_status", stats.tx_lpi_status), |
150 | I40E_PF_STAT("rx_lpi_status", stats.rx_lpi_status), | 153 | I40E_PF_STAT("rx_lpi_status", stats.rx_lpi_status), |
@@ -1581,7 +1584,7 @@ static int i40e_add_fdir_ethtool(struct i40e_vsi *vsi, | |||
1581 | input->pctype = 0; | 1584 | input->pctype = 0; |
1582 | input->dest_vsi = vsi->id; | 1585 | input->dest_vsi = vsi->id; |
1583 | input->fd_status = I40E_FILTER_PROGRAM_DESC_FD_STATUS_FD_ID; | 1586 | input->fd_status = I40E_FILTER_PROGRAM_DESC_FD_STATUS_FD_ID; |
1584 | input->cnt_index = 0; | 1587 | input->cnt_index = pf->fd_sb_cnt_idx; |
1585 | input->flow_type = fsp->flow_type; | 1588 | input->flow_type = fsp->flow_type; |
1586 | input->ip4_proto = fsp->h_u.usr_ip4_spec.proto; | 1589 | input->ip4_proto = fsp->h_u.usr_ip4_spec.proto; |
1587 | 1590 | ||
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index e3916d00d403..06e0a5226ce1 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
@@ -1013,6 +1013,14 @@ static void i40e_update_pf_stats(struct i40e_pf *pf) | |||
1013 | pf->stat_offsets_loaded, | 1013 | pf->stat_offsets_loaded, |
1014 | &osd->rx_jabber, &nsd->rx_jabber); | 1014 | &osd->rx_jabber, &nsd->rx_jabber); |
1015 | 1015 | ||
1016 | /* FDIR stats */ | ||
1017 | i40e_stat_update32(hw, I40E_GLQF_PCNT(pf->fd_atr_cnt_idx), | ||
1018 | pf->stat_offsets_loaded, | ||
1019 | &osd->fd_atr_match, &nsd->fd_atr_match); | ||
1020 | i40e_stat_update32(hw, I40E_GLQF_PCNT(pf->fd_sb_cnt_idx), | ||
1021 | pf->stat_offsets_loaded, | ||
1022 | &osd->fd_sb_match, &nsd->fd_sb_match); | ||
1023 | |||
1016 | val = rd32(hw, I40E_PRTPM_EEE_STAT); | 1024 | val = rd32(hw, I40E_PRTPM_EEE_STAT); |
1017 | nsd->tx_lpi_status = | 1025 | nsd->tx_lpi_status = |
1018 | (val & I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_MASK) >> | 1026 | (val & I40E_PRTPM_EEE_STAT_TX_LPI_STATUS_MASK) >> |
@@ -6604,8 +6612,12 @@ static int i40e_sw_init(struct i40e_pf *pf) | |||
6604 | (pf->hw.func_caps.fd_filters_best_effort > 0)) { | 6612 | (pf->hw.func_caps.fd_filters_best_effort > 0)) { |
6605 | pf->flags |= I40E_FLAG_FD_ATR_ENABLED; | 6613 | pf->flags |= I40E_FLAG_FD_ATR_ENABLED; |
6606 | pf->atr_sample_rate = I40E_DEFAULT_ATR_SAMPLE_RATE; | 6614 | pf->atr_sample_rate = I40E_DEFAULT_ATR_SAMPLE_RATE; |
6615 | /* Setup a counter for fd_atr per pf */ | ||
6616 | pf->fd_atr_cnt_idx = I40E_FD_ATR_STAT_IDX(pf->hw.pf_id); | ||
6607 | if (!(pf->flags & I40E_FLAG_MFP_ENABLED)) { | 6617 | if (!(pf->flags & I40E_FLAG_MFP_ENABLED)) { |
6608 | pf->flags |= I40E_FLAG_FD_SB_ENABLED; | 6618 | pf->flags |= I40E_FLAG_FD_SB_ENABLED; |
6619 | /* Setup a counter for fd_sb per pf */ | ||
6620 | pf->fd_sb_cnt_idx = I40E_FD_SB_STAT_IDX(pf->hw.pf_id); | ||
6609 | } else { | 6621 | } else { |
6610 | dev_info(&pf->pdev->dev, | 6622 | dev_info(&pf->pdev->dev, |
6611 | "Flow Director Sideband mode Disabled in MFP mode\n"); | 6623 | "Flow Director Sideband mode Disabled in MFP mode\n"); |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index d84f4275f470..e49f31dbd5d8 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c | |||
@@ -121,7 +121,7 @@ int i40e_program_fdir_filter(struct i40e_fdir_filter *fdir_data, u8 *raw_packet, | |||
121 | dcc |= I40E_TXD_FLTR_QW1_CNT_ENA_MASK; | 121 | dcc |= I40E_TXD_FLTR_QW1_CNT_ENA_MASK; |
122 | dcc |= ((u32)fdir_data->cnt_index << | 122 | dcc |= ((u32)fdir_data->cnt_index << |
123 | I40E_TXD_FLTR_QW1_CNTINDEX_SHIFT) & | 123 | I40E_TXD_FLTR_QW1_CNTINDEX_SHIFT) & |
124 | I40E_TXD_FLTR_QW1_CNTINDEX_MASK; | 124 | I40E_TXD_FLTR_QW1_CNTINDEX_MASK; |
125 | } | 125 | } |
126 | 126 | ||
127 | fdir_desc->dtype_cmd_cntindex = cpu_to_le32(dcc); | 127 | fdir_desc->dtype_cmd_cntindex = cpu_to_le32(dcc); |
@@ -1695,6 +1695,11 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb, | |||
1695 | dtype_cmd |= I40E_FILTER_PROGRAM_DESC_FD_STATUS_FD_ID << | 1695 | dtype_cmd |= I40E_FILTER_PROGRAM_DESC_FD_STATUS_FD_ID << |
1696 | I40E_TXD_FLTR_QW1_FD_STATUS_SHIFT; | 1696 | I40E_TXD_FLTR_QW1_FD_STATUS_SHIFT; |
1697 | 1697 | ||
1698 | dtype_cmd |= I40E_TXD_FLTR_QW1_CNT_ENA_MASK; | ||
1699 | dtype_cmd |= | ||
1700 | ((u32)pf->fd_atr_cnt_idx << I40E_TXD_FLTR_QW1_CNTINDEX_SHIFT) & | ||
1701 | I40E_TXD_FLTR_QW1_CNTINDEX_MASK; | ||
1702 | |||
1698 | fdir_desc->qindex_flex_ptype_vsi = cpu_to_le32(flex_ptype); | 1703 | fdir_desc->qindex_flex_ptype_vsi = cpu_to_le32(flex_ptype); |
1699 | fdir_desc->dtype_cmd_cntindex = cpu_to_le32(dtype_cmd); | 1704 | fdir_desc->dtype_cmd_cntindex = cpu_to_le32(dtype_cmd); |
1700 | } | 1705 | } |
diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h index bb5b05503e56..9d39ff23c5fb 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_type.h +++ b/drivers/net/ethernet/intel/i40e/i40e_type.h | |||
@@ -1023,6 +1023,9 @@ struct i40e_hw_port_stats { | |||
1023 | u64 tx_size_big; /* ptc9522 */ | 1023 | u64 tx_size_big; /* ptc9522 */ |
1024 | u64 mac_short_packet_dropped; /* mspdc */ | 1024 | u64 mac_short_packet_dropped; /* mspdc */ |
1025 | u64 checksum_error; /* xec */ | 1025 | u64 checksum_error; /* xec */ |
1026 | /* flow director stats */ | ||
1027 | u64 fd_atr_match; | ||
1028 | u64 fd_sb_match; | ||
1026 | /* EEE LPI */ | 1029 | /* EEE LPI */ |
1027 | u32 tx_lpi_status; | 1030 | u32 tx_lpi_status; |
1028 | u32 rx_lpi_status; | 1031 | u32 rx_lpi_status; |
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_type.h b/drivers/net/ethernet/intel/i40evf/i40e_type.h index 92fae7387708..d3cf5a69de54 100644 --- a/drivers/net/ethernet/intel/i40evf/i40e_type.h +++ b/drivers/net/ethernet/intel/i40evf/i40e_type.h | |||
@@ -1023,6 +1023,9 @@ struct i40e_hw_port_stats { | |||
1023 | u64 tx_size_big; /* ptc9522 */ | 1023 | u64 tx_size_big; /* ptc9522 */ |
1024 | u64 mac_short_packet_dropped; /* mspdc */ | 1024 | u64 mac_short_packet_dropped; /* mspdc */ |
1025 | u64 checksum_error; /* xec */ | 1025 | u64 checksum_error; /* xec */ |
1026 | /* flow director stats */ | ||
1027 | u64 fd_atr_match; | ||
1028 | u64 fd_sb_match; | ||
1026 | /* EEE LPI */ | 1029 | /* EEE LPI */ |
1027 | u32 tx_lpi_status; | 1030 | u32 tx_lpi_status; |
1028 | u32 rx_lpi_status; | 1031 | u32 rx_lpi_status; |