|
@@ -1430,84 +1430,6 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
|
|
|
buff = NULL;
|
|
|
kfree(desc);
|
|
|
desc = NULL;
|
|
|
- } else if ((strncmp(cmd_buf, "add fd_filter", 13) == 0) ||
|
|
|
- (strncmp(cmd_buf, "rem fd_filter", 13) == 0)) {
|
|
|
- struct i40e_fdir_filter fd_data;
|
|
|
- u16 packet_len, i, j = 0;
|
|
|
- char *asc_packet;
|
|
|
- u8 *raw_packet;
|
|
|
- bool add = false;
|
|
|
- int ret;
|
|
|
-
|
|
|
- if (!(pf->flags & I40E_FLAG_FD_SB_ENABLED))
|
|
|
- goto command_write_done;
|
|
|
-
|
|
|
- if (strncmp(cmd_buf, "add", 3) == 0)
|
|
|
- add = true;
|
|
|
-
|
|
|
- if (add && (pf->auto_disable_flags & I40E_FLAG_FD_SB_ENABLED))
|
|
|
- goto command_write_done;
|
|
|
-
|
|
|
- asc_packet = kzalloc(I40E_FDIR_MAX_RAW_PACKET_SIZE,
|
|
|
- GFP_KERNEL);
|
|
|
- if (!asc_packet)
|
|
|
- goto command_write_done;
|
|
|
-
|
|
|
- raw_packet = kzalloc(I40E_FDIR_MAX_RAW_PACKET_SIZE,
|
|
|
- GFP_KERNEL);
|
|
|
-
|
|
|
- if (!raw_packet) {
|
|
|
- kfree(asc_packet);
|
|
|
- asc_packet = NULL;
|
|
|
- goto command_write_done;
|
|
|
- }
|
|
|
-
|
|
|
- cnt = sscanf(&cmd_buf[13],
|
|
|
- "%hx %2hhx %2hhx %hx %2hhx %2hhx %hx %x %hd %511s",
|
|
|
- &fd_data.q_index,
|
|
|
- &fd_data.flex_off, &fd_data.pctype,
|
|
|
- &fd_data.dest_vsi, &fd_data.dest_ctl,
|
|
|
- &fd_data.fd_status, &fd_data.cnt_index,
|
|
|
- &fd_data.fd_id, &packet_len, asc_packet);
|
|
|
- if (cnt != 10) {
|
|
|
- dev_info(&pf->pdev->dev,
|
|
|
- "program fd_filter: bad command string, cnt=%d\n",
|
|
|
- cnt);
|
|
|
- kfree(asc_packet);
|
|
|
- asc_packet = NULL;
|
|
|
- kfree(raw_packet);
|
|
|
- goto command_write_done;
|
|
|
- }
|
|
|
-
|
|
|
- /* fix packet length if user entered 0 */
|
|
|
- if (packet_len == 0)
|
|
|
- packet_len = I40E_FDIR_MAX_RAW_PACKET_SIZE;
|
|
|
-
|
|
|
- /* make sure to check the max as well */
|
|
|
- packet_len = min_t(u16,
|
|
|
- packet_len, I40E_FDIR_MAX_RAW_PACKET_SIZE);
|
|
|
-
|
|
|
- for (i = 0; i < packet_len; i++) {
|
|
|
- cnt = sscanf(&asc_packet[j], "%2hhx ", &raw_packet[i]);
|
|
|
- if (!cnt)
|
|
|
- break;
|
|
|
- j += 3;
|
|
|
- }
|
|
|
- dev_info(&pf->pdev->dev, "FD raw packet dump\n");
|
|
|
- print_hex_dump(KERN_INFO, "FD raw packet: ",
|
|
|
- DUMP_PREFIX_OFFSET, 16, 1,
|
|
|
- raw_packet, packet_len, true);
|
|
|
- ret = i40e_program_fdir_filter(&fd_data, raw_packet, pf, add);
|
|
|
- if (!ret) {
|
|
|
- dev_info(&pf->pdev->dev, "Filter command send Status : Success\n");
|
|
|
- } else {
|
|
|
- dev_info(&pf->pdev->dev,
|
|
|
- "Filter command send failed %d\n", ret);
|
|
|
- }
|
|
|
- kfree(raw_packet);
|
|
|
- raw_packet = NULL;
|
|
|
- kfree(asc_packet);
|
|
|
- asc_packet = NULL;
|
|
|
} else if (strncmp(cmd_buf, "fd current cnt", 14) == 0) {
|
|
|
dev_info(&pf->pdev->dev, "FD current total filter count for this interface: %d\n",
|
|
|
i40e_get_current_fd_count(pf));
|
|
@@ -1732,8 +1654,6 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
|
|
|
dev_info(&pf->pdev->dev, " globr\n");
|
|
|
dev_info(&pf->pdev->dev, " send aq_cmd <flags> <opcode> <datalen> <retval> <cookie_h> <cookie_l> <param0> <param1> <param2> <param3>\n");
|
|
|
dev_info(&pf->pdev->dev, " send indirect aq_cmd <flags> <opcode> <datalen> <retval> <cookie_h> <cookie_l> <param0> <param1> <param2> <param3> <buffer_len>\n");
|
|
|
- dev_info(&pf->pdev->dev, " add fd_filter <dest q_index> <flex_off> <pctype> <dest_vsi> <dest_ctl> <fd_status> <cnt_index> <fd_id> <packet_len> <packet>\n");
|
|
|
- dev_info(&pf->pdev->dev, " rem fd_filter <dest q_index> <flex_off> <pctype> <dest_vsi> <dest_ctl> <fd_status> <cnt_index> <fd_id> <packet_len> <packet>\n");
|
|
|
dev_info(&pf->pdev->dev, " fd current cnt");
|
|
|
dev_info(&pf->pdev->dev, " lldp start\n");
|
|
|
dev_info(&pf->pdev->dev, " lldp stop\n");
|