Commit e05620073625935290120be93a6214b1b52ae34f
Committed by
James Bottomley
1 parent
b277d2aa9a
Exists in
master
and in
7 other branches
[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 | /** |