.. | .. |
---|
1137 | 1137 | static void ice_aq_check_events(struct ice_pf *pf, u16 opcode, |
---|
1138 | 1138 | struct ice_rq_event_info *event) |
---|
1139 | 1139 | { |
---|
| 1140 | + struct ice_rq_event_info *task_ev; |
---|
1140 | 1141 | struct ice_aq_task *task; |
---|
1141 | 1142 | bool found = false; |
---|
1142 | 1143 | |
---|
.. | .. |
---|
1145 | 1146 | if (task->state || task->opcode != opcode) |
---|
1146 | 1147 | continue; |
---|
1147 | 1148 | |
---|
1148 | | - memcpy(&task->event->desc, &event->desc, sizeof(event->desc)); |
---|
1149 | | - task->event->msg_len = event->msg_len; |
---|
| 1149 | + task_ev = task->event; |
---|
| 1150 | + memcpy(&task_ev->desc, &event->desc, sizeof(event->desc)); |
---|
| 1151 | + task_ev->msg_len = event->msg_len; |
---|
1150 | 1152 | |
---|
1151 | 1153 | /* Only copy the data buffer if a destination was set */ |
---|
1152 | | - if (task->event->msg_buf && |
---|
1153 | | - task->event->buf_len > event->buf_len) { |
---|
1154 | | - memcpy(task->event->msg_buf, event->msg_buf, |
---|
| 1154 | + if (task_ev->msg_buf && task_ev->buf_len >= event->buf_len) { |
---|
| 1155 | + memcpy(task_ev->msg_buf, event->msg_buf, |
---|
1155 | 1156 | event->buf_len); |
---|
1156 | | - task->event->buf_len = event->buf_len; |
---|
| 1157 | + task_ev->buf_len = event->buf_len; |
---|
1157 | 1158 | } |
---|
1158 | 1159 | |
---|
1159 | 1160 | task->state = ICE_AQ_TASK_COMPLETE; |
---|
.. | .. |
---|
4853 | 4854 | pr_info("%s\n", ice_driver_string); |
---|
4854 | 4855 | pr_info("%s\n", ice_copyright); |
---|
4855 | 4856 | |
---|
4856 | | - ice_wq = alloc_workqueue("%s", WQ_MEM_RECLAIM, 0, KBUILD_MODNAME); |
---|
| 4857 | + ice_wq = alloc_workqueue("%s", 0, 0, KBUILD_MODNAME); |
---|
4857 | 4858 | if (!ice_wq) { |
---|
4858 | 4859 | pr_err("Failed to create workqueue\n"); |
---|
4859 | 4860 | return -ENOMEM; |
---|
.. | .. |
---|
5200 | 5201 | { |
---|
5201 | 5202 | int err; |
---|
5202 | 5203 | |
---|
5203 | | - if (vsi->netdev) { |
---|
| 5204 | + if (vsi->netdev && vsi->type == ICE_VSI_PF) { |
---|
5204 | 5205 | ice_set_rx_mode(vsi->netdev); |
---|
5205 | 5206 | |
---|
5206 | | - if (vsi->type != ICE_VSI_LB) { |
---|
5207 | | - err = ice_vsi_vlan_setup(vsi); |
---|
5208 | | - |
---|
5209 | | - if (err) |
---|
5210 | | - return err; |
---|
5211 | | - } |
---|
| 5207 | + err = ice_vsi_vlan_setup(vsi); |
---|
| 5208 | + if (err) |
---|
| 5209 | + return err; |
---|
5212 | 5210 | } |
---|
5213 | 5211 | ice_vsi_cfg_dcb_rings(vsi); |
---|
5214 | 5212 | |
---|
.. | .. |
---|
5267 | 5265 | |
---|
5268 | 5266 | if (vsi->port_info && |
---|
5269 | 5267 | (vsi->port_info->phy.link_info.link_info & ICE_AQ_LINK_UP) && |
---|
5270 | | - vsi->netdev) { |
---|
| 5268 | + vsi->netdev && vsi->type == ICE_VSI_PF) { |
---|
5271 | 5269 | ice_print_link_msg(vsi, true); |
---|
5272 | 5270 | netif_tx_start_all_queues(vsi->netdev); |
---|
5273 | 5271 | netif_carrier_on(vsi->netdev); |
---|
.. | .. |
---|
5277 | 5275 | * set the baseline so counters are ready when interface is up |
---|
5278 | 5276 | */ |
---|
5279 | 5277 | ice_update_eth_stats(vsi); |
---|
5280 | | - ice_service_task_schedule(pf); |
---|
| 5278 | + |
---|
| 5279 | + if (vsi->type == ICE_VSI_PF) |
---|
| 5280 | + ice_service_task_schedule(pf); |
---|
5281 | 5281 | |
---|
5282 | 5282 | return 0; |
---|
5283 | 5283 | } |
---|