Commit e05620073625935290120be93a6214b1b52ae34f

Authored by Yi Zou
Committed by James Bottomley
1 parent b277d2aa9a

[SCSI] fcoe: add support to FCoE offload support in fcoe_sw through net_device

This adds implementation of ddp_setup()/ddp_done() in fcoe_sw for its
fcoe_sw_libfc_fcn_templ.

Signed-off-by: Yi Zou <yi.zou@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>

Showing 1 changed file with 38 additions and 0 deletions Side-by-side Diff

drivers/scsi/fcoe/fcoe_sw.c
... ... @@ -373,8 +373,46 @@
373 373 return 0;
374 374 }
375 375  
  376 +/*
  377 + * fcoe_sw_ddp_setup - calls LLD's ddp_setup through net_device
  378 + * @lp: the corresponding fc_lport
  379 + * @xid: the exchange id for this ddp transfer
  380 + * @sgl: the scatterlist describing this transfer
  381 + * @sgc: number of sg items
  382 + *
  383 + * Returns : 0 no ddp
  384 + */
  385 +static int fcoe_sw_ddp_setup(struct fc_lport *lp, u16 xid,
  386 + struct scatterlist *sgl, unsigned int sgc)
  387 +{
  388 + struct net_device *n = fcoe_netdev(lp);
  389 +
  390 + if (n->netdev_ops && n->netdev_ops->ndo_fcoe_ddp_setup)
  391 + return n->netdev_ops->ndo_fcoe_ddp_setup(n, xid, sgl, sgc);
  392 +
  393 + return 0;
  394 +}
  395 +
  396 +/*
  397 + * fcoe_sw_ddp_done - calls LLD's ddp_done through net_device
  398 + * @lp: the corresponding fc_lport
  399 + * @xid: the exchange id for this ddp transfer
  400 + *
  401 + * Returns : the length of data that have been completed by ddp
  402 + */
  403 +static int fcoe_sw_ddp_done(struct fc_lport *lp, u16 xid)
  404 +{
  405 + struct net_device *n = fcoe_netdev(lp);
  406 +
  407 + if (n->netdev_ops && n->netdev_ops->ndo_fcoe_ddp_done)
  408 + return n->netdev_ops->ndo_fcoe_ddp_done(n, xid);
  409 + return 0;
  410 +}
  411 +
376 412 static struct libfc_function_template fcoe_sw_libfc_fcn_templ = {
377 413 .frame_send = fcoe_xmit,
  414 + .ddp_setup = fcoe_sw_ddp_setup,
  415 + .ddp_done = fcoe_sw_ddp_done,
378 416 };
379 417  
380 418 /**