Hi, See inline below.
On Thu, Nov 17, 2016 at 12:00 PM, Imre Vadász <ivad...@freebsd.org> wrote: > Author: ivadasz > Date: Thu Nov 17 20:00:20 2016 > New Revision: 308777 > URL: https://svnweb.freebsd.org/changeset/base/308777 > > Log: > [iwm] Sync iwm_nvm_read_chunk() function with Linux iwlwifi. > > This fixes an error handling detail in iwm_nvm_read_chunk(), where an > error response from the firmware for an NVM read shouldn't be fatal if > the offset was non-zero. > > Approved by: adrian (mentor) > Obtained from: DragonFlyBSD git > 250a1c33fca1725121fe499f9cebc90267d209f9 > Differential Revision: https://reviews.freebsd.org/D8542 > > Modified: > head/sys/dev/iwm/if_iwm.c > > Modified: head/sys/dev/iwm/if_iwm.c > ============================================================================== > --- head/sys/dev/iwm/if_iwm.c Thu Nov 17 19:38:30 2016 (r308776) > +++ head/sys/dev/iwm/if_iwm.c Thu Nov 17 20:00:20 2016 (r308777) > ... > @@ -1684,12 +1686,10 @@ iwm_nvm_read_chunk(struct iwm_softc *sc, > struct iwm_rx_packet *pkt; > struct iwm_host_cmd cmd = { > .id = IWM_NVM_ACCESS_CMD, > - .flags = IWM_CMD_SYNC | IWM_CMD_WANT_SKB | > - IWM_CMD_SEND_IN_RFKILL, > + .flags = IWM_CMD_WANT_SKB | IWM_CMD_SEND_IN_RFKILL, > .data = { &nvm_access_cmd, }, > }; > - int ret, offset_read; > - size_t bytes_read; > + int ret, bytes_read, offset_read; > uint8_t *resp_data; > > cmd.len[0] = sizeof(struct iwm_nvm_access_cmd); > @@ -1718,9 +1718,26 @@ iwm_nvm_read_chunk(struct iwm_softc *sc, > offset_read = le16toh(nvm_resp->offset); > resp_data = nvm_resp->data; > if (ret) { > - IWM_DPRINTF(sc, IWM_DEBUG_RESET, > - "NVM access command failed with status %d\n", ret); > - ret = EINVAL; > + if ((offset != 0) && > + (ret == IWM_READ_NVM_CHUNK_NOT_VALID_ADDRESS)) { Coverity reports that this is deadcode, because 'offset' is always zero at this point. Perhaps this should be 'offset_read' or 'nvm_access_cmd.offset'? CID 1366220. Best, Conrad > + /* > + * meaning of NOT_VALID_ADDRESS: > + * driver try to read chunk from address that is > + * multiple of 2K and got an error since addr is > empty. > + * meaning of (offset != 0): driver already > + * read valid data from another chunk so this case > + * is not an error. > + */ > + IWM_DPRINTF(sc, IWM_DEBUG_EEPROM | IWM_DEBUG_RESET, > + "NVM access command failed on offset 0x%x > since that section size is multiple 2K\n", > + offset); > + *len = 0; > + ret = 0; > + } else { > + IWM_DPRINTF(sc, IWM_DEBUG_EEPROM | IWM_DEBUG_RESET, > + "NVM access command failed with status > %d\n", ret); > + ret = EIO; > + } > goto exit; > } _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"