> -----Original Message-----
> From: Loftus, Ciara <[email protected]>
> Sent: 10 June 2026 15:13
> To: Mandal, Anurag <[email protected]>; [email protected]
> Cc: Richardson, Bruce <[email protected]>; Medvedkin, Vladimir
> <[email protected]>; [email protected]
> Subject: RE: [PATCH v2] net/iavf: fix to consolidate link change event 
> handling
> 
> > Subject: [PATCH v2] net/iavf: fix to consolidate link change event
> > handling
> >
> 
> [snip]
> 
> > +
> >  /* Read data in admin queue to get msg from pf driver */  static enum
> > iavf_aq_result  iavf_read_msg_from_pf(struct iavf_adapter *adapter,
> > uint16_t buf_len, @@ -249,38 +310,15 @@ iavf_read_msg_from_pf(struct
> > iavf_adapter *adapter, uint16_t buf_len,
> >     if (opcode == VIRTCHNL_OP_EVENT) {
> >             struct virtchnl_pf_event *vpe =
> >                     (struct virtchnl_pf_event *)event.msg_buf;
> > +           if (vpe == NULL) {
> > +                   PMD_DRV_LOG(ERR, "Invalid PF event message");
> > +                   return IAVF_MSG_ERR;
> > +           }
> 
> This check can be removed.
> iavf_read_msg_from_pf is called from iavf_wait_for_msg which performs a
> NULL check on the same location (args->out_buffer) before passing it to
> iavf_read_msg_from_pf
> 
> >
> >             result = IAVF_MSG_SYS;
> >             switch (vpe->event) {
> >             case VIRTCHNL_EVENT_LINK_CHANGE:
> > -                   vf->link_up =
> > -                           vpe->event_data.link_event.link_status;
> > -                   if (vf->vf_res != NULL &&
> > -                       vf->vf_res->vf_cap_flags &
> > VIRTCHNL_VF_CAP_ADV_LINK_SPEED) {
> > -                           vf->link_speed =
> > -                               vpe-
> > >event_data.link_event_adv.link_speed;
> > -                   } else {
> > -                           enum virtchnl_link_speed speed;
> > -                           speed = vpe-
> > >event_data.link_event.link_speed;
> > -                           vf->link_speed =
> > iavf_convert_link_speed(speed);
> > -                   }
> > -                   iavf_dev_link_update(vf->eth_dev, 0);
> > -                   iavf_dev_event_post(vf->eth_dev,
> > RTE_ETH_EVENT_INTR_LSC, NULL, 0);
> > -                   if (vf->link_up && !vf->vf_reset) {
> > -                           iavf_dev_watchdog_disable(adapter);
> > -                   } else {
> > -                           if (!vf->link_up)
> > -                                   iavf_dev_watchdog_enable(adapter);
> > -                   }
> > -                   if (adapter->devargs.no_poll_on_link_down) {
> > -                           iavf_set_no_poll(adapter, true);
> > -                           if (adapter->no_poll)
> > -                                   PMD_DRV_LOG(DEBUG, "VF no poll
> > turned on");
> > -                           else
> > -                                   PMD_DRV_LOG(DEBUG, "VF no poll
> > turned off");
> > -                   }
> > -                   PMD_DRV_LOG(INFO, "Link status update:%s",
> > -                                   vf->link_up ? "up" : "down");
> > +                   iavf_handle_link_change_event(vf->eth_dev, vpe);
> >                     break;
> >             case VIRTCHNL_EVENT_RESET_IMPENDING:
> >                     vf->vf_reset = true;
> > @@ -505,6 +543,12 @@ iavf_handle_pf_event_msg(struct rte_eth_dev *dev,
> > uint8_t *msg,
> >             PMD_DRV_LOG(DEBUG, "Error event");
> >             return;
> >     }
> > +
> > +   if (pf_msg == NULL) {
> > +           PMD_DRV_LOG(ERR, "Invalid PF event message");
> > +           return;
> > +   }
> 
> This too can be removed.
> pf_msg resolves to vf->aq_resp which is a fixed buffer allocated at driver 
> init
> time. It cannot be NULL here.
> 
> With those two changes I think the patch will be good to go.
> 
> > +
> >     switch (pf_msg->event) {
> >     case VIRTCHNL_EVENT_RESET_IMPENDING:
> >             PMD_DRV_LOG(DEBUG,
> > "VIRTCHNL_EVENT_RESET_IMPENDING event"); @@ -518,30 +562,7 @@
> > iavf_handle_pf_event_msg(struct rte_eth_dev *dev, uint8_t *msg,
> >             break;
> >     case VIRTCHNL_EVENT_LINK_CHANGE:
> >             PMD_DRV_LOG(DEBUG, "VIRTCHNL_EVENT_LINK_CHANGE
> event");
> > -           vf->link_up = pf_msg->event_data.link_event.link_status;
> > -           if (vf->vf_res->vf_cap_flags &
> > VIRTCHNL_VF_CAP_ADV_LINK_SPEED) {
> > -                   vf->link_speed =
> > -                           pf_msg-
> > >event_data.link_event_adv.link_speed;
> > -           } else {
> > -                   enum virtchnl_link_speed speed;
> > -                   speed = pf_msg->event_data.link_event.link_speed;
> > -                   vf->link_speed = iavf_convert_link_speed(speed);
> > -           }
> > -           iavf_dev_link_update(dev, 0);
> > -           if (vf->link_up && !vf->vf_reset) {
> > -                   iavf_dev_watchdog_disable(adapter);
> > -           } else {
> > -                   if (!vf->link_up)
> > -                           iavf_dev_watchdog_enable(adapter);
> > -           }
> > -           if (adapter->devargs.no_poll_on_link_down) {
> > -                   iavf_set_no_poll(adapter, true);
> > -                   if (adapter->no_poll)
> > -                           PMD_DRV_LOG(DEBUG, "VF no poll turned
> > on");
> > -                   else
> > -                           PMD_DRV_LOG(DEBUG, "VF no poll turned
> > off");
> > -           }
> > -           iavf_dev_event_post(dev, RTE_ETH_EVENT_INTR_LSC, NULL,
> > 0);
> > +           iavf_handle_link_change_event(dev, pf_msg);
> >             break;
> >     case VIRTCHNL_EVENT_PF_DRIVER_CLOSE:
> >             PMD_DRV_LOG(DEBUG,
> > "VIRTCHNL_EVENT_PF_DRIVER_CLOSE event");
> > --
> > 2.34.1

Hi Ciara,

Thank you for the review. Removed those two unwarranted NULL checks.
Sent v3. Please check.

Thanks, 
Anurag

Reply via email to