Ramachandra K wrote:

> +void vnic_connected(struct vnic *vnic, struct netpath *netpath)
> +{
> +     VNIC_FUNCTION("vnic_connected()\n");
> +     if (netpath->second_bias)
> +             vnic_npevent_queue_evt(netpath, VNIC_SECNP_CONNECTED);
> +     else
> +             vnic_npevent_queue_evt(netpath, VNIC_PRINP_CONNECTED);
> +
> +     vnic_connected_stats(vnic);
> +}

This driver looks rather like it's duplicating at least some of the 
functionality provided by the bonding driver.  Could you explain the 
differences between the two approaches, please?

> +void vnic_stop_xmit(struct vnic *vnic, struct netpath *netpath)
> +{
> +     VNIC_FUNCTION("vnic_stop_xmit()\n");
> +     if (netpath == vnic->current_path) {
> +             if (vnic->xmit_started) {
> +                     netif_stop_queue(&vnic->netdevice);
> +                     vnic->xmit_started = 0;
> +             }
> +
> +             vnic_stop_xmit_stats(vnic);
> +     }
> +}

Why is there an asymmetry between some of the routines, which will 
operate on either netpath depending on the bias setting, and others like 
this, which only operate on the current netpath and silently do nothing 
otherwise?  This is at least confusing.

> +static struct vnic * vnic_handle_npevent(struct vnic *vnic,
> +                                      enum vnic_npevent_type npevt_type)
> +{
> +     struct netpath  *netpath;
> +
> +     VNIC_INFO("%s: processing %s, netpath=%s, carrier=%d\n",
> +               vnic->config->name, vnic_npevent_str[npevt_type],
> +               netpath_to_string(vnic, vnic->current_path),
> +               vnic->carrier);
> +
> +     switch (npevt_type) {
> +     case VNIC_PRINP_CONNECTED:

I still don't understand this business of queueing events in the normal 
net driver entry points, then redispatching them in this big switch 
statement.  Could you at least add a comment to the code that indicates 
why you're doing this?  This structure makes the driver harder to follow 
without providing any obvious benefits.

        <b

_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to